2016-04-07 3 views
2

Je suis en train de traduire mon site dans différentes langues, grâce à Yii::t() J'ai traduit tous les textes. Mais j'utilise de jolies URL et cela devrait les traduire pour une meilleure expérience utilisateur.Traduire règles d'url en Yii2

J'utilise le composant. J'ai essayé d'ajouter Yii::t() clés des règles, je peux les traduire, mais lorsque vous changez de langue ignore la traduction et Yii utilisent la règle d'origine.

Ceci est mon urlManager:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     ['pattern' => '<id:rss>', 'route' => 'rss/default/index', 'suffix' => '.xml'], 
     ['pattern' => '<id:rss>', 'route' => 'rss/default/index'], 
     ['pattern' => 'sitemap', 'route' => 'sitemap', 'suffix' => '.xml'], 
     '/' => 'site/index', 
     Yii::t('config main', '<site:(about|contact|login|logout|signup|policy|conditions|blog)>') => 'site/<site>', 
     Yii::t('config main', '<device:\w+>/compare-price') => 'items/compareprices', 
     Yii::t('config main', 'versus/<brand1:\w+>-<model1:[\w\-]+>-<brand2:\w+>-<model2:[\w\-]+>') => 'items/versus', 
     Yii::t('config main', 'versus/<brand1:\w+>-<model1:[\w\-]+>-<brand2:\w+>-<model2:[\w\-]+>-<brand3:\w+>-<model3:[\w\-]+>') => 'items/versus', 
     Yii::t('config main', 'versus/<brand1:\w+>-<model1:[\w\-]+>-<brand2:\w+>-<model2:[\w\-]+>-<brand3:\w+>-<model3:[\w\-]+>-<brand4:\w+>-<model4:[\w\-]+>') => 'items/versus', 
     Yii::t('config main', '<device: \w+>/advanced-search') => 'items/advancedsearch', 
    ], 
], 

Exemple:

domain.com/conditions sera domain.com/condiciones en espagnol

Comment dois-je mettre en œuvre l'internationalisation dans les urls?

+0

Vérifiez http://stackoverflow.com/questions/30620404/yii2-create-translated-urls –

+0

@ Stig-js La réponse à cette question n'est pas ce que j'essaie de faire, ils proposent de faire la différence la langue en ajoutant en/de/es/fr, je veux traduire l'url – Sageth

+0

J'ai répondu pour ma solution de travail sur: http://stackoverflow.com/questions/30620404/yii2-create-translated-urls/40776550 # 40776550 – nacesprin

Répondre

2

tout d'abord ce n'est pas une bonne décision, mais j'utilise cette approche pour le moment, alors que je suis en train de comprendre exactement le même problème:

J'utilise le composant codemix/yii2-localeurls pour la langue gestion & code de langue inséré dans l'URL.

'urlManager' => [ 
     'class' => 'codemix\localeurls\UrlManager', 
     'languages' => ['ru', 'en'], 
     'showScriptName' => false, 
     'enablePrettyUrl' => true, 
     'enableLanguageDetection' => true, 
     'rules' => array(
      'отдых-в-греции-цены|vacation-in-greece-prices' => 'site/prices', 
     ), 
    ], 

J'ai « отдых-в-греции-цены » dans les traductions et mon lien dans le site est comme:

<?= Html::a(Yii::t('app', 'Цены'), ['/'.Yii::t('app', 'отдых-в-греции-цены')]) ?> 

Comme je l'ai dit ce n'est pas une meilleure pratique, mais au moment d'une boîte » t trouver une meilleure approche. En outre, le site est très petit et je n'ai pas besoin de routes complexes comme la vôtre, mais je pense que cela peut être mis en œuvre.

Cordialement