问题标签 [python-babel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1441 浏览

python - 使用 python gae、babel 和 i18n 进行国际化。无法输出正确的字符串

在 messages.po 文件中。

"Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2013-01-19 19:26+0800\n" "PO-修订日期:2013-01-19 19:13+0800\n" "最后译者:全名 \n" "语言团队:en_US \n" "复数形式:nplurals=2;复数=(n ! = 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9 .6\n"

#~ msgstr "Hello-World"

#~ msgstr "Hello World"

在处理程序中:

在 html 文件中:

当导航到网页时,它返回字符串“Hello-World”而不是“Hello World”。我不知道怎么了。任何人都可以帮忙吗?

0 投票
0 回答
655 浏览

python - 带有棺材扩展的 Babel 和 jinja2

我正在尝试使用命令行工具用 Babel 翻译 jinja2/coffin 模板。问题是函数 babel_extract 卡在 {% url %} 或 {% csrf_token %} 等棺材标签上。

首先,为了检测问题,我修改了 jinja.ext.babel_extract 并在渲染时在异常上添加了“print e”。

当我使用 Babel 运行 extract 方法时,它会打印出以下错误:

然后我编辑了我的 babel 配置以添加棺材库。我还设置了环境变量以将我的 django 项目添加到我的 python 路径并将 django 设置模块设置为我的 settings.py。

现在,当我运行 extract 方法时,会发生此错误:

extracting messages from templates/brands.html (extensions="coffin.template.Library", encoding="utf-8") Traceback (most recent call last): File "/usr/local/bin/pybabel", line 9, in <module> load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')() File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 1107, in main return CommandLineInterface().run(sys.argv) File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 651, in run return getattr(self, cmdname)(args[1:]) File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 912, in extract for filename, lineno, message, comments in extracted: File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 171, in extract_from_dir strip_comment_tags): File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 201, in extract_from_file strip_comment_tags)) File "/Library/Python/2.7/site-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 275, in extract for lineno, funcname, messages, comments in results: File "/Library/Python/2.7/site-packages/jinja2/ext.py", line 588, in babel_extract auto_reload=False File "/Library/Python/2.7/site-packages/jinja2/environment.py", line 279, in __init__ self.extensions = load_extensions(self, extensions) File "/Library/Python/2.7/site-packages/jinja2/environment.py", line 76, in load_extensions result[extension.identifier] = extension(environment) TypeError: __init__() takes exactly 1 argument (2 given)

0 投票
1 回答
944 浏览

python - setup.py 中 Babel 的 message_extractors 配置:元组中的第三个参数

我想开始在我的 Python 项目中使用Babel 。setup.py根据文档,我有以下内容:

一切正常。现在我想知道第三个参数(设置为None)是什么意思以及我可以传入什么(只是为了了解它)。我查看了Babel 文档,但找不到任何东西,但我在 Babel 的Mako 文档中看到了这一点:

我想知道:这个input_encoding选项看起来像是你可以通过那里的东西。由于我在所有 Python、我的模板等中使用 Unicode 和 UTF-8。我认为这可能是一个需要指定的有效选项(也许这是一个隐含的假设,我不知道)。

所以现在我正在寻找记录这种行为的东西,但即使是我发现的 Babel 文档的一部分也没有说明第三个参数是什么。

请通过分享一些详细解释这一点的有用链接来启发我。先感谢您。

更新:我发现最后一个参数似乎是一个dict选项,可能传递给扩展(例如mako)。当我将最后一个参数设置为None抱怨消失时。因此,虽然这似乎是答案,但我仍在寻找有关此的文档。{'input_encoding': 'utf-8'}mako.exceptions.CompileExceptionUnicode decode operation of encoding 'ascii' failed

0 投票
1 回答
727 浏览

python - pybabel 配置文件中的黑名单 jinja2 自定义标签

我正在使用 pybabel 翻译模板中的措辞。模板由 jinja2 处理。我创建了一个 jinja2 扩展来自动生成我的面包屑。但是,现在不可能用 babel 提取措辞:

结果是:

(我调试了通天蛋)。

我知道问题的根源:从命令行提取措辞时,我的面包屑扩展未加载到 babel 中。有人知道如何加载它或如何在 babel conf 文件中将标签声明为黑名单吗?

非常感谢!!

0 投票
1 回答
222 浏览

python - 尝试在 Ubuntu 上设置 Rhode Code 并遇到

按照此处列出的有关如何设置罗德代码的说明进行操作:

http://pythonhosted.org/RhodeCode/setup.html

我正处于应该使用命令的步骤:

我遇到了以下错误:

我的系统上安装了 babel,但由于某种原因,贴纸无法识别它。


有什么想法吗?

系统信息:

Ubuntu 12.04.1 LTS

EC2 微实例

0 投票
3 回答
4005 浏览

python - 获取 Jinja2 的当前语言环境

在我的网站上使用 Flask + Jinja2 和 Flask-Babel 进行翻译。该站点有两种语言(取决于 URL),我想添加一个链接以在它们之间切换。要正确执行此操作,我需要获取当前语言环境的名称,但我在文档中没有找到这样的功能。它存在吗?

0 投票
1 回答
466 浏览

python - 如何在 python 中以长、圆整和本地化的格式打印任何浮点数,如 1.234e22?

关于浮点格式存在一些现有问题,但我认为没有一个回答以下问题。

我正在寻找一种以长、圆润且本地化的格式打印大型浮点数的方法:

不幸的是,magic_format不存在。;-) 我该如何实现它?

