2010-04-30 87 views
12

我目前正在使用基於PHP的應用程序,並且已經到了將要使用多種語言的地步。使用多種自然語言處理最有效的方法

codeigniters自己的語言類是處理語言最有效的方法嗎? 在PHP應用程序中是否有任何特定的語言工具/庫?

謝謝!

回答

12

我從來沒有使用CI_Language,但它似乎使用語言數組來做翻譯。

這種方法過於簡單的例子:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

個人而言,我覺得這真的很煩,因爲你再編輯觀點是堆滿了數組鍵名稱,而不是有用的文本。有時可能會很煩人。更何況,如果您在多個地方使用它們,則必須記住哪些鍵與哪些字符串相關。

我使用Gettext,我發現更容易。你只需要用翻譯方法包裝你的字符串:_()。然後,一旦你完成了你的應用程序,你打開PoEdit並創建新的語言文件。 PoEdit將解析我的所有源文件,尋找包裝像這樣的字符串<?php echo _('Title here') ?>,並將它們插入到.po語言文件中。然後,您可以通過字符串進行字符串轉換並在PoEdit中輕鬆翻譯文本。這樣做的好處是你在PoEdit中有源代碼翻譯,而不是在某些包含文件中的無意義陣列密鑰名稱

這一切都讓我的生活變得更加輕鬆,因爲我可以在每個星期五更新我的語言文件, 。任何新的或修改的翻譯將自動添加到我的語言文件中,並且任何未使用的翻譯將自動刪除。我將這些文件發送到我的3個國際分支進行翻譯,我的更改和更新的語言文件已準備好在週一早上部署。

+0

謝謝你的回答,馬克。非常感激。你使用gettext的方法很有趣!我正在考慮做幾乎相同,但數據庫版本將被嚴重緩存,而不是根據請求更新。 – Industrial 2010-05-03 17:50:46

+0

雖然並不是說你的解決方案很糟糕,但看到有關此問題的不同方法的更多示例真的很棒! – Industrial 2010-05-03 17:52:07

+1

您可能想要下載ZF並查看Zend_Translate的各種適配器:http://framework.zend.com/manual/en/zend.translate.adapter.html瞭解其他一些想法。他們幾乎涵蓋了所有流行的本地化方法 – Mark 2010-05-03 18:42:57