2010-09-21 249 views
10

我目前正在研究將i18n集成到項目中的最佳方法。PHP國際化

有幾種方法我想這樣做,首先是一個數據庫方案來存儲字符串和相關的區域設置,但問題是,它不會很容易選擇字符串,因爲我不喜歡執行quesries像這樣:

SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543 

或者

SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello' 

下一個方法是將它們存儲文件,如locales/en_gb/login/strings.php內,然後嘗試,並通過專門開發的,像這樣的類來訪問它們:

$Language = Registry::Construct('Language',array('en_GB')); 
echo $Language->login->strings->hello; 

這樣做的問題是,我將不得不建立一個將更新通過管理面板女巫這些文件是非常耗費時間,不只是建設系統來管理字符串,但實際管理中的字符串作爲一個系統網站的發展

  • 還有什麼其他的方法有哪些,這將是一個龐大的系統
  • 有益是否有任何自動化的方式做「翻譯」這樣
  • 我應該堅持一個數據庫的方法,並建立一個系統爲用戶翻譯stri與評價/建議更好的版本?
  • 你過去試過哪些系統,我應該看看它們還是完全避免它們。
+0

你試過gettext()嗎? – fabrik 2010-09-21 13:03:51

+0

你最終做了什麼?我有類似的問題。 – Sunny 2010-12-12 17:40:37

回答

5

我已經實現了一個XML轉換實用程序作爲更大項目的一部分。你可以找到它here,樣本翻譯文件是here(en_US)。

+0

它有UnitTests嗎? – Gordon 2010-09-21 13:18:31

+1

他們還沒有comitted。這個項目是比較新的,所以我正在構建框架。 UnitTests將在未來幾天內發佈。 – halfdan 2010-09-21 13:21:12

+0

太棒了,我喜歡XML形式,而不是使用諸如數組/對象之類的東西,使得深度更加簡單:) +1 – RobertPitt 2010-09-21 13:26:47

4

最令人印象深刻的研究方法是Drupal的實現。其次,將是Wordpress。都使用gettext和.pot/.po/.mo進行本地化。而且,好處是有一個漂亮的開源.po編輯器叫做Poedit。它適用於Windows系統用戶,這提供了更廣泛的吸引力。它也適用於Mac和Linux。看看這裏:http://www.poedit.net/