簡単な紹介
Laravelのローカライズ機能を使用すると、簡単にアプリケーションに多言語サポートを実装することができます。保存されているデフォルトの言語の文字列 resources/lang
ディレクトリは、ディレクトリには、サポートされる言語ごとにアプリケーションのサブディレクトリが含まれています。
/ リソース / LANG / で のメッセージ。PHP / ES メッセージの.php
すべての言語ファイル例えば、キーと値のペアの配列を返します。
<?PHPの リターン[ '歓迎' => 'LaravelAcademy.orgへようこそ' ];
ロケールの設定オプション
保存されたアプリケーション構成ファイル内のデフォルトの言語 config/app.php
で、もちろん、あなたがアプリケーションのニーズを満たすために値を変更することができます。また、ランタイムを使用することができ App
ファサードに setLocale
現在の言語の方法を変更します。
ルート::( '歓迎/ {ロケール}'、取得機能($ロケール){ のApp :: あるsetLocale($ロケール); // });
現在の言語が別の言語が返された特定の言語の行が含まれていないときにも、「代替言語」を構成することができます。そして、デフォルトの言語は、言語はまた別の設定ファイルで config/app.php
設定:
'fallback_locale' => 'en' と、
現在のローカル言語を決定します
あなたは使用することができ App
ファサード getLocale
や isLocale
現在のローカル言語を取得したり、特定の地域の言語と一致するかどうかを確認する方法を:
$ロケール =のApp :: のgetLocale(); もし(APP :: isLocale( 'en'と)){ // }
翻訳文字列の定義
略語キーを使用
一般的に、に保存されている翻訳文字列 resources/lang
ディレクトリ内のファイルは、このディレクトリには、サポートされている各言語に対応するサブディレクトリのためのアプリケーションが含まれています。
/ リソース / LANG / で のメッセージ。PHP / ES メッセージの.php
対応する略語のキーを持つすべての言語ファイルは、例えば、文字列の配列を返します。
<?PHP // リソース/ LANG / EN / messages.php 戻る[ '歓迎は' => 'LaravelAcademy.orgへようこそ' ];
キーとして翻訳文字列を使用します
詳細を見ると理解することがより困難になり、さらに混乱を引き起こすで参照する場合、翻訳要件の厳しいアプリケーションとのそれらのために、各文字列の定義は、「短いキー」です。このため、Laravelはまた、「デフォルト」の翻訳文字列を定義するためのキーとして翻訳された文字列の使用をサポートしています。
保存されている方法のJSONファイル内のドキュメントの鍵翻訳翻訳などの文字列を使用して resources/lang
ディレクトリ。アプリケーションは、翻訳のスペイン語バージョンを持っている場合たとえば、私たちが作成する必要がある resources/lang/es.json
ファイルを:
{ "私はプログラミングが大好きです。": "私ENCANTAラprogramación。" }
翻訳文字列を取得します。
あなたはヘルパーを使用することができます __
方法は言語ファイルから、例えば、最初のパラメータとしてファイルのキーと翻訳文字列を受け取り、取得した言語ファイルの行から resources/lang/messages.php
で取得しwelcome
、対応する翻訳文字列:
エコー __( 'messages.welcome' ); エコー __( '私はプログラミングが大好きです。');
ブレード・テンプレートエンジンを使用する場合はもちろん、あなたが使用することができ {{ }}
文法翻訳文字列または使用の印刷 @lang
コマンドを:
{{__( 'messages.welcome' )}}
@lang( 'messages.welcome')
指定された翻訳文字列が存在しない場合、__
関数は、文字列変換キーを返し翻訳が存在しない場合は、そのため、上記の例を使用して、その文字列、__
関数が返されます messages.welcome
。
注意:
@lang
指示は任意の出力をエスケープしません、あなたが自分自身の出力を操作するための全責任をエスケープする必要があり、このコマンドを使用します。
翻訳文字列パラメータを交換
必要であれば、あなたは翻訳文字列でプレースホルダを定義することができ、すべてのプレースホルダがあり:
、プレフィックスを、例えば、あなたが、プレースホルダを使用することができます name
定義する welcome
メッセージを:
'歓迎' => 'ようこそ、:名'、
などの代替配列を渡す際に翻訳文字列を取得するために、プレースホルダを交換するには、 __
関数の第二引数:
エコー __( 'messages.welcome'、[ '名前' => 'laravel'])。
プレースホルダが大文字であるか、または最初の文字が大文字にされている場合、対応する入力値は、一貫性を維持し、プレースホルダ・フォーマット:
'歓迎' => 'ようこそ、:NAME'、// ようこそ、LARAVEL 'さようなら' => 'さようなら、:名前'、// さようなら、Laravel
複数
「|」異なる言語がパイプ文字を使用することにより、複素数の異なるルールを持っているので、複合体は、複雑な問題であり、あなたは文字列の単数形と複数形を区別することができます。
「りんご」=>「1個のリンゴがあります|多くのリンゴがあります」
また、翻訳文字列、より複雑な複数のルールを指定した番号の複数の範囲を作成することができます。
'リンゴ' => 'どれもありません。{0} | [1,19]いくつかがある| [20、*]多く存在します'、
その後、使用できる trans_choice
行数が1よりも大きいので、本実施形態では、所与の行の言語の行数を取得する機能を、それが複数の翻訳のストリングを返します。
エコー trans_choice( 'messages.apples'、10);
また、複数のストリングを定義することができる特性をプレースホルダ、これらのプレースホルダは、に渡されることになる trans_choice
第3のアレイパラメータ置換の機能:
'minutes_ago' => '{1}値分前| [2,1 *]:値分前'、エコー trans_choice( 'time.minutes_ago'、5、[ '値を' => 5])。
あなたはに配信表示したい場合は trans_choice
、関数の整数値は、使用することができます :count
プレースホルダを:
'リンゴ' => '{0}がありなし| {1} 1がある| [2,1 *]がありますカウント'、
カバレッジ拡張パッケージの言語ファイル
いくつかの拡張パックは、言語ファイルそのものを処理することができます。あなたは自分のファイルをにすることができ resources/lang/vendor/{package}/{locale}
、これらの文章を調整するために、これらのコアファイルパッケージを弱体化させるそれらをカバーしていないためにダウンディレクトリ。
したがって、たとえば、あなたが呼ば無効にする必要がある場合に skyrim/hearthfire
拡張パッケージの messages.php
英語の文章のファイルを、あなたが作成することができ resources/lang/vendor/hearthfire/en/messages.php
、ファイルを。このファイルでのみ拡張パックからロードされ、あなたが覆われた文は、文はまだ元の言語ファイルによって覆われていない欲しいものを定義する必要があります。