2012-04-11 77 views
0

由於Cake的「內置」本地化功能的出色評論,我在CakePHP 2.1.x中構建了一個雙語言應用程序。然而,我正在努力獲得這個強大的功能。CakePHP 2.1中的國際化和本地化

我知道,這個話題已經被解決了蛋糕的早期版本(herehereherehere),但一直沒有解決的蛋糕2.x的我還引用了食譜這些文章(是的,我讀過的手冊):

夫婦的事情 - 我不想做單獨的子域爲每種語言。相反,我更喜歡基於URL的語言切換,只需點擊一個按鈕(在這種情況下,是一個標誌圖標)。該網站將被積極維護,因此內容需要動態更新。要求客戶維護兩個獨立的站點/數據庫是不可能的。

我爲我的PostModel設置了翻譯行爲,但我不知道它是否正常工作。我還通過在控制檯中運行I18n初始化了I18n,確認了數據庫表的存在,設置了我的.po文件,並將我的所有內容都包含在__()中。但是,當我將我的瀏覽器中的默認語言更改爲法語時,該網站仍然是英語。

我試過了P28n組件,但我認爲它已經過時了Cake 2.x.我也基於這個nuts-and-bolts-of-cakephp article嘗試了基於URL的語言切換,但顯然它與新的CakePHP API不兼容。

任何人都可以指導我使用CakePHP 2.x的教程或指令嗎?這裏還沒有引用一個?

更新:我找到這篇文章:http://www.localizingjapan.com/blog/2011/11/10/localizing-a-cakephp-application/comment-page-1/#comment-7467。有誰知道你在哪裏放置代碼CakeSession::write('Config.language', 'fre');setlocale("LC_ALL", "fr_FR.utf8");

回答

0

只需將代碼放在AppController :: beforeFilter()中,然後根據提交請求或部分URL從檢索語言中設置值。

+0

謝謝,burzum!這裏是我在AppController中的'beforeFilter()': 'public function beforeFilter(){ \t parent :: beforeFilter(); \t CakeSession :: write('Config.language','fre'); \t setlocale(「LC_ALL」,「fr_FR.utf8」); \t $ this-> Auth-> allow('index','view','home','display','logout'); }' – deewilcox 2012-04-12 13:26:02

+0

到目前爲止,這似乎對網站沒有任何影響。這裏是URL:puzzle.leadingedgecommunications.net。另外,我希望區域設置可以通過單擊按鈕進行更改。我怎麼做? – deewilcox 2012-04-12 13:28:13

+0

問題出在我的.po文件上。我也最終不需要setlocale()。 – deewilcox 2012-04-12 21:44:42