我想實現一個多語言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