Fla*_*are 3 multilingual laravel laravel-4
我正在尝试实现多语言laravel 4网站,网址中包含语言代码(mywebsite.com/en/home和mywebsite.com/de/home)
我已经看到了几个选项,比如过滤所有请求并检查第一个参数是否是语言代码之一.
我也检查过packagist但是还没找到已经做过工作的东西.
有没有更好的方法来实现它?
谢谢
最后,我在config/app.php中创建了一个配置变量
'available_language' => array('en', 'fr', 'es'),
Run Code Online (Sandbox Code Playgroud)
在filters.php中,我检测到浏览器语言:
Route::filter('detectLang', function($lang = "auto")
{
if($lang != "auto" && in_array($lang , Config::get('app.available_language')))
{
Config::set('app.locale', $lang);
}else{
$browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : '';
$browser_lang = substr($browser_lang, 0,2);
$userLang = (in_array($browser_lang, Config::get('app.available_language'))) ? $browser_lang : Config::get('app.locale');
Config::set('app.locale', $userLang);
}
});
Run Code Online (Sandbox Code Playgroud)
然后在routes.php我可以检测语言或强制它:
Route::get('/', array(
'before' => 'detectLang()', // auto-detect language
function(){
...
})
);
Run Code Online (Sandbox Code Playgroud)
要么
Route::get('/', array(
'before' => 'detectLang("fr")', // force language to "fe"
function(){
...
})
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5717 次 |
| 最近记录: |