标签: flask-babel

从数据库flask-babel翻译字符串

我正在使用Flask-Babel来翻译字符串.

在一些模板中,我正在从数据库中读取字符串(postgresql).如何使用Flask-Babel从数据库中翻译字符串?

python babel flask flask-babel

6
推荐指数
1
解决办法
1068
查看次数

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

假设我有一个应用程序,其中有一些可用的翻译:

\n
AVAILABLE_LOCALES = [\'en_US\', \'en_EN\', \'de_AT\']\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

\xc2\xa0使用 request.accept_languages.best_match

\n

为了获取语言环境,我会写这样的内容:

\n
@babel.localeselector\ndef get_locale():\n    user = getattr(g, \'user\', None)\n    if user is not None:\n        return user.locale\n    return request.accept_languages.best_match(AVAILABLE_LOCALES)\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

注意:文档页面中的示例如下

\n
return request.accept_languages.best_match([\'de\', \'fr\', \'en\'])\n
Run Code Online (Sandbox Code Playgroud)\n

但这不允许同一语言有两个不同版本(en_ENen_US)。

\n

使用negotiate_locale

\n

在这个GitHub 问题中,有人建议使用 Babel 的negotiate_locale函数:

\n
@babel.localeselector\ndef get_locale():\n    user = getattr(g, \'user\', None)\n    if user is not None:\n        return …
Run Code Online (Sandbox Code Playgroud)

python localization flask flask-babel

6
推荐指数
0
解决办法
2897
查看次数

Flask Babelex 0.9.4 和 % 转义

Flask我们最近升级Werkzeug到 1.0.1的应用程序中(因此我们可以在 cookie 上设置相同的站点),这强制了一些依赖项,其中Flask-BabelEx==0.9.4.

在这次升级之后,转义 %(百分号)的处理方式发生了非常令人不安的变化。凡gettext('foo %%')用于返回*"foo %"*,现在的回报*"foo %%"*,换句话说,%符号的逃逸似乎无法处理。我想,好吧,有点向上不兼容,我们只需要替换babel 字符串中的所有%%by %(在参考语言以及所有翻译中,所以这已经很重要了)。

但这并不是故事的结束,因为对于Jinja2 模板中使用的所有 babel 字符串,例如{{ _("This is a percent sign: %") }}%仍然处理标志的转义,因此这仍然需要 {{ _("This is a percent sign: %%") }}. 那么我们是否必须%根据使用位置来处理转义和未转义的 babel 字符串?是否有某种设置可以缓解这种逃避问题。

python werkzeug flask flask-babel

6
推荐指数
0
解决办法
131
查看次数

Flask-babel:如何翻译变量

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

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

pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .
pybabel update -i messages.pot -d translations
Run Code Online (Sandbox Code Playgroud)

没有显示任何内容来翻译foovar 的内容。

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

python flask flask-babel python-babel

5
推荐指数
1
解决办法
4017
查看次数

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

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

babel.cfg

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
Run Code Online (Sandbox Code Playgroud)

露西/初始化.py

babel = Babel()

def create_app(object_name):
  app = Flask(__name__)
  app.config.from_object(object_name)

  app.register_blueprint(main_blueprint)
  app.register_blueprint(category_blueprint)
  app.register_blueprint(item_blueprint)

  babel.init_app(app)
  db.init_app(app)
  return app


@babel.localeselector
def get_locale():
  return 'de'
Run Code Online (Sandbox Code Playgroud)

露西/控制器/main.py

main_blueprint = Blueprint(
    'main',
    __name__,
    template_folder='../templates/main',
)

@main_blueprint.route('/debug')
def debug():
  print get_locale()
  return gettext('A simple string')
Run Code Online (Sandbox Code Playgroud)

我运行了以下命令:

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

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

.
|-- README.md
|-- babel.cfg
|-- fabfile.py
|-- lucy
|   |-- …
Run Code Online (Sandbox Code Playgroud)

python flask flask-babel python-babel

5
推荐指数
2
解决办法
3955
查看次数

在 Jinja2 中使用 babel 的链接

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

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

<p>You can change this in your <a href="{{ url_for("settings") }}">settings</a>.</p>
Run Code Online (Sandbox Code Playgroud)

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

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

<p>{{ _("You can change this in your ")<a href="{{ url_for("settings") }}">{{ _("settings")</a>.</p>
Run Code Online (Sandbox Code Playgroud)

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

执行此操作的首选方法是什么?

python jinja2 flask flask-babel python-babel

4
推荐指数
1
解决办法
695
查看次数

手动更改 Flask Babel 语言

我正在使用 Flask Babel 来翻译我的 Flask Python 应用程序。目前我只有区域设置的翻译机制,但是如果用户除了他的位置之外还想将位置更改为英语怎么办?有什么办法可以手动更改区域设置吗?

这是我的 Flask Babel 函数,它获取用户区域设置并返回语言。它位于我的__init__.py文件中。

@babel.localeselector
def get_locale():
    print "LANGUAGE PT"
    #return 'de' -> manually change to the desired language
    request.accept_languages.best_match(LANGUAGES.keys()) 
Run Code Online (Sandbox Code Playgroud)

我真的很感谢任何帮助!

此致

python flask flask-babel

3
推荐指数
1
解决办法
6548
查看次数

如何在 Flask-WTForms render_kw 中使用 Flask-Babel gettext?

我开始将 Babel 与 WTForms 和 Flask 一起使用。下面我尝试 gettext 我的用户名密码的占位符关键字字段的占位符关键字:

\n\n
#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom flask_babel import gettext\nfrom flask_wtf import FlaskForm\nfrom wtforms import PasswordField, StringField\nfrom wtforms.validators import DataRequired\n\n\nclass LoginForm(FlaskForm):\n    username = StringField(label=\'username\',\n                           validators=[DataRequired()],\n                           render_kw={"placeholder": gettext(\'Username\')})\n    password = PasswordField(label=\'password\',\n                             validators=[DataRequired()],\n                             render_kw={"placeholder": gettext(\'Password\')})\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的法语 .po 文件(当然已经编译过):

\n\n
# French (France) translations for PROJECT.\n# Copyright (C) 2017 ORGANIZATION\n# This file is distributed under the same license as the PROJECT project.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.\n#\nmsgid ""\nmsgstr ""\n"Project-Id-Version: PROJECT …
Run Code Online (Sandbox Code Playgroud)

python flask flask-wtforms flask-babel python-babel

1
推荐指数
1
解决办法
2962
查看次数

Flask-Babel -0 pybabel:错误:未知语言环境“jp”

我在使用 Flask-babel 时遇到了问题。我无法创建日语翻译。

pybabel:错误:未知语言环境“jp”

这是 Flask-Babel 问题吗?

当一种语言不存在时,这是同样的错误。但是,德语作品。所以.....babel nit 支持日语吗?

有没有支持像日语这样的主要语言的 Babel 替代品?

python flask flask-babel python-babel

0
推荐指数
1
解决办法
982
查看次数