Change language in Laravel 5

前端 未结 3 1230
北海茫月
北海茫月 2020-12-16 04:37

I just begin to use Laravel 5.4, In the login.blade.php i have

I don\'t like to put plain text in html code, is there a solution to make all the texts in s

相关标签:
3条回答
  • 2020-12-16 04:51

    Try this!

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

    Now Add login key with it's value under language file as below

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

    and Set your APP Config Local Variable Like 'en','nl','us'

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

    0 讨论(0)
  • 2020-12-16 05:06

    The resources/lang folder contains localization files. The file name corresponds to the view that it will be used. In order to get a value from this file, you can simply use the following code:

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

    If you want to realize the possibility of language selection, you only need a few simple steps to apply:

    1. In config/app.php add this code:

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

      The name of the locale can be any.

    2. In app/Http/Middleware create a new file named Locale.php. The contents of the file should be something like this:

      <?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. In app/Http/Kernel.php in $middlewareGroups=[ ... ] add the following line:

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

    4. In routes/web.php add:

      Route::get('setlocale/{locale}', function ($locale) {
        if (in_array($locale, \Config::get('app.locales'))) {
          session(['locale' => $locale]);
        }
        return redirect()->back();
      });
      
    0 讨论(0)
  • 2020-12-16 05:09

    Laravel has a localization module.

    Basically, you create a file, ex: resources/lang/en/login.php and put

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

    And in your template you use @lang('login.header') instead of Login.

    You can have as many files in your /resources/lang/en directory and using @lang blade directive you put your file name (without extension) and desired value separated with dot.

    0 讨论(0)
提交回复
热议问题