根据前缀/会话在Laravel中加载lang文件

时间:2013-12-12 16:54:56

标签: laravel translation

我构建了一个包含3种语言的多语言网站( mk - 默认, sq en ),最后在路线中使用以下代码.PHP:

$languages = array('en', 'sq');
$locale = Request::segment(1);
if(in_array($locale, $languages)){
    \App::setLocale($locale);
}else{
    $locale = null;
}
// Set the session here
Session::put('locale', $locale);

Route::group(array('prefix' => $locale), function()
{
    Route::get('/', array('as' => 'home', 'uses' => 'Controllers\Frontend\FrontendController@getIndex'));
    // .... other routes
});

我的默认语言区域为'mk',我在Land文件夹中还有其他两种语言, sq en 。 虽然路由工作正常,但问题是加载lang文件时。它适用于在app.php中设置的默认语言 mk en ,但不会切换 sq 转换,而是加载< strong> en lang文件。

示例:

  1. 网址:http://website.com加载 mk lang文件

  2. 网址:http://website.com/en加载 en lang文件

  3. 网址:http://website./sq加载 en lang文件而不是 sq &lt; ---问题

  4. 在其他代码中,我在视图中有以下内容:

    {{{ URL::route('home') }}}
    

    控制器通常是:

    public function getIndex($locale = null)
    {
    
        $data = array();
        return View::make('frontend.frontpage', $data);
    }
    

    我的问题:当URI参数更改为 sq 时,为什么未加载 sq 语言文件?

1 个答案:

答案 0 :(得分:2)

问题:“根据前缀/会话在Laravel中加载lang文件”

@ Pat的回答(在评论中)解决了我的问题(Loading lang files in Laravel depending on prefix/session

简而言之,使用https://github.com/mcamara/laravel-localization可以轻松创建Lavarel的多语言网站。