【问题标题】:Flask-Babel working in development but not translating in productionFlask-Babel 在开发中工作,但在生产中没有翻译
【发布时间】:2021-04-07 21:20:11
【问题描述】:

我已经设置好 Flask-Babel 并在我的 localhost 开发应用程序上正常工作(使用两种语言:en_GBen_US)。

但是,当我尝试在生产应用程序上切换语言时,它什么也没做。 get_locale() 函数正在返回正确的语言(我可以看到它在页面刷新时被多次调用,这表明它正在为每个所需的翻译调用),但没有出现实际的翻译。

正如我所说,它在开发应用程序中运行良好,我看不出有任何理由说明生产中的行为应该有什么不同。任何想法将不胜感激。

翻译文件(messages.momessages.po)存储在translations/en_us/LC_MESSAGES

config.py

LANGUAGES = ['en_GB', 'en_US']

babel.cfg

[jinja2: megaseatingplan/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

__init__.py

# Initialise flask-babel
babel = Babel(app)

@babel.localeselector
def get_locale():
    try:
        print("Language loaded from current_user: "+str(current_user.language))
        return current_user.language
    except:
        print("Language loaded from browser: "+str(request.accept_languages.best_match(app.config['LANGUAGES'])))
        return request.accept_languages.best_match(app.config['LANGUAGES'])

手动选择语言的功能

@app.route('/switch_language/<language>')
@login_required
def switch_language(language):
    current_user.language = language
    db.session.commit()

    track_event("User", "Switch language", label=language, value=0, userid=current_user.userid)

    if language == "en_GB":
        flash("Language switched to English (UK)")
    elif language == "en_US":
        flash("Language switched to English (US)")

    return redirect(url_for('home'))

编辑: 一些额外的信息。我已确认 BABEL_TRANSLATION_DIRECTORIES 指向正确的位置,并且还使用 list_translations() 确认它正在查找我的 en_US 翻译文件。

【问题讨论】:

  • 你能分享更多关于你的生产环境的信息吗?你在部署一个容器吗?它与您的开发人员的操作系统不同吗?
  • @oz123 开发环境是 Windows 上的 venv,生产环境是在 Heroku 上使用 gunicorn。这是您需要的信息吗?
  • 这可能会帮助您获得答案......我不熟悉 Heroku,但它会有所帮助。您是否将所有文件都推送到 heroku?
  • @oz123 是的,我可以在 Github 中看到 Heroku 构建的所有文件
  • 作为健全性检查,您是否尝试在切换语言时调用refresh() (flask-babel.tkte.ch/#flask_babel.refresh)?

标签: python flask heroku flask-babel


【解决方案1】:

我遇到了您描述的问题。对我来说,问题是BABEL_TRANSLATION_DIRECTORIES 中的目录是大写的('EN')。用小写('en')重命名目录解决了我的生产环境问题。

如果您还没有解决问题,我希望这可以帮助您

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多