ホームページ >バックエンド開発 >PHPチュートリアル >[ Laravel 5.2 ドキュメント ] サービス -- ローカリゼーション
Laravel のローカリゼーション機能を使用すると、アプリケーションに複数の言語サポートを簡単に実装できます。
言語文字列は、デフォルトで resource/lang ディレクトリに保存されます。このディレクトリには、アプリケーションでサポートされている各言語のサブディレクトリが含まれている必要があります:
/resources /lang /en messages.php /es messages.php
すべての言語ファイルは、キーと値のペアの配列を返します。例:
<?phpreturn [ 'welcome' => 'Welcome to our application'];
設定ロケールオプション
アプリケーションのデフォルト言語は構成ファイル config/app.php に保存されます。もちろん、アプリケーションのニーズに合わせてこの値を変更できます。アプリのファサードで setLocale メソッドを使用して、実行時に現在の言語を変更することもできます:
Route::get('welcome/{locale}', function ($locale) { App::setLocale($locale); //});
現在の言語に特定の言語行が含まれていない場合に返される「バックアップ言語」を構成することもできます。デフォルト言語と同様に、代替言語も構成ファイル config/app.php で構成されます。
'fallback_locale' => 'en',
このメソッドは言語ファイルから行を取得するためにヘルパー関数 trans を使用できます。最初のパラメータとしてファイルと言語行キーを指定します。たとえば、言語ファイル resource/lang/messages.php の言語行を取得しましょう:
echo trans('messages.welcome');
もちろん、Blade テンプレート エンジンを使用する場合は、 {{ }} 構文を使用した言語行:
{{ trans('messages.welcome') }}
指定された言語行が存在しない場合、trans 関数は言語行のキーを返すため、上記の例を使用すると、言語行が存在しない場合、 trans関数はmessages.welcomeを返します。
言語行のパラメータを置換します
必要に応じて、すべてのプレースホルダに : 接頭辞を付けることができます。たとえば、プレースホルダ名を使用してウェルカム メッセージを定義できます。
'welcome' => 'Welcome, :name',プレースホルダを置換するには。言語行を取得するには、trans 関数の 2 番目の引数として置換配列を渡します:
echo trans('messages.welcome', ['name' => 'Dayle']);多様化
多様化は複雑な問題です。言語によって多様化に違いがあるためです。ルールが異なると、パイプ文字 "|" を使用して、文字列の単数形と複数形を区別できます:
'apples' => 'There is one apple|There are many apples',次に、trans_choice 関数を使用して、指定された行数の言語行を取得できます。この場合、行数が 1 より大きい場合、言語行の複数形が返されます:
echo trans_choice('messages.apples', 10);Laravel トランスレータは Symfony 翻訳コンポーネントによって提供されるため、より複雑な多様化ルールを作成できます:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',
つまり、たとえば、skyrim/hearthfire という名前のパッケージ内のmessages.php ファイル内の英語の文章をオーバーライドする必要がある場合は、resources/lang/vendor/hearthfire/en/messages.php ファイルを作成できます。このファイルでは、カバーする文を定義するだけで済みます。カバーしない文は、パッケージの元の言語ファイルからロードされます。