问题标签 [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.
python - flask-babel:如何翻译变量
我正在使用 flask-babel 来翻译基于 Flask 的 Web 应用程序。我真的很想知道如何翻译变量的内容,比如foo
.
我尝试{{ _(foo) }}
,但是当我.po
像这样更新文件时:
没有任何内容用于翻译foo
var 的内容。
常量字符串一切正常,例如{{ _("goo")}}
.
python - 在 Jinja2 中使用带有 babel 的链接
目前我正在将 Flask 和 Jinja2 与 Babel 结合使用。到目前为止,一切都很好。
我面临的唯一问题是在翻译文本中使用链接时。假设我们在 HTML 中有以下内容:
我将如何将它与 babel 结合使用?
我一直在考虑以下代码,但是当翻译语言中的单词顺序不同时,这会出现问题。
另一个想法是将整个 HTML 放入要翻译的字符串中,但是我不能再使用字符串转义了。
这样做的首选方法是什么?
python - Flask - Babel - 崩溃的变音符号
我需要使用 Babel 或 Babelex 为 Flask 应用程序创建翻译。
跑:
...成功,创建messages.pot
.
在文件messages.pot
中有更改:
然后我创建一个.po
文件。
*.po
文件内容为:
翻译后的文件坏了,所有文件都是 UTF-8。当我将文件编译*.po
为*.mo
文件时,它是一样的。
javascript - 如何在javascript上使用flask-babel进行翻译?
我有一个带有 jinja 模板和 flask-babel 运行良好的 python 项目。我的问题是javascript文件。我将所有 js 文件放在一个名为“static”的文件夹中,但使用后:
然后更新编译,浏览器返回错误:
我见过一些使用 babel.js 或 jsil18n 的项目,但我不确定我是否真的需要它。如何以与我的 jinja 模板相同的方式定义 gettext?
python - Flask-Babel 多语言 URL 路由
我正在创建一个多语言网站(EN 和 FR),如果用户愿意,我需要它在点击时来回切换。我正在使用 Flask-Babel,翻译和切换在点击时可以正常工作,但是,我还需要翻译 URL。我目前已经用英语和法语 URL 包装了我的 URL 路由:
获取语言和切换的其余代码如下:
模板如下所示,用户单击链接以更改语言:
由于我对 Python/Flask 的经验很少……我正在努力寻找切换到已翻译 URL 的最佳方式。我该怎么做呢?任何信息,将不胜感激。提前致谢。
python - 一起使用 Flask-Login 和 Flask-Babel
我正在使用 Flask 以及使用 Flask-Login 进行身份验证构建一个多语言应用程序。
我的典型观点是这样的:
虽然我像这样处理语言偏好:
现在 Flask-Login 需要一个默认的登录路由,通常设置如下:
我可以将其设置为默认语言路径(例如auth.login_en
),但理想情况下,我想事先处理语言首选项,以便用户获得最适合的登录视图。我想过有一个虚拟的观点:
..它决定了语言偏好,然后重定向到正确的语言视图,但这似乎有点笨拙。
python - 访问在应用工厂中定义的 Flask 扩展
我正在使用应用工厂模式来设置我的 Flask 应用程序。我的应用程序使用了 Flask-Babel 扩展,这也是在工厂中设置的。但是,我想在蓝图中访问扩展以使用它,
工厂在__init__.py
。
我想将以下内容添加到main.py
:
不幸的是,main.py
无法babel
从应用程序工厂访问该变量。我应该如何解决这个问题?
python - Flask babel 不能进行简单的翻译?
好的,我有以下应用程序:
babel.cfg
露西/初始化.py
露西/控制器/main.py
我运行了以下命令:
- pybabel 提取 -F babel.cfg -o messages.pot 。
- pybabel init -i messages.pot -d 翻译 -l de
- pybabel 编译 -d 翻译/
这是我的项目结构的样子:
以下是翻译结果:
消息.pot
翻译/de/LC_MESSAGES/message.po
翻译/de/LC_MESSAGES/message.mo
当我访问 /debug 时,我看到我的语言环境是de
. 但是,我仍然看到A simple string
正在输出。任何想法为什么?
python - 如何在 Flask 中切换两种语言?
我想用两种不同的语言制作我的网站,我正在Flask-Babel
为此目的使用。
这是我的settings.py配置:
在这里,您可以看到包含我的应用程序中使用的两种语言的字典。
这是views.py:
inject_url_for 函数意味着应用程序中的所有 url_for() 调用都需要修改为传递一个名为 lang 的额外参数,而这正是我所做的,这里是index函数:
听起来不错吧?
现在,如果我按原样运行应用程序,没有任何变化,它只是给了我默认语言,即英语,但如果我将其切换为俄语,它将不起作用。
请任何帮助将不胜感激:)。
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 得到相同的值。
我的浏览器是否配置错误?