改变Laravel 5中的语言

时间:2017-02-22 15:19:17

标签: laravel multilingual laravel-blade

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

enter image description here

我不想在html代码中添加纯文本,是否有解决方案使所有文本在单独的lang文件中动态使用?

谢谢

3 个答案:

答案 0 :(得分:33)

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

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

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

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

    'locale' => 'ru',
    'locales' => ['ru', 'en'],
    

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

  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);
       }
     }
    
  3. app/Http/Kernel.php的{​​{1}}中添加以下行:

    $middlewareGroups=[ ... ]

  4. \App\Http\Middleware\Locale::class,添加:

    routes/web.php

答案 1 :(得分:1)

尝试一下!

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

现在在以下语言文件下添加具有其值的登录键

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

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

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

答案 2 :(得分:0)

Laravel有一个localization模块。

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

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

在您的模板中,您使用@lang('login.header')代替Login

您可以在/resources/lang/en目录中包含尽可能多的文件,并使用@lang刀片指令放置文件名(不带扩展名),并用点分隔所需的值。