问题标签 [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.
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”。我不知道怎么了。任何人都可以帮忙吗?
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)
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.CompileException
Unicode decode operation of encoding 'ascii' failed
python - pybabel 配置文件中的黑名单 jinja2 自定义标签
我正在使用 pybabel 翻译模板中的措辞。模板由 jinja2 处理。我创建了一个 jinja2 扩展来自动生成我的面包屑。但是,现在不可能用 babel 提取措辞:
结果是:
(我调试了通天蛋)。
我知道问题的根源:从命令行提取措辞时,我的面包屑扩展未加载到 babel 中。有人知道如何加载它或如何在 babel conf 文件中将标签声明为黑名单吗?
非常感谢!!
python - 尝试在 Ubuntu 上设置 Rhode Code 并遇到
按照此处列出的有关如何设置罗德代码的说明进行操作:
http://pythonhosted.org/RhodeCode/setup.html
我正处于应该使用命令的步骤:
我遇到了以下错误:
我的系统上安装了 babel,但由于某种原因,贴纸无法识别它。
有什么想法吗?
系统信息:
Ubuntu 12.04.1 LTS
EC2 微实例
python - 获取 Jinja2 的当前语言环境
在我的网站上使用 Flask + Jinja2 和 Flask-Babel 进行翻译。该站点有两种语言(取决于 URL),我想添加一个链接以在它们之间切换。要正确执行此操作,我需要获取当前语言环境的名称,但我在文档中没有找到这样的功能。它存在吗?
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-22
或0.0
!
我更喜欢这个:
我可以想象编写一个"1.234e-22"
可以很好地解析和格式化它的小函数,但是我必须了解所有关于数字本地化的规则,而且我宁愿不重新发明轮子,Babel 应该这样做。我应该怎么办?
谢谢你的帮助。:-)
python - python gettext同时使用不同的语言
我正在使用烧瓶,pybabel for i18n。有时我需要向我的用户发送电子邮件。我想用他们自己的语言发送电子邮件。语言代码存储在数据库中,所以问题是用正确的语言翻译模板。这是我的发送功能的一部分:
和模板的例子:
set_langauge(lang)
我需要的只是在每个模板渲染之前可以调用的东西。我该怎么做?
谢谢。
python - 如何获得 Babel 知道的所有字符串的列表?
我有一个应用程序,其中主要字符串是英文的,然后像往常一样(使用 Flask 和 Flask-Babel)在各种 .po/.mo 文件中进行各种翻译。是否可以在我的 Python 代码中的某处获取所有英文字符串的列表?具体来说,我想在网站上有一个管理界面,让某人登录并选择要在某个地方使用的任意短语,而无需查看实际的 Python 代码或 .po/.mo 文件。这句话可能会随着时间而改变,但需要翻译,所以它需要是 Babel 知道的东西。
我确实可以访问实际的 .pot 文件,所以我可以解析它,但如果可能的话,我希望有一个更干净的方法。
python - 如何在烧瓶外使用 jinja2 及其 i18n 扩展(使用 babel)
如何在烧瓶应用程序之外使用 jinja2 和 babel。假设我有使用 pybabel 命令填充的语言环境目录。我想加载翻译文件并翻译我的模板文件。