2012-04-06 49 views
5

我在視圖中使用<?php echo __("this is my string"); ?>來顯示多種語言的文本。我創建了德語的.po文件目錄:CakePHP 2.1 .po文件/翻譯不起作用

=>應用程序/地點/ GER/LC_MESSAGES/default.po

MSGID 「這是我的字符串」

msgstr「死IST MEINE zeichenkette」

當我添加Configure::write('Config.language','ger');我AppController.php beforeFilter功能文本仍然‘這是我的字符串’。即使我用不同的msgstr爲英文創建.po,文本仍然保持不變。

我必須更改特定設置才能激活翻譯嗎?


我有一個跟進的問題:我添加Configure::write('Config.language','eng');core.php中設置我的默認語言,但現在我不能改變的價值,即使我嘗試在重寫它AppController.php beforeFilter有:

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中

回答

8

你可以看一下,將文件lib /蛋糕/ -I18N/L10n.php,知道如何調用每種語言。德國

設置:

Configure::write('Config.language','de'); 

=>應用程序/地點/申/ LC_MESSAGES/default.po

+0

感謝與L10n.php文件提示,我會用於未來的參考。 – 2012-04-06 22:27:20

+0

謝謝,看看cakePhp的核心,幫助我理解。 – 2012-04-06 22:35:17

6

其「 deu「不是」ger「

CakePHP使用官方(T)c從http://www.loc.gov/standards/iso639-2/php/code_list.php頌歌,爲CakePHP的1.3是Internationalizing Your Application下記載:

三個字符的區域設置代碼符合標準ISO 639-2,但如果創建的區域語言區域(en_us,EN_GB等),如果蛋糕會使用它們適當。

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  | 
+1

啊,現在它的工作原理。對我來說不是很明顯,我必須使用文件中的「T」值,太糟糕了,因爲我認爲很多其他CakePHP用戶可能不知道這一點。 – 2012-04-06 22:26:44

+0

感謝您的回答!我只能將其中一個標記爲正確的答案,因爲引用了L10n文件,所以我拿了del_dan的一個。 – 2012-04-06 22:28:19

+1

沒問題。至於文檔:你可以通過推送到github代表參與:https://github.com/cakephp/docs - 所以你可以把丟失的信息。 – mark 2012-04-06 22:29:12