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