我想实现一个多语言laravel 4的网站,网址中包含语言代码(mywebsite.com/en/home和mywebsite.com/de/home)laravel 4多语言网站
我见过有几个选项可以筛选所有请求,并检查第一个参数是否是语言代码之一。
我也检查packagist,但还没有发现已经在做T恤的工作什么的。
有没有更好的实现方法?
谢谢
我想实现一个多语言laravel 4的网站,网址中包含语言代码(mywebsite.com/en/home和mywebsite.com/de/home)laravel 4多语言网站
我见过有几个选项可以筛选所有请求,并检查第一个参数是否是语言代码之一。
我也检查packagist,但还没有发现已经在做T恤的工作什么的。
有没有更好的实现方法?
谢谢
您可以设置在用户会话的语言变量。
然后用“before
”过滤器,并查看该变量,并登录正确的语言文件。
如果没有变量设置 - 然后使用一个默认的(也许是基于他们的IP位置)。
这是一个不好的SEO练习,因为搜索引擎没有会话,所以内容将总是以相同的语言索引 – itsjavi 2014-02-17 11:13:09
最后,我已经创建一个配置配置变量/ app.php
'available_language' => array('en', 'fr', 'es'),
在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);
}
});
,然后在routes.php文件我可以检测语言或强制:
Route::get('/', array(
'before' => 'detectLang()', // auto-detect language
function(){
...
})
);
或
Route::get('/', array(
'before' => 'detectLang("fr")', // force language to "fe"
function(){
...
})
);
一旦你实现了几乎完整的移交所的建议,你应该给他一些功劳... – crmoreira 2013-04-23 12:13:40
嗯,我没有看到Shift建议的任何实施。哦对不起。我正在使用会话。 :) – 2013-04-24 12:58:14
URL中的语言代码如何?这就是问题所在...... – 2013-12-22 02:19:02
我发现这个代码片断,可以帮助你。它允许你有多个lang url:https://gist.github.com/jacekd/4562959 – itsjavi 2014-02-17 11:14:32