ローカライゼーション
はじめに
Laravelアプリケーションのスケルトンにはデフォルトで lang
ディレクトリが含まれていません。Laravelの言語ファイルをカスタマイズしたい場合は、lang:publish
Artisanコマンドを使用して公開することができます。
Laravelのローカライゼーション機能は、さまざまな言語の文字列を取得する便利な方法を提供し、アプリケーション内で複数の言語を簡単にサポートできるようにします。
Laravelでは、翻訳文字列を管理するための2つの方法が提供されています。まず、言語文字列はアプリケーションの lang
ディレクトリ内のファイルに保存されることがあります。このディレクトリ内には、アプリケーションでサポートされている各言語用のサブディレクトリがあるかもしれません。これは、Laravelがビルトインの機能(例:バリデーションエラーメッセージ)の翻訳文字列を管理するために使用するアプローチです:
/lang
/en
messages.php
/es
messages.php
また、翻訳文字列は、lang
ディレクトリ内に配置されたJSONファイル内で定義することもできます。このアプローチを取る場合、アプリケーションでサポートされている各言語に対応するJSONファイルがこのディレクトリ内に配置されます。このアプローチは、多数の翻訳可能な文字列を持つアプリケーションにおすすめです:
/lang
en.json
es.json
このドキュメントでは、翻訳文字列を管理する各アプローチについて説明します。
言語ファイルの公開
デフォルトでは、Laravelアプリケーションのスケルトンには lang
ディレクトリが含まれていません。Laravelの言語ファイルをカスタマイズしたい場合や独自の言語ファイルを作成したい場合は、lang:publish
Artisanコマンドを使用して lang
ディレクトリをスキャフォールドする必要があります。lang:publish
コマンドは、アプリケーションに lang
ディレクトリを作成し、Laravelで使用されるデフォルトの言語ファイルセットを公開します:
php artisan lang:publish
ロケールの設定
アプリケーションのデフォルト言語は、通常は APP_LOCALE
環境変数を使用して設定される config/app.php
構成ファイルの locale
構成オプションに保存されます。この値をアプリケーションのニーズに合わせて変更することができます。
デフォルト言語に加えて、指定された翻訳文字列がデフォルト言語に含まれていない場合に使用される "フォールバック言語" を構成することもできます。デフォルト言語と同様に、フォールバック言語も config/app.php
構成ファイルで構成され、その値は通常は APP_FALLBACK_LOCALE
環境変数を使用して設定されます。
App
ファサードが提供する setLocale
メソッドを使用して、実行時に単一のHTTPリクエストのデフォルト言語を変更することができます:
use Illuminate\Support\Facades\App;
Route::get('/greeting/{locale}', function (string $locale) {
if (! in_array($locale, ['en', 'es', 'fr'])) {
abort(400);
}
App::setLocale($locale);
// ...
});