改变Laravel 5中的语言

use*_*320 7 multilingual laravel laravel-blade

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

在此输入图像描述

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

谢谢

小智 36

resources/lang文件夹包含本地化文件.文件名对应于将使用的视图.要从此文件中获取值,只需使用以下代码:

Lang::get('localization_file_name.variable_name');

如果您想要实现语言选择的可能性,您只需要几个简单的步骤来应用:

  1. config/app.php添加以下代码:

    'locale' => 'ru',
    'locales' => ['ru', 'en'],
    
    Run Code Online (Sandbox Code Playgroud)

    语言环境的名称可以是任意名称.

  2. app/Http/Middleware创建一个名为的新文件Locale.php.该文件的内容应该是这样的:

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    use App;
    use Config;
    use Session;
    
    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);
       }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  3. app/Http/Kernel.php$middlewareGroups=[ ... ]添加以下行:

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

  4. 另外routes/web.php:

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