我们正在评估Windows下的Babel 0.9.5 [1]与Python 2.6一起使用,并提出以下问题,我们通过阅读文档或谷歌搜索无法回答这些问题。
1)我想对ungettext使用_ like缩写。关于是否应该使用n_或N_,是否有一个概念?
n_似乎不起作用。 Babel不提取文本。
N_似乎部分有效。 Babel像gettext一样提取文本,但不为ngettext格式化(缺少复数参数和msgstr [n]。)
2)有没有办法在创建POT文件时设置如下的初始msgstr字段?
我怀疑可能有办法通过Babel cfg文件执行此操作,但我一直无法找到有关Babel cfg文件格式的文档。
“Project-Id-Version:PROJECT VERSION \ n” “语言团队:en_US \ n”
3)有没有办法在我们的PO文件中保留“过时的”msgid / msgstr?当我使用Babel update命令时,新创建的过时字符串标有#〜前缀,但现有的过时消息字符串会被删除。
谢谢, 马尔科姆
答案 0 :(得分:8)
默认情况下,pybabel extract
会识别以下关键字:_
,gettext
,ngettext
,ugettext
,ungettext
,dgettext
,dngettext
,N_
。使用-k
option添加其他人。 N_
通常用于NULL-translations(也称为延迟翻译)。
更新:-k
选项可以列出要放入目录的函数的参数。因此,如果您使用n_ = ngettext
尝试pybabel extract -k n_:1,2 ...
。
答案 1 :(得分:1)
回答问题2):
如果您通过pybabel extract
运行Babel,则可以通过Project-Id-Version
和--project
选项设置--version
。
如果您通过setup.py extract_messages
运行Babel,则会从分发中获取Project-Id-Version
(项目名称和setup.py文件中的版本)。
这两种方式还支持用于设置POT元数据的选项--msgid-bugs-address
和--copyright-holder
。