# How to manage routes with Internationalization in CakePHP?

**URL:** <https://discourse.cakephp.org/t/how-to-manage-routes-with-internationalization-in-cakephp/10034>\
**Category:** Need Help\
**Tags:** i18n, help\
**Created:** [December 28, 2021, 9:11am UTC](https://discourse.cakephp.org/t/how-to-manage-routes-with-internationalization-in-cakephp/10034 "2021-12-28T09:11:28Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![20cents](https://avatars.discourse-cdn.com/v4/letter/2/58956e/32.png) [@20cents](https://discourse.cakephp.org/u/20cents)\
**Post date:** [December 28, 2021, 9:11am UTC](https://discourse.cakephp.org/t/how-to-manage-routes-with-internationalization-in-cakephp/10034/1 "2021-12-28T09:11:28Z")

</div>

My website will manage two languages, French (default language) and Dutch. For the default language (French), I don’t need to show the language parameter in the URL, so I only want to display it for Dutch (eg. [myapp.com/nl/](http://myapp.com/nl/)). Currently my routes are not working properly. I am a rookie with CakePHP so I did the below as per documentation :

Language selector :

```auto
<?php if (!$this->request->getParam('lang')) : ?>
        <?= $this->Html->link('<i class="fas fa-globe"></i> Nederlands', ['lang' => 'nl'], ['class' => 'btn ms-lg-4 btn-primary btn-sm float-end float-lg-start mt-3 mt-lg-0', 'escape' => false]) ?>
<?php else : ?>
        <?= $this->Html->link('<i class="fas fa-globe"></i> Français', ['lang' => ''], ['class' => 'btn ms-lg-4 btn-primary btn-sm float-end float-lg-start mt-3 mt-lg-0', 'escape' => false]) ?>
<?php endif ?>

```

appController.php

```auto
public function beforeFilter(EventInterface $event) {
    # We check if we have a language set
    if ($this->request->getParam('lang')) {
        I18n::setLocale($this->request->getParam('lang'));
    } else {
        # If we don't have one, we will set the default one (in my case it's French)
        I18n::setLocale('fr');
    }
}

```

routes.php

```auto
$builder
    ->connect(
        '/',
        ['controller' => 'pages', 'action' => 'home']
    );

$builder
    ->connect(
        '{lang}/',
        ['controller' => 'pages', 'action' => 'home']
    )
    ->setPersist(['lang']);

$builder
    ->connect(
        '/{lang}/{controller}/{action}/*', 
        []
    )
    ->setPatterns([
        'lang' => '[a-z]{2}'
    ])
    ->setPersist(['lang']);

$builder
    ->connect(
        '/{lang}/{controller}/{action}/{id}', 
        []
    )
    ->setPatterns([
        'lang' => '[a-z]{2}',
        'id' => '\d+'
    ])
    ->setPersist(['lang'])
    ->setPass(['id']);

$builder
    ->connect(
        '/{lang}/{controller}/{action}/{slug}', 
        []
    )
    ->setPatterns([
        'lang' => '[a-z]{2}',
        'slug' => '[a-z0-9-_]+'
    ])
    ->setPersist(['lang'])
    ->setPass(['slug']);

```

Thanks for your help.
