2011-09-23 49 views
2

在使用gettext提供國際化支持的Python應用程序中,我希望將* .mo消息目錄的路徑更改爲po/language.mo而不是默認的localedir/language/LC_MESSAGES/domain.mo,因爲我希望使用Launchpad的翻譯界面,這需要這個命名方案(至少據我瞭解[1])。Gettext:消息目錄的不同路徑

但是,在閱讀完模塊文檔後,我似乎無法找到一種方法來在沒有對gettext模塊進行猴修補的情況下執行此操作。有沒有一種「官方」方式來做到這一點?

[1] https://help.launchpad.net/Translations/YourProject/Exports


編輯: 約了一段時間的思考,改變路徑不是Launchpad的整合確有必要的,因爲它只關心* .po文件,而不是編譯* .mo文件。 雖然我的問題仍然存在,因爲如果應用程序儘可能少地與系統目錄混淆(尤其是考慮到它是在* nix,Windows和OS X上運行的多平臺應用程序),那將會很不錯。

回答

3

我對PHP提出了同樣的問題,但答案在於底層gettext api。無法更改目錄的路徑。

目錄結構由gettext修復。

由於許多不同的包需要存儲許多不同的語言,所以我們需要一些方法將這些信息添加到文件消息目錄文件中。 Unix環境中通常使用的方式是在文件名中使用這種編碼。這也是在這裏完成的。在bindtextdomains第二個參數給出的目錄名稱(或默認目錄),其次是語言環境,locale類別和域名的名字被級聯:

DIR_NAME /區域/ LC_category/domain_name.mo

參見:PHP Gettext: how to change the default MO path after setting the path of the domain?

+0

這是偉大的知道,雖然與WordPress,它允許你這樣做的任何目錄不一致: DIR_NAME/domain-xx_XX.mo – daveagp