好吧,我做了下一个app/Config/bootstrap.php
:
$browserLangs = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$find = 'eng';
foreach($browserLangs as $browserLang) {
$lang = substr($browserLang,0,2);
var_dump($lang);
if ($lang == 'en') {
$find = 'eng';
break;
} else if ($lang == 'es') {
$find = 'spa';
break;
} else if ($lang == 'ca') {
$find = 'cat';
break;
}
}
Configure::write('Config.language', $find);
在 Accept Language 标头中,我们有一个包含浏览器所有语言列表的字符串。然后我将英语定义为默认语言,并尝试在列表中找到其他语言,当我得到一个时打破了扣环。
我把它作为答案是因为它有效,但它很脏,因为:
- 我不知道这是否是最好的方式和最好的地方,
- 这是非常静态的,您必须逐个放置语言,当您添加另一种语言时,您必须更新算法。最好的解决方案将自动检查蛋糕应用程序上定义的语言环境,我不知道如何要求。
- 也许这段代码应该被定义为插件、组件或类似的东西。
也许有人可以改进这一点或发布另一个更好的解决方案作为新答案。