YIIは、組み込みのメッセージ変換メカニズムと、さまざまな日付/数字のフォーマットライブラリとの統合を通じて、国際化(I18N)とローカリゼーション(L10N)に対する堅牢なサポートを提供します。 YiiのI18N機能のコアはYii::t()
メソッドに依存しています。このメソッドは、3つの引数を取ります。カテゴリ(メッセージソースを識別する文字列)、メッセージ自体、およびメッセージに置き換えるパラメーターのオプションの配列です。メッセージは、メッセージ翻訳ファイルに保存され、通常は言語とカテゴリごとに編成されます。
たとえば、「こんにちは、世界!」というメッセージを翻訳するためにこのような配列を含むメッセージの翻訳ファイル(メッセージmessages/en/app.php
messages/es/app.php
を最初に作成します。
<code class="php">// messages/en/app.php return [ 'Hello, world!' => 'Hello, world!', ]; // messages/es/app.php return [ 'Hello, world!' => '¡Hola, mundo!', ];</code>
次に、あなたのコードでは、 Yii::t()
のように使用します。
<code class="php">echo Yii::t('app', 'Hello, world!');</code>
YIIは、アプリケーション言語(通常はユーザー設定またはブラウザの好みに基づいて)を自動的に検出し、適切な翻訳を取得します。アプリケーション構成でlanguage
プロパティを使用してアプリケーション言語を構成できます。さらに、 Yii::$app->language
プロパティを使用して、アプリケーション内の現在の言語に動的にアクセスして変更できます。これにより、ユーザーエクスペリエンス内で言語の切り替えを管理するための柔軟で動的なアプローチが可能になります。翻訳が欠落している可能性のある潜在的な例外を適切に処理することを忘れないでください。フォールバックメカニズムまたはデフォルト値を提供することを検討してください。
YIIの効果的な翻訳管理には、構造化されたアプローチが必要です。
{name}
)を使用して、値の動的置換を可能にします。これにより、柔軟性が向上し、同様のメッセージの複数の翻訳が必要になります。YIIは、PHP Intl拡張機能からIntlDateFormatter
およびNumberFormatter
クラスを活用して、さまざまなロケールの異なる日付と数字形式を処理します。 PHP構成でINTL拡張機能が有効になっていることを確認してください。
日付のフォーマットには、 Yii::$app->formatter->asDate()
またはYii::$app->formatter->asDatetime()
を使用して、形式とロケールを指定します。例えば:
<code class="php">echo Yii::$app->formatter->asDate('2024-03-08', 'long', 'fr-FR'); // French (France) long date format echo Yii::$app->formatter->asDateTime('2024-03-08 10:30:00', 'medium', 'de-DE'); // German (Germany) medium date and time format</code>
同様に、数値のフォーマットには、 Yii::$app->formatter->asDecimal()
、 Yii::$app->formatter->asInteger()
、 Yii::$app->formatter->asCurrency()
などを使用して、番号、形式、およびロケールを提供します。
<code class="php">echo Yii::$app->formatter->asDecimal(1234.56, ['locale' => 'en-US']); // US English decimal format echo Yii::$app->formatter->asCurrency(1234.56, ['currencyCode' => 'EUR', 'locale' => 'de-DE']); // Euro currency in German (Germany) format</code>
アプリケーション構成でformatter
コンポーネントを構成して、デフォルトのフォーマットオプションとロケールを指定することを忘れないでください。これにより、フォーマット設定の中央管理が可能になります。上記の例で示されているように、これらのデフォルトを1コールごとにオーバーライドできます。
YIIにI18NとL10Nを実装することで、いくつかの課題を提示できます。
Yii::t()
メソッドのパラメーターを介した複数化をサポートしていますが、性別契約を処理するには、より多くのカスタムロジックが必要になる場合があります。可能であれば、フレームワークの組み込みの複数化機能を利用します。これらの課題を克服するには、慎重な計画、翻訳管理への構造化されたアプローチ、および適切なツールとテクニックの使用が必要です。さまざまな言語とブラウザにわたる徹底的なテストは、一貫した高品質のユーザーエクスペリエンスを確保するために重要です。
以上がYIIに国際化(I18N)とローカリゼーション(L10N)を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。