您必须使用 CakePHP 的“本地化”功能
http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html
基本上,任何应该用当前语言翻译的字符串,都应该通过该__()
方法回显,例如echo __('hello')
本例中的字符串 'hello' 是要本地化(翻译)的字符串。CakePHP 使用 GNU 语言环境文件来定义您的翻译。在这些文件中是字符串的“对”,称为msgid
(要翻译的字符串/消息)和msgstr
(翻译的字符串)。每种语言('locale')都有自己的翻译文件,位于:
app/Locale/[locale]/LC_MESSAGES/default.po
例如,要进行“荷兰语”翻译(语言环境“nld”),此文件:
app/Locale/nld/LC_MESSAGES/default.po
应该创建,包含:
msgid "hello"
msgstr "hallo"
现在,通过将语言环境切换为“nld”(例如在beforeFilter()
您的 AppController 中;
Configure::write('Config.language', 'nld');
将使用“nld”语言环境和这一行;
echo _('hello');
将输出:
hallo
在您的情况下,设置标签将是这样的;
echo $this->Form->input('name', array('label' => __('hello')));
重要的
旧版本(CakePHP 2.x 之前)“回显”翻译后的字符串,而不是返回翻译后的字符串。要在 CakePHP 1.x 中返回翻译后的字符串,您需要传递 'true' 作为第二个参数;echo __('hello', true);
.po 文件中的字符串区分大小写,例如Hello !== hello
语言环境文件用于应用程序中的“短”、固定文本,而不是翻译用户输入的大段文本或“动态”文本。尽管可以在这些情况下使用它,但它并不是为此而设计的。
CakePHP 2.x 和 1.x 之间还有其他一些变化,所以在所有情况下,通过阅读手册让自己熟悉整个概念。