在蛋糕1.3,我已經使用
Configure::write ('Config.language', 'ger');
期待此/locale/ger/LC_MESSAGES/default.po;事後看來,這是錯誤的,正如你所指出的那樣,德語的「官方」編碼是'deu'。但是,我認爲只要它在適當的子目錄中,您就可以使用您的語言的任何標識符。
setlocale (LC_TIME, 'de_DE');
setlocale (LC_MONETARY, 'de_DE');
然而,在http://php.net/manual/en/function.setlocale.php聽從警告有關使用的setlocale:
有趣的部分,當你想與使用locale()函數來格式化數字,日期等情況。
--- Amendement
你必須記住,一個區域是東西比語言完全不同。語言環境指定如何格式化數字,時間,金錢,比較字符串並對它們進行排序。當然,語言環境也有用於翻譯的LC_MESSAGES類別。但是聽我說。
一種語言可以在很多國家使用,所以你會認爲你可以在所有這些國家使用你的翻譯。但你很快遇到問題。例如,英國,英國,美國,加拿大以及其他許多國家有細微的差別。但是打印日期是另一回事。美國使用月/日/年格式,而英國使用日/月/年。有些國家在字段之間使用斜線,其他國家使用破折號或點;有些使用月份的名稱而不是數字。等等。
所以,定位是用於特定國家,而不是語言。但是,有些國家會講多種語言。這就是爲什麼一個本地化字符串有兩部分:第一部分是語言,第二部分是國家(例如de_BE,fr_BE,nl_BE,甚至是wa_BE)。
IMO令人困惑的部分是消息翻譯也是語言環境的一部分。對於某些語言而言,這是有道理的,例如葡萄牙語和葡萄牙語均使用葡萄牙語,但足以區分不同的翻譯文件(pt_PT vs pt_BR)。另一方面,就我所知,法語在世界各地都是99.99%,但爲法國,加拿大,瑞士,比利時和盧森堡複製相同的語言文件將會相當麻煩。因此,大多數程序員在構建多語言網站時將「語言」文件決定在一起,並將各個國家推到一起。 CakePHP有一個類似的halfbaked(如果你原諒雙關語......)方法:語言文件和本地化。
要回到您的文章:如果有關於本地化的討論,您應該使用'de_DE'風格字符串。當僅僅談論一種語言時,來自ISO 639:2的3個字母代碼應該起作用....它也可以幫助保持兩者不同。
來源
2013-10-30 00:46:25
JvO
請務必提及您的確切CakePHP版本! – ndm