ビュー内で使用<?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.php
Configure::write('Config.language', 'eng');
に追加します。