5

ビュー内で使用<?php echo __("this is my string"); ?>して、複数の言語でテキストを表示します。ドイツ語用の .po-file ディレクトリを作成しました。

=> app/Locale/ger/LC_MESSAGES/default.po

msgstr "これは私の文字列です"

msgstr "ダイス・イスト・マイネ・ツァイチェンケット"

AppController.php beforeFilter 関数に追加Configure::write('Config.language','ger');すると、テキストはまだ「これは私の文字列です」のままです。異なる msgstr で英語用の .po を作成しても、テキストは同じままです。

翻訳を有効にするには、特定の設定を変更する必要がありますか?


フォローアップの問題があります:デフォルト言語を設定するためにcore.phpConfigure::write('Config.language','eng');に追加しましたが、 AppController.php beforeFilterでオーバーライドしようとしても、値を変更できません:

Configure::write('Config.language', 'deu'); //'de' also doesn't work
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work

core.php の値を変更すると問題なく動作しますが、core.php に設定すると変更できません。

解決済み:parent::beforeFilter();ああ、すべてのコントローラーの beforeFilter 関数内に追加するのを忘れていました。


追加情報:

  • デフォルトの言語を定義したい場合 (通常はそうします)、core.phpConfigure::write('Config.language', 'eng');に追加します。
4

2 に答える 2

9

ファイル lib/Cake/I18n/L10n.php を見ると、各言語の呼び出し方法がわかります。

ドイツ語の設定:

Configure::write('Config.language','de');

=> app/Locale/deu/LC_MESSAGES/default.po

于 2012-04-06T22:17:15.583 に答える
6

「ゲル」ではなく「デュ」です

CakePHP はhttp://www.loc.gov/standards/iso639-2/php/code_list.phpの公式 (T) コードを使用します。CakePHP 1.3 の場合はInternationalizing Your Applicationに記載されています。

3 文字のロケール コードはISO 639-2標準に準拠していますが、地域のロケール (en_US、en_GB など) を作成すると、cake は適切であればそれらを使用します。

ISO 639-2 |  ISO 639-1 | English name | French name | German name |
Code      |  Code      | of Language  | of Language | of Language |
-------------------------------------------------------------------
ger (B)   |            |              |             |             |
deu (T)   |  de        | German       | allemand    | Deutsch     |
于 2012-04-06T22:16:34.567 に答える