Gettext:消息目录的不同路径

2 投票
1 回答
913 浏览
提问于 2025-04-17 02:55

在一个使用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路径?

撰写回答