Yii2国际化slu and和控制器

时间:2018-02-11 20:50:11

标签: yii2 internationalization yii2-advanced-app friendly-url

我正在使用yii的原生i18n模块制作2种语言的yii2网站(目前),但如何为操作网址添加多语言支持?

例如,我的一个操作是category/slug,而在英语中,它将显示为

http://example.com/category/chair

但是西班牙语必须显示为

http://example.com/categoria/silla

以及将来展示的其他语言

现在我手动添加我的路线,如:

    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '<alias:\w+>' => 'site/<alias>',
            'marca/<slug>' => 'site/brand',
            'categoria/<slug>' => 'site/category',
            'brand/<slug>' => 'site/brand',
            'category/<slug>' => 'site/category',
        ],
    ],

我是否需要手动将每个操作路由到正确的控制器,还是可以使用yii::t()功能添加更自动化的表单?

1 个答案:

答案 0 :(得分:1)

您需要编写自己的UrlRule课程,实施yii\web\UrlRuleInterface并配置UrlManager

read more here.

基本上是在您的UrlRule的“/categoria/silla”方法中将“['site/category', 'slug' => $slug, 'lang' => $lang]”等给定请求“翻译”到您的内部网址parseRequest。 “createUrl”是另一回事。