# URL routing for Localization

**URL:** <https://discourse.cakephp.org/t/url-routing-for-localization/309>\
**Category:** Need Help\
**Created:** [May 12, 2016, 12:17pm UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309 "2016-05-12T12:17:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![aavrug](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/aavrug/32/178_2.png) [@aavrug](https://discourse.cakephp.org/u/aavrug)\
**Post date:** [May 12, 2016, 12:17pm UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/1 "2016-05-12T12:17:49Z")

</div>

I am trying to make my application’s url like [www.example.org/home](http://www.example.org/home) where the default language is IT(Italian) and for English like [www.example.org/en/home](http://www.example.org/en/home) in CakePHP3. This is working fine with [www.example.org/it/home](http://www.example.org/it/home), but I want remove it since IT is default language. How can I get this to be done?

---

<div class="post-metadata">

**Author:** ![Salines](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/salines/32/3166_2.png) [@Salines](https://discourse.cakephp.org/u/Salines)\
**Post date:** [May 12, 2016, 12:28pm UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/2 "2016-05-12T12:28:21Z")

</div>

Something like this in your routes.php:

```
Router::scope('/en',['language' => 'en'], function ($routes) {
    //...
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
    $routes->fallbacks('InflectedRoute');
});

Router::scope('/', function ($routes) {
    //...
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->connect('/pagine/*', ['controller' => 'Pages', 'action' => 'display']);
    $routes->fallbacks('InflectedRoute');
});

```

In view create links like:

`echo $this->Html->link(__('Home), ['language' => I18n::locale(),'controller' => 'Pages', 'action' => 'display','home'], ['class' => 'navbar-brand', 'escape' => false]);`

---

<div class="post-metadata">

**Author:** ![aavrug](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/aavrug/32/178_2.png) [@aavrug](https://discourse.cakephp.org/u/aavrug)\
**Post date:** [May 12, 2016, 12:38pm UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/3 "2016-05-12T12:38:56Z")

</div>

That is working fine but the urls are not getting prefixed for foreign language. Like once I switched to en language the links are still [www.example.org/home](http://www.example.org/home) and it redirecting to Italian.

---

<div class="post-metadata">

**Author:** ![Salines](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/salines/32/3166_2.png) [@Salines](https://discourse.cakephp.org/u/Salines)\
**Post date:** [May 12, 2016, 12:56pm UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/4 "2016-05-12T12:56:32Z")

</div>

Create links like:

```
<?= $this->Html->link(__('Home), ['language' => I18n::locale(),'controller' => 'Pages', 'action' => 'display','home'], ['class' => 'navbar-brand', 'escape' => false]); ?>

```

But in general the correct approach is to use the language prefix in the multilingual website for all language, in your case also in Italian.

---

<div class="post-metadata">

**Author:** ![aavrug](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/aavrug/32/178_2.png) [@aavrug](https://discourse.cakephp.org/u/aavrug)\
**Post date:** [May 13, 2016, 3:33am UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/5 "2016-05-13T03:33:29Z")

</div>

I think I should follow the correct approach thanks 🙂

---

<div class="post-metadata">

**Author:** ![joris](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/joris/32/338_2.png) [@joris](https://discourse.cakephp.org/u/joris)\
**Post date:** [May 13, 2016, 11:53am UTC](https://discourse.cakephp.org/t/url-routing-for-localization/309/6 "2016-05-13T11:53:09Z")

</div>

You could also use I18nRoute from this plugin: [https://github.com/ADmad/cakephp-i18n#using-the-i18nroute](https://github.com/ADmad/cakephp-i18n#using-the-i18nroute)  
It does all of the magic for you.
