更改 Laravel 5 中的语言

Change language in Laravel 5

我刚开始使用 Laravel 5.4,在 login.blade.php 我有

我不喜欢在 html 代码中放入纯文本,是否有解决方案可以使单独的 lang 文件中的所有文本动态使用它们?

谢谢

resources/lang 文件夹包含本地化文件。文件名与将要使用的视图相对应。为了从此文件中获取值,您可以简单地使用以下代码:

`Lang::geConfig; 使用会话;

    class Locale
    {
      /**
       * Handle an incoming request.
       *
       * @param  \Illuminate\Http\Request  $request
       * @param  \Closure  $next
       * @return mixed
       */
       public function handle($request, Closure $next)
       {
         //$raw_locale = Session::get('locale');
         $raw_locale = $request->session()->get('locale');
         if (in_array($raw_locale, Config::get('app.locales'))) {
           $locale = $raw_locale;
         }
         else $locale = Config::get('app.locale');
           App::setLocale($locale);
           return $next($request);
       }
     }
  1. app/Http/Kernel.php中在$middlewareGroups=[ ... ]中添加以下行:

    \App\Http\Middleware\Locale::class,

  2. routes/web.php中添加:

    Route::get('setlocale/{locale}', function ($locale) {
      if (in_array($locale, \Config::get('app.locales'))) {
        session(['locale' => $locale]);
      }
      return redirect()->back();
    });
    

Laravel 有一个 localization 模块。

基本上,您创建一个文件,例如:resources/lang/en/login.php 并放入

return [
    'header' => 'Login'
];

并且在您的模板中使用 @lang('login.header') 而不是 Login

您的 /resources/lang/en 目录中可以有尽可能多的文件,并使用 @lang blade 指令将您的文件名(不带扩展名)和所需的值用点分隔。

试试这个!

{{ @lang('messages.login') }}

现在在语言文件下添加登录密钥及其值,如下所示

return['login'=>'Login']; // write inside messages file

并像 'en','nl','us'

一样设置您的 APP 配置局部变量

App::setLocale(language name); like 'en','nl','us'