Laravelローカリゼーションは、開発者が多言語 Web サイトを作成できるようにする強力な機能です。 LaravelにWeb ローカリゼーションを実装すると、さまざまな言語的背景を持つ訪問者にパーソナライズされたユーザー エクスペリエンスを提供でき、最終的にリーチが拡大し、ユーザー エンゲージメントが向上します。
Laravelアプリケーションにローカリゼーションを実装する手順を説明し、ローカリゼーションの取り組みを簡素化および強化できるツールを紹介します。
Laravel Web サイトをローカライズする必要がある重要な理由をいくつか紹介します。
Laravelで多言語ローカリゼーションを実装する際には、考慮すべき要件と手順がいくつかあります。
Laravelアプリケーションまたは Web を翻訳する前に満たす必要がある要件を理解した後、 Laravel簡単に翻訳するためのいくつかの手順を示します。
これを行うには、ローカライズするビュー ファイル (resources/views/welcome.blade.php など) を開きます。次に、body タグを次のコードに置き換えます。
Welcome to Linguise website!
ご覧のとおり、上記のテキストは現在コードに直接書き込まれています。 Web サイトを別の言語に翻訳する(国際化)ことが困難になります
上記のテキストをより柔軟にして、さまざまな言語に簡単に適応できるようにします。 Laravelこれに非常に役立つ機能を提供します。ローカリゼーション システム。最初のステップとして、既存のテキストを次のコードに置き換えます。
{{ __('Welcome to Linguise website!') }}
Laravelデフォルトで上記のテキストを表示し、ユーザーが英語以外の言語を選択した場合は翻訳を検索します。この場合、英語がアプリケーションのデフォルト言語として使用されます。
しかし、 Laravelどのようにして現在の言語を判断したり、アプリケーションで利用可能な言語を認識したりするのでしょうか? config/app.php ファイル内のロケール設定をチェックします。このファイルを開いて、次の 2 つのキーを探します。
/* |-------------------------------------------------------------------------- | Application Locale Configuration |-------------------------------------------------------------------------- | | The application locale determines the default locale that will be used | by the translation service provider. You are free to set this value | to any of the locales which will be supported by the application. | */ 'locale' => 'en', /* |-------------------------------------------------------------------------- | Application Fallback Locale |-------------------------------------------------------------------------- | | The fallback locale determines the locale to use when the current one | is not available. You may change the value to correspond to any of | the language folders that are provided through your application. | */ 'fallback_locale' => 'en',
キーの上の説明は明確である必要があります。要約すると、ロケール キーはアプリケーションのデフォルトのロケールを保持します (コード内で他のロケールが指定されていない場合)。 fallback_locale は、アプリケーションで存在しないロケールが要求された場合にアクティブ化されます。
次に、このファイルに新しいキーを追加して、サポートされているすべてのロケールのリストを提供しましょう。
/* |-------------------------------------------------------------------------- | Available locales |-------------------------------------------------------------------------- | | List all locales that your application works with | */ 'available_locales' => [ 'English' => 'en', 'Italian' => 'it', 'French' => 'fr', ],
現時点では、 Laravel Web で英語、イタリア語、フランス語の 3 つの言語をサポートすることを試しました。
Laravelでは、他の多くのフレームワークと同様に、さまざまな言語の翻訳が別のファイルに保存されます。これらの翻訳ファイルを整理するには 2 つの方法が使用されます。
古い方法では、ファイルは resource/lang/{en,fr,it}/{myfile.php} の構造に保存されます。新しい方法では、resources/lang/{fr.json, it.json} などの JSON ファイルを使用します。この記事では新しい方法に焦点を当てますが、変換キーの名前とアクセス方法の違いを除けば、原則は古い方法でも同様です。
地域によって異なる言語の場合は、ISO 15897 標準に従って言語ディレクトリまたはファイルに名前を付ける必要があります。たとえば、イギリス英語には、en-gb ではなく en_GB という名前が付けられます。
Laravelでは、多くのフレームワークと同様に、さまざまな言語の翻訳が別のファイルに保存されます。 Laravel翻訳ファイルを整理するには、主に 2 つの方法があります。
この記事では 2 番目の方法に焦点を当てますが、原則は両方に適用できます (変換キーの名前とアクセス方法は異なります)。
地域によって異なる言語の場合は、ISO 15897 標準に従って言語ディレクトリ/ファイルに名前を付けることをお勧めします。たとえば、イギリス英語は en-gb ではなく en_GB と表記されます。
アプリケーションのロケールを構成したら、デフォルトのウェルカム メッセージの翻訳に進むことができます。
まず、resources/lang ディレクトリ内に JSON 形式で新しいローカリゼーション ファイルを作成します。まず、resources/lang/it.json ファイルを作成し、適切な翻訳を入力します。
{ "Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!" }
次に、resources/lang/fr.json ファイルを追加します。
{ "Welcome to Linguise website!": "Bienvenue sur le site de Linguise" }
ご覧のとおり、welcome.blade.php ファイルのデフォルト メッセージ ({{ __(' Linguise Web サイトへようこそ!') }}) を一貫して参照しています。 Laravelデフォルトのメッセージが英語であることを自動的に認識するため、en.json ファイルを作成する必要はありません。
さらに、 Laravelローカル言語をオーバーライドするようにまだ設定されていないため、現時点ではルート内で直接翻訳を処理します。 Routes/web.php ファイル内のデフォルトの welcome ルートを次のように変更します。
Route::get('/{locale?}', function ($locale = null) { if (isset($locale) && in_array($locale, config('app.available_locales'))) { app()->setLocale($locale); } return view('welcome'); });
この場合、オプションのロケール GET パラメーターを取得し、それに基づいて現在のロケールを設定します (要求されたロケールがサポートされている場合)。
これで、Web サイトにアクセスし、サポートされている言語のいずれかを URL の最初のセグメントとして含めることができます。たとえば、localhost/it または localhost/fr に移動すると、ローカライズされたコンテンツが表示されます。ロケールを指定しない場合、またはサポートされていないロケールを選択した場合、 Laravelデフォルトで英語 (en) に設定されます。
すべての URL にロケールを含めることは理想的ではなく、サイトの視覚的な魅力を損なう可能性があります。これに対処するために、言語スイッチャーをセットアップし、ユーザー セッションを利用して翻訳されたコンテンツを表示します。新しいミドルウェアを app/Http/Middleware/Localization.php ファイルに作成することも、artisan make:middleware Localization コマンドを実行して生成することもできます。
次に、その中に次のコードを追加します。
このオプションがセッションに存在する場合、このミドルウェアは、ユーザーが選択した場所を使用するようにLaravel指示します。
この操作はすべてのリクエストで実行する必要があるため、Web ミドルウェア グループの app/Http/Kernel.php にあるデフォルトのミドルウェア スタックに追加します。
/** * The application's route middleware groups. * * @var array> */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\Localization::class, // <--- add this ],
次に、routes/web.php ファイルでロケールを変更するためのルートを定義します。ここではクロージャー ルートを使用していますが、必要に応じて同じコードをコントローラー内に配置することもできます。
Route::get('language/{locale}', function ($locale) { app()->setLocale($locale); session()->put('locale', $locale); return redirect()->back(); });
さらに、以前にデフォルトのウェルカム ルートに追加されていたロケールの切り替えを削除します。ルート ルートは次のようになります。
Route::get('/', function () { return view('welcome'); });
これが完了すると、ユーザーは localhost/ language/{locale} にアクセスすることによってのみアクティブな言語を切り替えることができます。選択したロケールはセッションに保存され、ユーザーは前のページにリダイレクトされます (ローカリゼーション ミドルウェアによって処理されます)。
これをテストするには、localhost/ language/it に移動します (ブラウザーでセッション Cookie がアクティブであると仮定します)。翻訳されたコンテンツが表示されるはずです。サイト内を移動したり、ページを更新したりしても、選択した言語は有効なままになります。
URL にロケール コードを手動で入力することをユーザーに要求するのではなく、言語スイッチャーLaravel Web を変更するためのクリック可能なオプションをユーザーに提供する必要がありますこれを実現するには、単純な言語スイッチャーを作成します。 resource/views/partials/ language_switcher.blade.php に新しいファイルを追加し、次のコードを挿入します。
@foreach($available_locales as $locale_name => $available_locale) @if($available_locale === $current_locale) {{ $locale_name }} @else {{ $locale_name }} @endif @endforeach
新しく作成した言語スイッチャーを「ようこそ」ビューに含めるには、スイッチャーを表示したい welcome.blade.php ファイルに次の行を追加します。
@include('partials/language_switcher') {{ __('Welcome to our website!') }}
app/Providers/AppServiceProvider.php ファイルを開き、boot() メソッドに次のコードを追加して、言語スイッチャーの使用時に現在のロケールをすべてのビューで共有します。
* Bootstrap any application services. * * @return void */ public function boot() { view()->composer('partials.language_switcher', function ($view) { $view->with('current_locale', app()->getLocale()); $view->with('available_locales', config('app.available_locales')); }); }
この説明では、他のローカリゼーション コンポーネント、つまり日付、数値、通貨を扱います。手順は次のとおりです。
日付と時刻の処理は、ローカリゼーション プロセスにおいて非常に重要です。 LaravelCarbon を使用して日付と時刻を管理します。 Carbon を使用してローカライズされた日付を表示する方法は次のとおりです。
settings( [ 'locale' => app()->getLocale(), ] ); // LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY) $dateMessage = $today->isoFormat('dddd, LL'); return view('welcome', [ 'date_message' => $dateMessage ]); });
このコードは、アプリケーションの現在のロケールに基づいて Carbon ロケールを設定し、それに応じて日付をフォーマットします。
ローカライズされた日付をビューに表示するには:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }} {{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }} {{ $date_message }}
国が異なれば、数値のフォーマット方法も異なります。例えば。
Laravelアプリケーションでこれらのバリエーションに対応するには、NumberFormatter を使用できます。
特定の言語で数字をスペルアウトすることもできます。
通貨は次のとおりです。フランス語ロケール (`fr`) の場合、通貨はユーロ (€) で表示され、米国ロケール (`en_US`) の場合は米ドル ($) で表示されます。
この記事で説明されているようにLaravelローカリゼーションの手順を理解した後、このプロセスには多くの手順が含まれており、ユーザーはLaravelプログラム コードを深く理解する必要があります。
このため、アプリケーションをローカライズしたい初心者ユーザーにとっては確かに困難になる可能性があります。したがって、高速翻訳が可能で、ローカリゼーションをサポートし、実装に必要な手順が簡単な、より革新的なソリューションが必要です。
有望なソリューションの 1 つはLinguiseです。 Linguise深いコーディング知識を必要とせずに、 Laravelローカリゼーションへのより簡単で効率的なアプローチを提供します。 Linguiseの主な機能は次のとおりです。
Laravel Web サイトにLinguiseインストールする手順も簡単に実行できます。ここで簡単に説明します。
どうやって? Linguise使用すると、登録してアクティブ化するだけで、言語スイッチャーが表示されます。その後は、ライブ エディターを使用してローカライズしたり、メディアや画像などを翻訳したりすることができます。
Laravelローカリゼーションは、開発者が多言語の Web サイトやアプリケーションを作成できるようにする強力な機能です。これまで見てきたように、組み込みのLaravelローカリゼーション プロセスには複数のステップが含まれており、フレームワークをよく理解する必要があります。初心者や、より迅速な解決策を探している人にとっては、難しいかもしれません。
Linguiseのようなツールは、より合理化されたアプローチを求める人にとって革新的な代替手段を提供します。これらのソリューションは、迅速な翻訳機能、簡単な統合、カスタマイズ可能な言語スイッチャーや画像翻訳などのユーザーフレンドリーな機能を提供します。さあ、 Linguiseアカウントを作成して Laravelローカライズする機能をお楽しみください。
ウェブサイトの自動翻訳、国際SEOなどのニュースを受け取る!
メールを共有せずに終了しないでください。
宝くじに当たるという保証はできませんが、翻訳に関する興味深い情報ニュースや、時折割引を受けることはお約束できます。