Commit bdf5e624 by Nobuo Kihara

docs/guide-ja/tutorial-i18n.md - completed [ci skip]

parent 66bbe4d9
...@@ -165,7 +165,7 @@ RESTful ウェブサービス ...@@ -165,7 +165,7 @@ RESTful ウェブサービス
* [アプリケーションを一から構築する](tutorial-start-from-scratch.md) * [アプリケーションを一から構築する](tutorial-start-from-scratch.md)
* [コンソールコマンド](tutorial-console.md) * [コンソールコマンド](tutorial-console.md)
* [コアバリデータ](tutorial-core-validators.md) * [コアバリデータ](tutorial-core-validators.md)
* **翻訳中** [国際化](tutorial-i18n.md) * [国際化](tutorial-i18n.md)
* **翻訳中** [メール](tutorial-mailing.md) * **翻訳中** [メール](tutorial-mailing.md)
* **翻訳中** [パフォーマンスチューニング](tutorial-performance-tuning.md) * **翻訳中** [パフォーマンスチューニング](tutorial-performance-tuning.md)
* **翻訳中** [共有ホスト環境](tutorial-shared-hosting.md) * **翻訳中** [共有ホスト環境](tutorial-shared-hosting.md)
......
...@@ -455,11 +455,12 @@ class Menu extends Widget ...@@ -455,11 +455,12 @@ class Menu extends Widget
> **Note**|注意: ウィジェットのためには i18n ビューも使うことが出来ます。コントローラのための同じ規則がウィジェットにも適用されます。 > **Note**|注意: ウィジェットのためには i18n ビューも使うことが出来ます。コントローラのための同じ規則がウィジェットにも適用されます。
### Translating framework messages ### フレームワークメッセージを翻訳する
Yii comes with default translation messages for validation errors and some other strings. These messages are all Yii には、バリデーションエラーとその他いくつかの文字列に対するデフォルトの翻訳メッセージが付属しています。
in the category `yii`. Sometimes you want to correct default framework message translation for your application. これらのメッセージは、全て 'yii' というカテゴリの中にあります。
In order to do so configure the `i18n` [application component](structure-application-components.md) like the following: 場合によっては、あなたのアプリケーションのために、デフォルトのフレームワークメッセージの翻訳を修正したいことがあるでしょう。
そうするためには、`i18n` [アプリケーションコンポーネント](structure-application-components.md) を以下のように構成してください。
```php ```php
'i18n' => [ 'i18n' => [
...@@ -473,17 +474,18 @@ In order to do so configure the `i18n` [application component](structure-applica ...@@ -473,17 +474,18 @@ In order to do so configure the `i18n` [application component](structure-applica
], ],
``` ```
Now you can place your adjusted translations to `@app/messages/<language>/yii.php`. これで、あなたの修正した翻訳を `@app/messages/<language>/yii.php` に置くことが出来ます。
### Handling missing translations ### 欠落している翻訳の処理
If the translation is missing at the source, Yii displays the requested message content. Such behavior is very convenient ソースに翻訳が欠落している場合でも、Yii はリクエストされたメッセージの内容を原文で表示します。
in case your raw message is a valid verbose text. However, sometimes it is not enough. このような振舞いは、原文のメッセージが正当かつ詳細なテキストである場合には、非常に好都合です。
You may need to perform some custom processing of the situation, when requested translation is missing at the source. しかし、場合によっては、それだけでは十分ではありません。
This can be achieved using the [[yii\i18n\MessageSource::EVENT_MISSING_TRANSLATION|missingTranslation]]-event of [[yii\i18n\MessageSource]]. リクエストされた翻訳がソースに欠落しているときに、何らかの特別な処理を実行する必要がある場合もあります。
そういう処理は、[[yii\i18n\MessageSource]] の [[yii\i18n\MessageSource::EVENT_MISSING_TRANSLATION|missingTranslation]] イベントを使うことによって達成できます。
For example to mark all missing translations with something notable, so they can be easily found at the page we 例えば、全ての欠落している翻訳を簡単に見つけられるように、何か目立つマークを付けることにしましょう。
first we need to setup event handler. This can be done in the application configuration: 最初にイベントハンドラをセットアップする必要がありますが、それはアプリケーションの構成によって行うことが出来ます。
```php ```php
'components' => [ 'components' => [
...@@ -503,7 +505,7 @@ first we need to setup event handler. This can be done in the application config ...@@ -503,7 +505,7 @@ first we need to setup event handler. This can be done in the application config
], ],
``` ```
Now we need to implement our own event handler: 次に、私たち独自のイベントハンドラを実装する必要があります。
```php ```php
<?php <?php
...@@ -520,49 +522,43 @@ class TranslationEventHandler ...@@ -520,49 +522,43 @@ class TranslationEventHandler
} }
``` ```
If [[yii\i18n\MissingTranslationEvent::translatedMessage]] is set by the event handler it will be displayed as the translation result. このイベントハンドラによって [[yii\i18n\MissingTranslationEvent::translatedMessage]] がセットされた場合は、それが翻訳結果として表示されます。
> Attention: each message source handles its missing translations separately. If you are using several message sources > Note|注意: 全てのメッセージソースは、欠落した翻訳をそれぞれ独自に処理します。
> and wish them treat missing translation in the same way, you should assign corresponding event handler to each of them. > いくつかのメッセージソースを使っていて、それらが同じ方法で欠落した翻訳を取り扱うようにしたい場合は、対応するイベントハンドラを全てのメッセージソースそれぞれに割り当てなければなりません。
Views ビュー
----- ------
Instead of translating messages as described in the last section, 前の項で説明したようなメッセージの翻訳の代りに、ビューの中で `i18n` を使ってさまざまな言語に対するサポートを提供することも出来ます。
you can also use `i18n` in your views to provide support for different languages. For example, if you have a view `views/site/index.php` and 例えば、`views/site/index.php` というビューがあり、それのロシア語のための特別版を作りたい場合は、現在のコントローラ/ウィジェットのビューパスの下に `ru-RU` フォルダを作って、ロシア語のためのファイルを `views/site/ru-RU/index.php` として置きます。
you want to create a special version for russian language of it, you create a `ru-RU` folder under the view path of the current controller/widget and そうすると、Yii は、現在の言語のためのファイルが存在する場合はそれをロードし、何も見つからなかった場合はオリジナルのビューファイルにフォールバックします。
put the file for russian language as follows `views/site/ru-RU/index.php`. Yii will then load the file for the current language if it exists
and fall back to the original view file if none was found.
> **Note**: If language is specified as `en-US` and there are no corresponding views, Yii will try views under `en` > **Note**|注意: 言語が `en-US` と指定されている場合、対応するビューが無いと、Yii は `en` の下でビューを探して、そこにも無ければ、オリジナルのビューを使います。
> before using original ones.
Formatting Number and Date values 数値と日付の値を書式設定する
--------------------------------- ----------------------------
See the [data formatter section](output-formatter.md) for details. 詳細は [データフォーマッタ](output-formatter.md) の節を参照してください。
Setting up your PHP environment <a name="setup-environment"></a> PHP 環境をセットアップする <a name="setup-environment"></a>
------------------------------- --------------------------
Yii uses the [PHP intl extension](http://php.net/manual/en/book.intl.php) to provide most of its internationalization features Yii は、[[yii\i18n\Formatter]] クラスの数値や日付の書式設定や、[[yii\i18n\MessageFormatter]] を使うメッセージのフォーマッティングなど、ほとんどの国際化機能を提供するために [PHP intl 拡張](http://php.net/manual/ja/book.intl.php) を使います。
such as the number and date formatting of the [[yii\i18n\Formatter]] class and the message formatting using [[yii\i18n\MessageFormatter]]. この二つのクラスは、`intl` がインストールされていない場合に備えて基本的な機能を提供するフォールバックを実装しています。
Both classes provides a fallback implementation that provides basic functionality in case intl is not installed. だだし、このフォールバックの実装は、英語のサイトでのみ十分に機能するものであり、たとえ英語のサイトであっても、PHP intl 拡張によって利用可能になる一連の豊かな機能を提供できるものではありません。
This fallback implementation however only works well for sites in english language and even there can not provide the 従って、PHP intl 拡張のインストールが強く推奨されます。
rich set of features that is available with the PHP intl extension, so its installation is highly recommended.
The [PHP intl extension](http://php.net/manual/en/book.intl.php) is based on the [ICU library](http://site.icu-project.org/) which [PHP intl 拡張](http://php.net/manual/ja/book.intl.php) は、さまざまに異なる全てのロケールについて知識と書式の規則を提供する [ICU ライブラリ](http://site.icu-project.org/) に基礎を置いています。
provides the knowledge and formatting rules for all the different locales. According to this fact the formatting of dates and numbers この事実により、日付や数値の書式設定、また、メッセージのフォーマッティングで利用できる構文は、PHP バイナリとともにコンパイルされる ICU ライブラリのバージョンの違いによって異なってきます。
and also the supported syntax available for message formatting differs between different versions of the ICU library that is compiled with
you PHP binary.
To ensure your website works with the same output in all environments it is recommended to install the PHP intl extension あなたのウェブサイトが全ての環境で同じ出力をすることを確実にするために、全ての環境において PHP intl 拡張をインストールし、PHP とともにコンパイルされた ICU ライブラリのバージョンが同一であることを確認することが推奨されます。
in all environments and verify that the version of the ICU library compiled with PHP is the same.
To find out which version of ICU is used by PHP you can run the following script, which will give you the PHP and ICU version used. どのバージョンの ICU が PHP によって使われているかを知るために、次のスクリプトを走らせることが出来ます。
このスクリプトは、使用されている PHP と ICU のバージョンを出力します。
```php ```php
<?php <?php
...@@ -570,12 +566,13 @@ echo "PHP: " . PHP_VERSION . "\n"; ...@@ -570,12 +566,13 @@ echo "PHP: " . PHP_VERSION . "\n";
echo "ICU: " . INTL_ICU_VERSION . "\n"; echo "ICU: " . INTL_ICU_VERSION . "\n";
``` ```
We recommend an ICU version greater or equal to version ICU 49 to be able to use all the features described in this document. このドキュメントで説明されている全ての機能を使うことが出来るように、ICU のバージョンが 49 以上であることを推奨します。
One major feature that is missing in Versions below 49 is the `#` placeholder in plural rules. 49 未満のバージョンに欠落している主要な機能の一つが、複数形規則における `#` プレースホルダです。
See <http://site.icu-project.org/download> for a list of available ICU versions. Note that the version numbering has changed after the 入手できる ICU バージョン については、<http://site.icu-project.org/download> を参照してください。
4.8 release so that the first digits are now merged: the sequence is ICU 4.8, ICU 49, ICU 50. バージョン番号の採番方式が 4.8 リリースの後に変更されて、最初の二つの数字が結合されたことに注意してください。
すなわち、ICU 4.8、ICU 49、ICU 50 という順序です。
Additionally the information in the time zone database shipped with the ICU library may be outdated. Please refer これに加えて、ICU ライブラリとともに出荷されるタイムゾーンデータベースの情報も古くなっている可能性があります。
to the [ICU manual](http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data) for details タイムゾーンデータベースの更新に関する詳細は [ICU マニュアル](http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data) を参照してください。
on updating the time zone database. While for output formatting the ICU timezone database is used, the time zone database 出力の書式設定には ICU タイムゾーンデータベースが使用されますが、PHP によって使われるタイムゾーンデータベースも影響する可能性があります。
used by PHP may be relevant too. You can update it by installing the latest version of the [pecl package `timezonedb`](http://pecl.php.net/package/timezonedb). PHP のタイムゾーンデータベースは、[`timezonedb` pecl パッケージ](http://pecl.php.net/package/timezonedb) の最新版をインストールすることによって更新することが出来ます。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment