Chr*_*ang 5 translation cakephp cakephp-2.1
我<?php echo __("this is my string"); ?>在视图中使用以多种语言显示文本.我为德语创建了一个.po文件目录:
=> app/Locale/ger/LC_MESSAGES/default.po
msgstr"这是我的字符串"
msgstr"die ist meine zeichenkette"
当我添加Configure::write('Config.language','ger');到我的AppController.php beforeFilter函数时,文本仍然是"这是我的字符串".即使我使用不同的msgstr为英语创建.po,文本仍然保持不变.
我是否必须更改特定设置才能激活翻译?
我有一个跟进问题:我添加Configure::write('Config.language','eng');到core.php来设置我的默认语言,但现在我无法更改该值,即使我尝试在AppFtroller.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函数里面添加.
附加信息:
Configure::write('Config.language', 'eng');到core.php您可以查看文件lib/Cake/I18n/L10n.php,了解如何调用每种语言.
德语设置:
Configure::write('Config.language','de');
=> app/Locale/deu/LC_MESSAGES/default.po
它的"deu"不是"ger"
CakePHP使用来自http://www.loc.gov/standards/iso639-2/php/code_list.php的官方(T)代码,对于CakePHP 1.3,它在国际化您的应用程序中记录:
三字符语言环境代码符合ISO 639-2标准,但如果您创建区域语言环境(en_US,en_GB等),蛋糕将在适当时使用它们.
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     |