web-dev-qa-db-ja.com

Laravel 5で言語を変更

Laravel 5.4、login.blade.phpには

enter image description here

私はプレーンテキストをhtmlコードに入れたくないのですが、すべてのテキストを個別のlangファイルに作成して動的に使用する解決策はありますか?

ありがとうございました

7
user199320

_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_の_$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();
    });
    _
36
Alex Yapryntsev

これを試して!

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

次のように、言語ファイルの下に値を持つログインキーを追加します

_return['login'=>'Login']; // write inside messages file_

_'en','nl','us'_のようなAPP Configローカル変数を設定します

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

1
vishal dobariya

Laravelには localization モジュールがあります。

基本的に、ファイルを作成します。例:_resources/lang/en/login.php_およびput

_return [
    'header' => 'Login'
];
_

テンプレートでは、Loginの代わりに@lang('login.header')を使用します。

_/resources/lang/en_ディレクトリにいくつでもファイルを作成し、_@lang_ブレードディレクティブを使用して、ファイル名(拡張子なし)と目的の値をドットで区切って配置できます。

0
Mariusz