每个用户的 Laravel 语言设置

问题描述 投票:0回答:2

我知道如何使用 App::setLocale('es'); 在应用程序中设置默认语言

我正在考虑在用户登录后为每个用户设置单独的语言。

目前,我想到的唯一方法是设置通用语言并在 Lang::get() 命令中使用变量:

$user_language = 'gr';

Lang::get('messages.welcome'.$user_language);

还有其他方法可以设置每个用户的语言设置吗?

php laravel laravel-4
2个回答
11
投票

如果用户登录,为什么不直接使用

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);
    }
});

0
投票

如果您想为每个用户设置区域设置,则不建议使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.