How to manage routes with Internationalization in CakePHP?

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/). Currently my routes are not working properly. I am a rookie with CakePHP so I did the below as per documentation :

Language selector :

<?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

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

$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.