你将不得不使用CakePHP的“本土化”特点
http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html
基本上,应该在当前语言翻译任何字符串,应通过__()
方法相呼应,例如echo __('hello')
本例中的字符串'hello'是要本地化(翻译)的字符串。 CakePHP使用GNU语言环境文件来定义您的翻译。在这些文件中,有一对字符串,称为msgid
(要翻译的字符串/消息)和msgstr
(翻译后的字符串)。每一种语言( '语言区域')都有自己的翻译文件,位于:
app/Locale/[locale]/LC_MESSAGES/default.po
例如,有一个 '荷兰' 翻译(区域设置 '民盟'),此文件:
app/Locale/nld/LC_MESSAGES/default.po
应创建,包含:
msgid "hello"
msgstr "hallo"
现在,通过在AppController中的beforeFilter()
区域设置切换到 'NLD'(例如;
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之间还有其他一些变化,所以在所有情况下,通过阅读手册来熟悉整个概念。
您是否需要更改输入的“名称”或可见的“标签”?值是否必须存储在数据库的不同列中? – thaJeztah 2013-03-04 14:23:32
我只需要可见标签,名称为namn – Akaash 2013-03-04 14:59:40
欢迎使用Stack Overflow。您可以使用[代码示例'{}'](http://i.stack.imgur.com/VYd26.png)工具栏按钮来格式化源代码。这次我为你做了。 – 2013-03-04 15:39:15