我是这个论坛的新手,这是我的第一个问题。我正在开发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');
});
});
谢谢。
答案 0 :(得分:1)
尝试这个
您可以在应用程序外观上使用setLocale
方法在运行时更改活动语言
App::setLocale($locale); //by facade.
app()->setLocate($locate); ///by helper
您可以使用getLocale
和isLocale
方法来确定当前语言环境或检查语言环境是否为给定值
$locale = App::getLocale(); //get current language
if (App::isLocale('en')) { //if current language is english then true else false.
//
}
您还可以配置“后备语言”,该语言将在 活动语言不包含给定的翻译字符串
'fallback_locale' => 'en',
答案 1 :(得分:0)
某些软件包可能附带其自己的语言文件。您可以通过将文件放在resources/lang/vendor/{package}/{locale}
目录中来覆盖它们,而不用更改软件包的核心文件来调整这些行。
https://laravel.com/docs/5.7/localization
我认为此软件包可帮助您切换语言
答案 2 :(得分:0)
我遇到了同样的问题,在会话中更改了语言环境,但在配置中没有更改。 因此,已经在每个刀片服务器和控制器中检查了会话的语言环境,并从那里设置了默认的语言即时设置,这是刀片服务器文件中的代码
if(\Session::get('locale') == 'en') \App::setLocale('en');
else \App::setLocale('bn');
希望它会为您提供帮助