如何在laravel 5.7中切换语言

时间:2018-12-07 08:46:21

标签: php laravel localization laravel-5.7

我是这个论坛的新手,这是我的第一个问题。我正在开发laravel应用程序。因此该应用程序的默认语言为 English 。我想将其更改为 Chinese

我的要求是主要语言为 Chinese ,其他语言为 English 。我的语言选择器工作正常,但是当我将应用程序“ local”更改为中文时,它却发生了变化。我尝试清除缓存并重新检查同一件事。不更改语言。我已经为英文“ ch”和中文创建了两种语言数组“ en”。

config / app.php

'locale' => 'en',  

'fallback_locale' => 'ch',

LanguageMiddleare类

public function handle($request, Closure $next)
{

    if(Session::has('locale')){
        app()->setLocale(Session::get('locale'));
    }

    return $next($request);
}

web.php(路由网址)

Route::group(['middleware' => 'language'],function(){
    Route::get('/', function () {
        return view('welcome');
    });
});

谢谢。

3 个答案:

答案 0 :(得分:1)

尝试这个

您可以在应用程序外观上使用setLocale方法在运行时更改活动语言

App::setLocale($locale);     //by facade.
app()->setLocate($locate);   ///by helper 

您可以使用getLocaleisLocale方法来确定当前语言环境或检查语言环境是否为给定值

$locale = App::getLocale();   //get current language

if (App::isLocale('en')) {  //if current language is english then true else false.
    //
}
  

您还可以配置“后备语言”,该语言将在   活动语言不包含给定的翻译字符串

'fallback_locale' => 'en',

有关更多信息,请阅读此articlesee laravel官方文档

答案 1 :(得分:0)

某些软件包可能附带其自己的语言文件。您可以通过将文件放在resources/lang/vendor/{package}/{locale}目录中来覆盖它们,而不用更改软件包的核心文件来调整这些行。

https://laravel.com/docs/5.7/localization

我认为此软件包可帮助您切换语言

https://github.com/akaunting/language

答案 2 :(得分:0)

我遇到了同样的问题,在会话中更改了语言环境,但在配置中没有更改。 因此,已经在每个刀片服务器和控制器中检查了会话的语言环境,并从那里设置了默认的语言即时设置,这是刀片服务器文件中的代码

    if(\Session::get('locale') == 'en') \App::setLocale('en');
    else                                \App::setLocale('bn');

希望它会为您提供帮助