Yii2 国际化 slug 和控制器

Yii2 internationalizating slug and controller

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

例如我的一个动作是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() 函数添加更自动化的表单?

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

read more here.

基本上它是关于 "translating" 在您的 UrlRule 的“parseRequest”方法中对您的内部 url ['site/category', 'slug' => $slug, 'lang' => $lang] 的给定请求,例如“/categoria/silla”。 'createUrl'是反过来的。