【问题标题】:Change language in Laravel 5在 Laravel 5 中更改语言
【发布时间】:2017-07-12 17:42:41
【问题描述】:

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

我不喜欢将纯文本放在 html 代码中,有没有办法让单独的 lang 文件中的所有文本动态地使用它们?

谢谢

【问题讨论】:

标签: laravel multilingual laravel-blade


【解决方案1】:

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

【讨论】:

  • 最直接的解决方案!
  • 感谢您的解决方案,它在 Lar 5.7 上运行良好
  • 惊人的解决方案!
  • 我收到一个错误in_array() expects parameter 2 to be array, null given 在这个文件中 "C:\wamp64\www\larav_start_youtube_2\app\Http\Middleware\Locale.php" 在这一行 $raw_locale = Session::get('locale'); if (in_array($raw_locale, Config::get('app.locales'))) { $locale = $raw_locale;
  • 我在任何地方都没有找到这个 routes/web.php 文件。我在哪里可以找到它?
【解决方案2】:

试试这个!

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

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

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

并设置您的 APP Config 本地变量,例如 'en','nl','us'

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

【讨论】:

    【解决方案3】:

    Laravel 有一个 localization 模块。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2021-12-10
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多