2017-02-22 194 views
3

我刚开始使用Laravel 5.4,在login.blade.php我有更改语言5

enter image description here

我不喜欢把纯文本的html代码,有没有解决方案使所有独立的lang文件中的文本动态使用它们?

谢谢

+1

https://laravel.com/docs/5.4/localization – Sebastian

回答

9

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'); 
        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在$ middlewareGroupsarray加入这一行:

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

  4. routes/web.php附加:

    Route::get('setlocale/{locale}', function ($locale) { 
        if (in_array($locale, \Config::get('app.locales'))) { 
        Session::put('locale', $locale); 
        } 
        return redirect()->back(); 
    }); 
    
0

Laravel有一个localization模块。

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

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

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

您可以在/resources/lang/en目录中使用多少个文​​件,并使用@lang刀片指令将您的文件名(不带扩展名)和期望值用圆点分开。