我目前正在使用基於PHP的應用程序,並且已經到了將要使用多種語言的地步。使用多種自然語言處理最有效的方法
codeigniters自己的語言類是處理語言最有效的方法嗎? 在PHP應用程序中是否有任何特定的語言工具/庫?
謝謝!
我目前正在使用基於PHP的應用程序,並且已經到了將要使用多種語言的地步。使用多種自然語言處理最有效的方法
codeigniters自己的語言類是處理語言最有效的方法嗎? 在PHP應用程序中是否有任何特定的語言工具/庫?
謝謝!
我從來沒有使用CI_Language,但它似乎使用語言數組來做翻譯。
這種方法過於簡單的例子:
$trans = array(
'MAIN_TITLE' => 'Title Here'
);
echo $trans['MAIN_TITLE'];
個人而言,我覺得這真的很煩,因爲你再編輯觀點是堆滿了數組鍵名稱,而不是有用的文本。有時可能會很煩人。更何況,如果您在多個地方使用它們,則必須記住哪些鍵與哪些字符串相關。
我使用Gettext,我發現更容易。你只需要用翻譯方法包裝你的字符串:_()
。然後,一旦你完成了你的應用程序,你打開PoEdit並創建新的語言文件。 PoEdit將解析我的所有源文件,尋找包裝像這樣的字符串<?php echo _('Title here') ?>
,並將它們插入到.po語言文件中。然後,您可以通過字符串進行字符串轉換並在PoEdit中輕鬆翻譯文本。這樣做的好處是你在PoEdit中有源代碼翻譯,而不是在某些包含文件中的無意義陣列密鑰名稱
這一切都讓我的生活變得更加輕鬆,因爲我可以在每個星期五更新我的語言文件, 。任何新的或修改的翻譯將自動添加到我的語言文件中,並且任何未使用的翻譯將自動刪除。我將這些文件發送到我的3個國際分支進行翻譯,我的更改和更新的語言文件已準備好在週一早上部署。
您可能想看看php intl庫。 http://php.net/intl
謝謝你的回答,馬克。非常感激。你使用gettext的方法很有趣!我正在考慮做幾乎相同,但數據庫版本將被嚴重緩存,而不是根據請求更新。 – Industrial 2010-05-03 17:50:46
雖然並不是說你的解決方案很糟糕,但看到有關此問題的不同方法的更多示例真的很棒! – Industrial 2010-05-03 17:52:07
您可能想要下載ZF並查看Zend_Translate的各種適配器:http://framework.zend.com/manual/en/zend.translate.adapter.html瞭解其他一些想法。他們幾乎涵蓋了所有流行的本地化方法 – Mark 2010-05-03 18:42:57