翻译Yii2中的网址规则

时间:2016-04-07 07:46:27

标签: internationalization yii2

我试图将我的网站翻译成不同的语言,感谢Yii::t()我翻译了所有文字。但是我使用漂亮的网址,它应该翻译它们以获得更好的用户体验。

我正在使用该组件。由lajax translate-manager进行翻译

我试图添加规则的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/conditions将是domain.com/condiciones西班牙语

我如何在网址中实现国际化?

1 个答案:

答案 0 :(得分:2)

首先,这不是一个好的决定,但我现在正在使用这种方法,而我正试图找出完全相同的问题:

我正在使用组件codemix/yii2-localeurls进行语言管理&amp;语言代码插入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', 'отдых-в-греции-цены')]) ?>

正如我所说,这不是最佳做法,但目前还找不到更好的方法。此外,该网站非常小,我不需要像你这样的复杂路线,但我认为它可以实施。

此致