通过 Babel 国际化 Python 2.6 应用程序

发布于 2024-09-02 15:53:35 字数 649 浏览 5 评论 0原文

我们正在 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 命令时,新创建的过时字符串会标有 #~ 前缀,但现有的过时消息字符串会被删除。

谢谢, 马尔科姆

[1] http://babel.edgewall.org/

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

[1] http://babel.edgewall.org/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

又怨 2024-09-09 15:53:36

默认情况下,pybabel extract 识别以下关键字:_gettextngettextugettext >、ungettextdgettextdngettextN_。使用 -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 use n_ = ngettext try pybabel extract -k n_:1,2 ....

谁许谁一生繁华 2024-09-09 15:53:36

回答问题 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 set Project-Id-Version via the --project and --version options.

If you run Babel via setup.py extract_messages, then Project-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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文