通过 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 cfg 文件来做到这一点,但我一直无法找到有关 Babel cfg 文件格式的文档。
“项目 ID 版本:项目版本\n” "Language-Team: en_US \n"
3) 有没有办法在我们的 PO 文件中保留“过时的”msgid/msgstr?当我使用 Babel update 命令时,新创建的过时字符串会标有 #~ 前缀,但现有的过时消息字符串会被删除。
谢谢, 马尔科姆
We're evaluating Babel 0.9.5 [1] under Windows for use with Python 2.6 and have the following questions that we we've been unable to answer through reading the documentation or googling.
1) I would like to use an _ like abbreviation for ungettext. Is there a concencus on whether one should use n_ or N_ for this?
n_ does not appear to work. Babel does not extract text.
N_ appears to partially work. Babel extracts text like it does for gettext, but does not format for ngettext (missing plural argument and msgstr[ n ].)
2) Is there a way to set the initial msgstr fields like the following when creating a POT file?
I suspect there may be a way to do this via Babel cfg files, but I've been unable to find documentation on the Babel cfg file format.
"Project-Id-Version: PROJECT VERSION\n"
"Language-Team: en_US \n"
3) Is there a way to preserve 'obsolete' msgid/msgstr's in our PO files? When I use the Babel update command, newly created obsolete strings are marked with #~ prefixes, but existing obsolete message strings get deleted.
Thanks,
Malcolm
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
默认情况下,
pybabel extract
识别以下关键字:_
、gettext
、ngettext
、ugettext
>、ungettext
、dgettext
、dngettext
、N_
。使用-k
选项 添加其他的。N_
通常用于 NULL 翻译 (也称为延迟翻译)。更新:
-k
选项可以列出要放入目录中的函数的参数。因此,如果您使用n_ = ngettext
,请尝试pybabel extract -k n_:1,2 ...
。By default
pybabel extract
recognizes the following keywords:_
,gettext
,ngettext
,ugettext
,ungettext
,dgettext
,dngettext
,N_
. Use-k
option to add others.N_
is often used for NULL-translations (also called deferred translations).Update: The
-k
option can list arguments of function to be put in catalog. So, if you usen_ = ngettext
trypybabel extract -k n_:1,2 ...
.回答问题 2):
如果您通过
pybabel extract
运行 Babel,您可以通过--project
和 <代码>--版本选项。如果您通过 setup.py extract_messages 运行 Babel,则从发行版中获取 Project-Id-Version(setup.py 文件中的项目名称和版本)。
这两种方式还支持用于设置 POT 元数据的选项
--msgid-bugs-address
和--copyright-holder
。To answer question 2):
If you run Babel via
pybabel extract
, you can setProject-Id-Version
via the--project
and--version
options.If you run Babel via
setup.py extract_messages
, thenProject-Id-Version
is taken from the distribution (project name and version in the setup.py file).Both ways also support the options
--msgid-bugs-address
and--copyright-holder
for setting the POT metadata.