Gettext:消息目录的不同路径
在一个使用gettext来支持国际化的Python应用中,我想把*.mo消息目录的路径改成po/language.mo
,而不是默认的localedir/language/LC_MESSAGES/domain.mo
。这样做是因为我想使用Launchpad的翻译界面,而这个界面需要这样的命名方式(至少我是这么理解的[1])。
不过,看了模块的文档后,我发现似乎没有办法在不修改gettext模块的情况下做到这一点。有没有什么“官方”的方法可以实现呢?
[1] https://help.launchpad.net/Translations/YourProject/Exports
编辑:想了一会儿,其实改变路径对Launchpad的集成并不是必须的,因为它只关心*.po文件,而不关心编译后的*.mo文件。不过,我的问题还是存在,因为如果应用能尽量少动系统目录就好了(特别是考虑到这是一个可以在*nix、Windows和OS X上运行的多平台应用)。
1 个回答
4
我之前问过同样的问题,关于PHP的部分,答案其实在于它背后的gettext这个API。你不能随便改变目录的路径。
这个目录结构是gettext规定好的。
因为很多不同的语言和不同的软件包需要存储,所以我们需要一种方法把这些信息添加到文件的消息目录中。在Unix环境中,通常的做法是把这些编码放在文件名里。这里也是这么做的。第二个参数中的目录名(或者默认目录),后面跟着语言区域、区域类别和域名,这些会组合在一起:
dir_name/locale/LC_category/domain_name.mo
了解更多信息可以查看:PHP Gettext: 如何在设置域的路径后更改默认的MO路径?