细节

这里有几种打印浮点数的方法。它们都没有产生上述输出:

失败:要么我得到简短版本,要么得到非分组非本地化非舍入输出。

顺便说一句,我知道 1.234e22 不能完全存储为浮点数,存在必要的舍入误差(这解释了上面的奇数输出)。但是由于str,repr并且"%g" % x能够正确地将其四舍五入到适当的值,我希望有相同的友好四舍五入的数字,但采用长且本地化的形式。

现在让我们尝试本地化...

更近,但不行。我仍然有恼人的舍入错误,而且法语本地化很糟糕,它根本不允许分组。

所以让我们使用优秀的Babel库,也许它可以做我想做的一切:

哇,真的很近。他们甚至使用牢不可破的空间进行法语分组,我喜欢它。真是太糟糕了,他们仍然有四舍五入的问题。

嘿!?如果我使用python Decimals怎么办?

没有。我可以得到我想要的数字的精确表示Decimal("%g" % x),但是每当我尝试显示它时,它要么很短,要么在打印之前转换为错误的浮点数。

但是如果我将 Babel 和 Decimals 混合在一起呢?

哎哟。但是 Babel 有一个名为 的函数format_decimal,让我们用它来代替:

糟糕,format_decimal无法格式化 python 小数。:-(

好的,最后一个想法:我可以尝试转换为long.

是的!我有我想要格式化的确切数字。让我们把它交给 Babel:

哦,不......显然Babel在尝试格式化之前将其转换long为a 。float我不走运,也没有想法。:-(

如果您认为这很难,请尝试回答相同的问题x = 1.234e-22。到目前为止,我只能打印简短形式1.234e-220.0

我更喜欢这个:

我可以想象编写一个"1.234e-22"可以很好地解析和格式化它的小函数,但是我必须了解所有关于数字本地化的规则,而且我宁愿不重新发明轮子,Babel 应该这样做。我应该怎么办?

谢谢你的帮助。:-)

0 投票
2 回答
1143 浏览

python - python gettext同时使用不同的语言

我正在使用烧瓶,pybabel for i18n。有时我需要向我的用户发送电子邮件。我想用他们自己的语言发送电子邮件。语言代码存储在数据库中,所以问题是用正确的语言翻译模板。这是我的发送功能的一部分:

和模板的例子:

set_langauge(lang)我需要的只是在每个模板渲染之前可以调用的东西。我该怎么做?

谢谢。

0 投票
2 回答
367 浏览

python - 如何获得 Babel 知道的所有字符串的列表?

我有一个应用程序,其中主要字符串是英文的,然后像往常一样(使用 Flask 和 Flask-Babel)在各种 .po/.mo 文件中进行各种翻译。是否可以在我的 Python 代码中的某处获取所有英文字符串的列表?具体来说,我想在网站上有一个管理界面,让某人登录并选择要在某个地方使用的任意短语,而无需查看实际的 Python 代码或 .po/.mo 文件。这句话可能会随着时间而改变,但需要翻译,所以它需要是 Babel 知道的东西。

我确实可以访问实际的 .pot 文件,所以我可以解析它,但如果可能的话,我希望有一个更干净的方法。

0 投票
2 回答
5547 浏览

python - 如何在烧瓶外使用 jinja2 及其 i18n 扩展(使用 babel)

如何在烧瓶应用程序之外使用 jinja2 和 babel。假设我有使用 pybabel 命令填充的语言环境目录。我想加载翻译文件并翻译我的模板文件。