问题标签 [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 投票
2 回答
2743 浏览

python - flask-babel:如何翻译变量

我正在使用 flask-babel 来翻译基于 Flask 的 Web 应用程序。我真的很想知道如何翻译变量的内容,比如foo.

我尝试{{ _(foo) }},但是当我.po像这样更新文件时:

没有任何内容用于翻译foovar 的内容。

常量字符串一切正常,例如{{ _("goo")}}.

0 投票
1 回答
408 浏览

python - 在 Jinja2 中使用带有 babel 的链接

目前我正在将 Flask 和 Jinja2 与 Babel 结合使用。到目前为止,一切都很好。

我面临的唯一问题是在翻译文本中使用链接时。假设我们在 HTML 中有以下内容:

我将如何将它与 babel 结合使用?

我一直在考虑以下代码,但是当翻译语言中的单词顺序不同时,这会出现问题。

另一个想法是将整个 HTML 放入要翻译的字符串中,但是我不能再使用字符串转义了。

这样做的首选方法是什么?

0 投票
0 回答
53 浏览

python - Flask - Babel - 崩溃的变音符号

我需要使用 Babel 或 Babelex 为 Flask 应用程序创建翻译。

跑:

...成功,创建messages.pot.

在文件messages.pot中有更改:

然后我创建一个.po文件。

*.po文件内容为:

翻译后的文件坏了,所有文件都是 UTF-8。当我将文件编译*.po*.mo文件时,它是一样的。

0 投票
1 回答
1084 浏览

javascript - 如何在javascript上使用flask-babel进行翻译?

我有一个带有 jinja 模板和 flask-babel 运行良好的 python 项目。我的问题是javascript文件。我将所有 js 文件放在一个名为“static”的文件夹中,但使用后:

然后更新编译,浏览器返回错误:

我见过一些使用 babel.js 或 jsil18n 的项目,但我不确定我是否真的需要它。如何以与我的 jinja 模板相同的方式定义 gettext?

0 投票
1 回答
1836 浏览

python - Flask-Babel 多语言 URL 路由

我正在创建一个多语言网站(EN 和 FR),如果用户愿意,我需要它在点击时来回切换。我正在使用 Flask-Babel,翻译和切换在点击时可以正常工作,但是,我还需要翻译 URL。我目前已经用英语和法语 URL 包装了我的 URL 路由:

获取语​​言和切换的其余代码如下:

模板如下所示,用户单击链接以更改语言:

由于我对 Python/Flask 的经验很少……我正在努力寻找切换到已翻译 URL 的最佳方式。我该怎么做呢?任何信息,将不胜感激。提前致谢。

0 投票
0 回答
173 浏览

python - 一起使用 Flask-Login 和 Flask-Babel

我正在使用 Flask 以及使用 Flask-Login 进行身份验证构建一个多语言应用程序。

我的典型观点是这样的:

虽然我像这样处理语言偏好:

现在 Flask-Login 需要一个默认的登录路由,通常设置如下:

我可以将其设置为默认语言路径(例如auth.login_en),但理想情况下,我想事先处理语言首选项,以便用户获得最适合的登录视图。我想过有一个虚拟的观点:

..它决定了语言偏好,然后重定向到正确的语言视图,但这似乎有点笨拙。

0 投票
1 回答
1283 浏览

python - 访问在应用工厂中定义的 Flask 扩展

我正在使用应用工厂模式来设置我的 Flask 应用程序。我的应用程序使用了 Flask-Babel 扩展,这也是在工厂中设置的。但是,我想在蓝图中访问扩展以使用它,

工厂在__init__.py

我想将以下内容添加到main.py

不幸的是,main.py无法babel从应用程序工厂访问该变量。我应该如何解决这个问题?

0 投票
3 回答
4550 浏览

python - Flask babel 不能进行简单的翻译?

好的,我有以下应用程序:

babel.cfg

露西/初始化.py

露西/控制器/main.py

我运行了以下命令:

  1. pybabel 提取 -F babel.cfg -o messages.pot 。
  2. pybabel init -i messages.pot -d 翻译 -l de
  3. pybabel 编译 -d 翻译/

这是我的项目结构的样子:

以下是翻译结果:

消息.pot

翻译/de/LC_MESSAGES/message.po

翻译/de/LC_MESSAGES/message.mo

当我访问 /debug 时,我看到我的语言环境是de. 但是,我仍然看到A simple string正在输出。任何想法为什么?

0 投票
0 回答
1820 浏览

python - 如何在 Flask 中切换两种语言?

我想用两种不同的语言制作我的网站,我正在Flask-Babel为此目的使用。

这是我的settings.py配置:

在这里,您可以看到包含我的应用程序中使用的两种语言的字典。

这是views.py

inject_url_for 函数意味着应用程序中的所有 url_for() 调用都需要修改为传递一个名为 lang 的额外参数,而这正是我所做的,这里是index函数:

听起来不错吧?

现在,如果我按原样运行应用程序,没有任何变化,它只是给了我默认语言,即英语,但如果我将其切换为俄语,它将不起作用。

请任何帮助将不胜感激:)。

0 投票
0 回答
2103 浏览

python - Flask-Babel 使用 Accept-Language 标头选择正确的语言环境

假设我有一个提供一些翻译的应用程序:

我想根据Accept-Language标题选择最合适的。

 使用 request.accept_languages.best_match

为了获得语言环境,我会写这样的东西:

问题是,如果用户代理要求de_DE,匹配失败并且选择回退到默认值(英语),而我de_AT显然更愿意得到 。

注意:文档页面中的示例读取

但这不允许同一语言的两个不同版本(en_EN, en_US)。

使用协商语言环境

在这个GitHub issue中,有人建议使用 Babel 的negotiate_locale功能:

但是 AFAIU,这并不能解决所有用例。仅当用户代理询问['de_AT', 'de']可用区域设置时的情况['en_US', 'en_EN', 'de_DE']。但不是反过来:

第一个有效,因为硬编码的别名列表de指向de_DE.

此外,浏览器只发送de_AT而不发送的情况也de被破坏了,但我不确定这是一个常见的配置(见下一段)。

有没有可靠的方法来解决这个问题?

 现代浏览器中的典型值?

作为一个子问题,我想知道我可以从现代浏览器中获得什么样的价值。

假设现代浏览器是否安全,除非用户自定义错误,否则会像这样发送Accept-Language[lang+territory, lang] 形式的?

另外,我尝试了我的 Firefox 版本来看看我会得到什么,这有点令人惊讶。

我系统上的语言环境是法语:

about:config页面说:

当我连接到我的测试 Flask 应用程序时,我得到

因此建议@babel.localeselector将返回英语语言环境。

我使用 Chromium 得到相同的值。

我的浏览器是否配置错误?