我在视图中使用<?php echo __("this is my string"); ?>
以多种语言显示文本。我为德语创建了一个.po文件目录:
=>app/Locale/ger/LC_MESSAGES/default.po
msgid"这是我的绳子"
msgstr"死亡是meine zeichenkette";
当我将Configure::write('Config.language','ger');
添加到我的AppController.php beforeFilter函数时;这是我的绳子;。即使我用不同的msgstr为英语创建了一个.po,文本仍然保持不变。
我是否必须更改特定设置才能激活翻译?
我有一个后续问题:我将Configure::write('Config.language','eng');
添加到core.php以设置我的默认语言,但现在我无法更改该值,即使我试图在AppController.phpbeforeFilter中覆盖它:
Configure::write('Config.language', 'deu'); //'de' also doesn't work
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work
如果我更改core.php中的值,它可以很好地工作,但一旦在core.php中设置,我就无法更改它。
解决了:啊,我忘了在所有控制器的beforeFilter函数中添加parent::beforeFilter();
。
附加信息:
- 如果您想定义一种默认语言(通常会这样做),请将
Configure::write('Config.language', 'eng');
添加到core.php
您可以查看文件lib/Cake/I18n/L10n.php,了解如何调用每种语言。
德语设置:
Configure::write('Config.language','de');
=>app/Locae/deu/LC_MESSAGES/default.po
其"deu"而非"ger"
CakePHP使用来自http://www.loc.gov/standards/iso639-2/php/code_list.php,对于CakePHP 1.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 |