我知道如何使用 App::setLocale('es'); 在应用程序中设置默认语言
我正在考虑在用户登录后为每个用户设置单独的语言。
目前,我想到的唯一方法是设置通用语言并在 Lang::get() 命令中使用变量:
$user_language = 'gr';
Lang::get('messages.welcome'.$user_language);
还有其他方法可以设置每个用户的语言设置吗?
如果用户登录,为什么不直接使用
App::setLocale()
根据用户偏好设置语言。根据 Laravel 文档:
您可以随时使用
方法更改活动语言。App::setLocale
所以你可以这样做:
App::before(function($request)
{
// If user is logged in
if (Auth::check())
{
// Get the user specific language
$lang = Auth::user()->language;
// Set the language
App::setLocale($lang);
}
});
如果您想为每个用户设置区域设置,则不建议使用 App::setLocale($lang) 因为它会更改应用程序中的全局设置,因此最好的解决方案是使用
Lang::get($key, $replace, $locale).
我们可以针对每种语言使用不同的文件。打开此键
en
'required' => 'Field is required'
es
'required' => 'Campo es requerido'
这个文件结构
resources
lang
en
messages.php
es
messages.php
要恢复正确的密钥,您应该致电
$user_language = 'en';
Lang::get('messages.required',[], $user_language)