3

URLに言語コードを含む多言語laravel 4 Webサイトを実装しようとしています( mywebsite.com/en/home および mywebsite.com/de/home )

すべてのリクエストをフィルタリングしたり、最初のパラメーターが言語コードの 1 つであるかどうかを確認したりするなど、いくつかのオプションを見てきました。

私もpackagistをチェックしましたが、すでにteeの仕事をしているものは見つかりませんでした。

それを実装するより良い方法はありますか?

ありがとうございました

4

2 に答える 2

6

最後に、config/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(){
        ...
    })
);
于 2013-02-10T14:41:39.750 に答える
1

ユーザー セッションで言語変数を設定できます。

次に、' before' フィルタを使用してその変数を表示し、正しい言語ファイルをログに記録します。

変数が設定されていない場合は、デフォルトを使用します (おそらく IP ロケーションに基づく)。

于 2013-02-10T07:16:45.127 に答える