2016-04-07 96 views
2

我試圖將我的網站翻譯成不同的語言,這要歸功於Yii::t()我翻譯了所有文本。但我正在使用漂亮的網址,它應該翻譯它們以獲得更好的用戶體驗。在Yii2中翻譯url規則

我正在使用該組件。 translate-manager lajax做翻譯

我試圖添加規則的Yii::t()鍵,我可以翻譯他們,但是當你改變語言忽略翻譯和Yii使用原來的規則。

這是我的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', 
    ], 
], 

例:

domain.com/conditionsdomain.com/condiciones西班牙語

如何我要實現在國際化的網址?

+0

檢查http://stackoverflow.com/questions/30620404/yii2-create-translated-urls –

+0

@斯蒂格 - JS的問題的答案是不是我嘗試做,他們提出來區分該語言通過添加en/de/es/fr,我想翻譯這個url – Sageth

+0

我已經回覆了我的工作解決方案:http://stackoverflow.com/questions/30620404/yii2-create-translated-urls/40776550 #40776550 – nacesprin

回答

2

所有這不是一個很好的決定,但我使用的時刻這種做法,而我試圖找出完全相同的問題首先:

我使用的組件codemix/yii2-localeurls語言在URL中插入管理&語言代碼。

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

我有「отдых - в-греции-цены」的翻譯和我在網站的鏈接是這樣的:

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

正如我說這不是最好的做法,但目前一罐」找到更好的方法。此外,該網站非常小,我不需要像您的那樣複雜的路線,但我認爲它可以實施。

問候