有没有办法转换路线? 例如:
domain.com/catalog/products // english
domain.com/catalogo/productos // portuguese
两个不同的路由,但调用相同的Plugin / Controller / Action /
我尝试像这样创作:
Router::plugin('Catalog', ['path' => __d('catalog', /catalog']), function ($routes ){
$routes->connect(__d('catalog','/inventory'),
['controller' => 'inventory', 'action' => 'index']
);
}
但是,即使我的网站上登录的用户是“pt_BR”,I18n::locale()
也会返回默认的“en_US”。
在我的控制器上,相同的功能:I18n::locale()
返回正确。
好的,现在让我们想象用__d()
“自动”做到这一点是不可能的,我必须用每种语言编写每一条路线(至少目前它只是2)。
那么,我如何根据用户的语言创建链接? 例如:
echo $this->Html->link(
__d('catalog','inventory'),
['plugin'=>'catalog', 'controller' => 'inventory', 'action' => 'index']
);
答案 0 :(得分:1)
但是,I18n :: locale()返回EVERYTIME的默认值" en_US"即使我登录我网站的用户是" pt_BR"。在我的控制器上,相同的函数:I18n :: locale()返回正确。
听起来像执行订单的问题。在实际设置语言时弄清楚。我现在不确定也没有时间为你查找它,但我认为甚至在应用程序bootstrap.php之前就已经加载了路径。
根据您实施语言检测的方式,我猜您会在路线后设置,这就是您最终使用en_US的原因。如果您正在使用语言调度程序过滤器,我想它是在路由之后设置的,但在控制器加载之前是逻辑上的。