Cambiare la lingua in Laravel 5

Ho appena iniziare a utilizzare Laravel 5.4, Nel login.blade.php ho

Cambiare la lingua in Laravel 5

Non mi piace mettere il testo normale in codice html, c’è una soluzione per rendere tutti i testi in separata lang file che si desidera utilizzare in modo dinamico?

Grazie

OriginaleL’autore user199320 | 2017-02-22

2 Replies
  1. 28

    Il resources/lang cartella contiene i file di localizzazione. Il nome del file corrisponde alla visione che verrà utilizzato. Al fine di ottenere un valore da questo file, si può semplicemente utilizzare il seguente codice:

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

    Se si desidera realizzare la possibilità di selezione della lingua, è solo bisogno di un paio di semplici passi per applicare:

    1. In config/app.php aggiungere questo codice:

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

      Il nome del locale può essere qualsiasi.

    2. In app/Http/Middleware creare un nuovo file denominato Locale.php.
      Il contenuto del file dovrebbe essere qualcosa di simile a questo:

      <?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. In app/Http/Kernel.php in $middlewareGroups=[ ... ] aggiungere la seguente riga:

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

    4. In routes/web.php aggiungere:

      Route::get('setlocale/{locale}', function ($locale) {
        if (in_array($locale, \Config::get('app.locales'))) {
          Session::put('locale', $locale);
        }
        return redirect()->back();
      });
      
    la soluzione più semplice!
    Soluzione funziona ancora per il 5.7
    Grazie per le vostre soluzioni, funziona bene su Lar 5.7
    Soluzione incredibile!

    OriginaleL’autore Alex Yapryntsev

  2. 0

    Laravel è un localizzazione modulo.

    In sostanza, si crea un file, es: resources/lang/en/login.php e mettere

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

    E nel tuo template in uso @lang('login.header') invece di Login.

    Si possono avere molti file nel vostro /resources/lang/en directory e utilizzando @lang lama direttiva si mette il nome del file (senza estensione) e il valore desiderato separati con il dot.

    OriginaleL’autore Mariusz

Lascia un commento