你將不得不使用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