Laravel 4.默认为俄语

时间:2015-11-26 19:42:47

标签: laravel laravel-4

我根据指示调整了app.php:

'locale' => 'ru',
'fallback_locale' => 'en',

但在首次访问该网站时,始终显示英文版。因此,基于俄罗斯的用户总是需要点击"俄罗斯"按钮查看网站的俄语版本。(使用Session::put('lang', $lang)创建语言切换并重定向到/)。

我也尝试在App::before过滤器中使用处理会话语言,但没有运气:它以俄语显示所有数据库内容,但trans('message.<word>')中的所有内容仍为英文(代码现在在过滤器中注释。 PHP)。

项目可在github上找到(查看您可能怀疑原因的文件)。

网站地址www.izutov.com(有&#34;英文&#34;&#34;俄语&#34;左上角的按钮) Thnx提前!

1 个答案:

答案 0 :(得分:1)

这就是我在Laravel 4中设置语言选择所做的:

app / filters.php中的

App::before(function($request) {

  Route::matched(function($route, $request) {

 if($route->getName() != 'admin') { // don't do it for admin area, (for example)

$language = $_ENV['FALLBACK_LOCALE'];
$lgs = explode(',', $_ENV['LANGUAGES']); // your set of languages

// get the default browser language with the $request object
$browserLg = substr($request->server->get('HTTP_ACCEPT_LANGUAGE'), 0, 2);

// language set from route (for example /en/some-url)
$requestLg = $request->segment(1);

# if the language called in url request matches your set of languages   
if (null !== $requestLg && in_array($requestLg, $lgs)) {

        $language = $requestLg;            

# default browser lg    
} else { 

    if(in_array($browserLg, $lgs)) {

        $language = $browserLg;
    }
}

// set the validated language
$_ENV['LOCALE'] = $language;
Config::set('locale',$language);
App::setLocale($language);

// share it with views if you want  
View::share('locale', $language);
 });
});