通过Babel对Python 2.6应用进行国际化
我们正在Windows上评估Babel 0.9.5 [1],准备和Python 2.6一起使用,但有一些问题通过阅读文档或在网上搜索都没能找到答案。
1) 我想用一个带下划线的缩写来代替ungettext。大家有没有统一的看法,应该用n_还是N_呢?
n_似乎不太管用,Babel没有提取文本。
N_看起来部分有效。Babel提取文本的方式和gettext一样,但没有为ngettext格式化(缺少复数参数和msgstr[ n ])。
2) 在创建POT文件时,有没有办法像下面这样设置初始的msgstr字段?
我怀疑可能可以通过Babel的配置文件来实现,但我找不到关于Babel配置文件格式的文档。
"Project-Id-Version: PROJECT VERSION\n" "Language-Team: en_US \n"
3) 有没有办法在我们的PO文件中保留“过时”的msgid/msgstr?当我使用Babel的更新命令时,新创建的过时字符串会被标记为#~前缀,但已有的过时消息字符串却被删除了。
谢谢,
Malcolm
2 个回答
1
关于问题2的回答:
如果你通过 pybabel extract
来运行Babel,你可以使用 --project
和 --version
这两个选项来设置 Project-Id-Version
。
如果你是通过 setup.py extract_messages
来运行Babel,那么 Project-Id-Version
会从你的项目分发包中获取,也就是在setup.py文件里的项目名称和版本。
这两种方法都支持 --msgid-bugs-address
和 --copyright-holder
这两个选项,用来设置POT的元数据。