问题标签 [flask-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 投票
1 回答
189 浏览

flask - 使用 Flask-Babel 从 Jinja2 模板中的列表翻译元素

我有一个 Jinja2 模板,菜单项在 Jinja2 列表中定义,如下所示:

稍后在模板中我有一个 for 循环:

我应该如何在我的示例中使用 {% trans %} 或 {{ gettext() }} 来正确翻译菜单项?我尝试将 {% trans %} 放在 for 循环中,但没有成功。有没有办法翻译模板中定义的列表元素?

0 投票
1 回答
165 浏览

python - 如何在枚举中使用 Flask-Babel?

在 Jinja 模板语法_()_l()作品中。但是当我使用 an 时,Enum该值不会被翻译。我必须做什么?

0 投票
1 回答
825 浏览

python - KeyError: 'babel' - 与 __init__.py 相关 - 未明确使用 Babel

几个小时以来,我一直遇到同样的错误,无论我做了什么代码更改,而且它引用了 Babel,这是我没有专门调用或使用的依赖项,尽管我认为它被调用是有原因的。它来自一个应该用来flask-table动态呈现一些 HTML 以制作表格的函数。

在基本层面上,错误似乎是:它正在寻找一个密钥babelcurrent_app.extensions没有找到它。

我尝试flask-table通过pip(它有 Babel 作为依赖项)重新安装,它是最新的,我也尝试Babel直接重新安装,以防万一,它也是最新的。这是 Python 3.6。

在该错误的第 15-25 行中,还有一些更具体的引用args和特定于我的代码的导入,但是如果我在控制台中运行相同的代码,那很好,可以按预期工作。只是当我把它放在 Flask 中时它不起作用。其余的应用程序和路由正常运行,只有当POSTcheckin_home收到上面的 500 错误时。

从我能够做的研究来看,它似乎与__init__.py给定目录中的“应用程序上下文”处理方式有关,但老实说,我真的不知道这意味着什么或如何解决它. 我所知道的是它是模块中的一个文件来告诉python它们是模块。我有另一个 Flask 应用程序,它可以在相同的环境中呈现类似的 HTML 表,并且可以正常工作。

我可以发布代码的近似值,但这需要对敏感信息进行大量混淆,所以在我这样做之前,我想知道这是否可能是我没有看到的简单事情。

0 投票
1 回答
220 浏览

python - 如何使用 Flask-Babel 在 flask_wtf 中本地化 QuerySelectField 返回的数据

我想使用 Flask-Babel 本地化应用程序中的内容。现在我了解了 Flask-Babel 的工作原理以及它用于本地化静态内容的方式。

我使用 Flask-wtf 创建了许多表单,它们使用 QuerySelectField 从数据库中获取数据。这是具有 QuerySelectField 的注册表单。

无论如何,可以使用 babel 将国家/地区值本地化,而不必在数据库中以不同语言存储国家/地区吗?

0 投票
2 回答
939 浏览

python - How do I add a link to change and keep a new language using babel and flask?

I have setup Babel correctly and the translation work as intended. What I am stuck with is to be able to switch languages using a link and than keep that setting active even if the user click on any other links on the web page.

This is what my setup looks like:

This works as expected and a new user is greeted with the 'en' version of the web page. I am able to manually switch by typing '/?lang=sv' or '/?lang=en' after the address in the search field, but how do I do it with a link?

This is probably basic but I do not understand how to do it based on their documentation. Also this is the first time for me so it feels like I have taken water over my head.

0 投票
1 回答
42 浏览

html - 如何在 Flask 中国际化标题?

我正在尝试将烧瓶网页国际化,并且我做了所有变量,但无法成功将标题国际化。

我的代码如下:

我已经尝试过了:

和这个:

他们都没有工作。你能帮助我吗?

0 投票
1 回答
576 浏览

python - Flask-Babel 在登录页面上不起作用

我有一个使用Flask-Babel模块的Flask/Dash应用程序。登录并浏览页面后,翻译就像一个魅力。但是,我无法使其适用于始终以英文显示的登录页面。和都包含我为登录页面准备的翻译字符串,因此编译部分似乎工作正常。messages.pomessages.mo

这是我的一个片段app.py(带有硬编码的西班牙语选择):

setup_login(...)下面是上面调用的方法的一部分。在 Flask-Babel 与应用程序挂钩之后,我想注意到app.server从上面的代码传递给它(真的不知道这是否很重要):

我尝试了什么:再次为 Dash() 实例连接 Flask-Babel login_app,但这不起作用(无论如何它仍然是相同的app.server)。

我遇到过类似问题的这个 SO question,但它似乎特定于 Flask-Security 模块(不是我的情况)。

我缺少什么来翻译登录页面?

0 投票
1 回答
86 浏览

python - 如何结合 Pelican 上编写的本地化站点的两种机制?

我对本地化站点使用两种机制: 1. 我在 index.html 中使用标准模板标签 {{ gettext 'some_text'}} 2. 我编写了自定义 jinja 扩展,它根据使用的语言获取 markdown 文件的内容地点。

我使用 Babel 创建 messages.pot 文件,然后创建 Massages.po 文件。

我在 babel.cfg 中有这个 babel 配置:

这是我的自定义 jinja 扩展 - custom_jinja_extension.py :

我使用这个模板标签 -{% include_markdown 'slide3.md' %}{% endinclude_markdown %} 在我的 pelicanconf.py 中,我为 jinja 扩展添加了这样的字符串:

当我运行命令时:

我收到这个错误

jinja2.exceptions.TemplateSyntaxError:遇到未知标签“include_markdown”。Jinja 正在寻找以下标签:'endblock'。需要关闭的最里面的块是“块”。

当我删除所有使用自定义模板标签时,gettext 效果很好。我做错了什么?

0 投票
0 回答
287 浏览

python-3.x - @babel.localselector 未调用

我在使用 Flask Babel 和 python3.6 时遇到问题。

我的代码如下:

我没有在控制台上打印任何内容。我不知道我做错了什么。

我的应用程序在同一文件中按以下方式启动:

在我的配置文件中,与 Babel 相关的所有内容如下:

在寻找一些解决方案时,我还尝试了注释行。

我能够使用 pybabel 并创建我的.pot, .po, .mo, 文件。我为“de”创建了我的翻译

我没有找到任何关于为什么我的print声明没有执行的信息。当我手动创建 acontext_processor并调用 myget_locale()时,打印语句按预期显示。

如果您需要更多调试信息,请告诉我。

更新:调用 gettext 的代码示例

在视图内部,我将其称为例如:

或者

在 Jinja2 中:

0 投票
2 回答
485 浏览

python - Flask,Jinja2,“$”字符上的 Babel 错误

我已将我的代码从 webapp2 迁移到 Flask。(我在 Google App Engine 中部署我的代码)

但是,我不能再使用这个字符串:"Error: Max %1$d characters"

初始化

html模板

我知道这不是最好的用途,但我需要保留 %1$d 作为占位符。(它与 webapp2 一起工作)

日志:

我已经尝试在 HTML 模板中的“_('error_long_value')”之后使用“| e”或“| safe”,删除了 replace()。