多言語化するときのConfig.languageの値
本題
カレントの言語を指定するには、次のようにすると思います。
<?php // app/locale/ja_jp ディレクトリ以下の情報を用いる Configure::write('Config.language', 'ja_jp'); ?>
以下、この例でいう'ja_jp'を識別子と呼びます。
さて、識別子が、l10nのカタログ(のキー)に存在するとき、l10nはそれに対応する「locale」「localeFallback」といった値を、languagePath(ロケール情報をもつディレクトリへのパス郡)に追加します。
よって、例えば、識別子に「ja」を指定した場合、以下のようになります。
<?php // 識別子「ja」はカタログにあり、「locale」、「localeFallback」の値は「jpn」 Configure::write('Config.language', 'ja'); // よって、app/locale/jpn/ 以下の情報を参照する // $l10n->languagePath = array('jpn', 'jpn'); ?>
カタログって何?
- 言語に対する様々な情報を保持しています。
- リクエストヘッダのHTTP_ACCEPT_LANGUAGEをキーになっています。(振り分けが容易)
<?php // 日本語の例 'ja' => array( 'language' => 'Japanese', // 言語のフルネーム 'locale' => 'jpn', // setlocale()などに適応される地域名 'localeFallback' => 'jpn', // 下記を参照 'charset' => 'utf-8', // この言語を使用する際に推奨される文字エンコーディング(自信なし) 'direction' => 'ltr' // 文字の方向。ltr(left to right)とrtl(right to left)のどちらか ) ?>
localeFallbackですが、fallbackとは予備のもの、といった意味合いを持ちます。
例えば英語の場合、様々な地域・国で使われ、方言も多種多様にわたりますが、
- locale => en_ca // カナダ英語
- localeFallback => eng // カナダ英語も英語!
という風に、英語ならどこの地域・国でも「eng」を予備として利用できる、といった風になります。
つまりapp/locale/engに記述をおけば、多種多様な英語圏の国・地域に適応できるといったことが可能になります。