2

在使用 gettext 提供国际化支持的 Python 应用程序中,我想将 *.mo 消息目录的路径更改为po/language.mo而不是 default localedir/language/LC_MESSAGES/domain.mo,因为我想使用 Launchpad 的翻译接口,这需要这种命名方案(在至少据我所知[1])。

但是,在阅读了模块文档之后,我似乎无法在不对 gettext 模块进行猴子修补的情况下找到一种方法。有没有“官方”的方式来做到这一点?

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


编辑:想了想,Launchpad 集成实际上不需要更改路径,因为它只关心 *.po 文件,而不关心编译后的 *.mo 文件。不过,我的问题仍然存在,因为如果应用程序尽可能少地弄乱系统目录,那就太好了(特别是考虑到它是一个在 *nix、Windows 和 OS X 上运行的多平台应用程序)。

4

1 回答 1

4

我对 PHP 提出了同样的问题,但答案在于底层的 gettext api。无法更改目录的路径。

目录结构由 gettext 固定。

因为必须存储许多不同包的许多不同语言,我们需要一些方法将这些信息添加到文件消息目录文件中。通常在 Unix 环境中使用的方式是在文件名中使用这种编码。这也是在这里完成的。bindtextdomains 第二个参数(或默认目录)中给出的目录名称,后跟区域设置名称、区域设置类别和域名连接:

dir_name/locale/LC_category/domain_name.mo

见:PHP Gettext:设置域路径后如何更改默认MO路径?

于 2012-03-01T13:40:34.037 回答