Difference between #28 and #31 of
How to have truly multilingual URLs

Changes

Title unchanged

How to have truly multilingual URLs

Category unchanged

How-tos

Yii version changed

1.1

Tags changed

URL,multiliangual, ge,multilainguage, url, multilingual url, multilanguage url

Content changed

#Introduction  
------------------
We can easily have a multilingual site if we put a "lang" parameter that comes via GET. For example:
```php
<?php echo CHtml::link('TutorialDownloads', array('/site/tutorialdownloads', 'lang' => 'en')); echo CHtml::link('Tutoriales', array('/site/tutorials', 'lang' => 'es')); 
 
echo CHtml::link('Services', array('/site/services', 'lang' => 'en')); 
 
echo CHtml::link('Servicios', array('/site/service
Descargas', array('/site/downloads', 'lang' => 'es')); 
?>
```
[...]
Then, in Controller.php, we need to put this piece of code:


```php

public function beforeAction($action)
{
[...]
Finally we can add the following rules:


```php

'urlManager'=>array(
'urlFormat'=>'path',
[...]
```

#The problem  
-----------
This leads to URLs like these: - http://www.oligalma.com/en/tutorialdownloads  (English) - http://www.oligalma.com/es/tutorials  (Spanish)
 
- http://www.oligalma.com/en/services  (English)
 
- http://www.oligalma.com/es/services 
downloads (Spanish)
 
This is fine to have a multilingual site. But, we can go one step further. What if we want URLs like these: - http://www.oligalma.com/en/tutorialsdownloads (English) - http://www.oligalma.com/es/tutoriales(Spanish)
 
- http://www.oligalma.com/en/services(English)
 
- http://www.oligalma.com/es/servicios
descargas (Spanish) That is, every URL has its particular path. It changes the whole URL, not just the two initial letters (en/es). #The solution ------------  
```php

'urlManager'=>array(
'matchValue'=>true,
[...]
'showScriptName'=>false,
'rules'=>array(
        '<lang:\w+>'=>'site/index',             '<lang:esn>/tutorialedownloads'=> 'site/tutorials',
 
           '<lang:en>/tutorials'=> 'site/tutorials',
 
           '<lang:es>/servicios'=> 'site/services',
 
           '<lang:en>/services'=> 'site/services',
 
       
downloads',
 
'<lang:es>/descargas'=> 'site/downloads',
 
'<lang:\w+>/<action>' => 'site/<action>',
)
),
```

(Take note that we also added **'matchValue' => true** to the urlManager array.)
[...]
0 0
3 followers
Viewed: 17 064 times
Version: 1.1
Category: How-tos
Written by: oligalma
Last updated by: oligalma
Created on: Sep 29, 2015
Last updated: 2 years ago
Update Article

Revisions

View all history