[Yii2] traduzione delle URL

Ciao,

sto cercando di implementare delle regole per tradurre le url del mio sito.

Ho una estensione (https://github.com/codemix/yii2-localeurls) che infila il codice della lingua usata nella url ma questo parametro non è disponibile per creare ‘semplici’ regole nella configurazione urlManager tipo


'<language:it>/utenti'=>'users/index'

Seguendo un tutorial (http://blog.neattutorials.com/yii2-routing-urlmanager/) sono riuscito a scrivere questa classe





<?php


namespace common\components;


use Yii;

use yii\web\UrlRuleInterface;

use yii\base\Object;


class UrlLanguageRule extends Object implements UrlRuleInterface

{


    public function createUrl($manager, $route, $params)

    {

        if ( Yii::$app->language==='it-IT'){

            if ($route === 'users/index'){

                return 'utenti';

            }

        }

        return false;  // this rule does not apply

    }


    public function parseRequest($manager, $request)

    {

        if ( Yii::$app->language==='it-IT'){

            $url = $request->getPathInfo();

            if ($url === 'utenti'){

                $route = 'users/index';

                $params = [];

                return [$route, $params];

            }

        }

        return false;

    }

}




Ma mi pare un po’ contorta… nella prima funzione associo utenti a users/index e nella seconda associo users/index a utenti… mi pare strano, ma confesso che ho scritto capendo poco del vero funzionamento del tutto.

Inoltre vorrei un po’ generalizzarla, avendo già disponibili i nomi dei controller tradotti con Yii::$app->t(…)

Qualche suggerimento?

Grazie,

Nicola