返回介绍

翻译日期和时间

发布于 2025-01-02 21:53:54 字数 1129 浏览 0 评论 0 收藏 0

现在,我已经为 Python 代码和模板中的所有文本提供了完整的西班牙语翻译,但是如果你使用西班牙语运行应用并且是一个很好的观察者,那么会注意到还有一些内容以英文显示。 我指的是由 Flask-Moment 和 moment.js 生成的时间戳,显然这些时间戳并未包含在翻译工作中,因为这些包生成的文本都不是应用程序源代码或模板的一部分。

moment.js 库确实支持本地化和国际化,所以我需要做的就是配置适当的语言。 Flask-Babel 通过 get_locale() 函数返回给定请求的语言和语言环境,所以我要做的就是将语言环境添加到 g 对象,以便我可以从基础模板中访问它:

app/routes.py :存储选择的语言到 flask.g 中。

# ...
from flask import g
from flask_babel import get_locale

# ...

@app.before_request
def before_request():
    # ...
    g.locale = str(get_locale())

Flask-Babel 的 get_locale() 函数返回一个本地语言对象,但我只想获得语言代码,可以通过将该对象转换为字符串来获取语言代码。 现在我有了 g.locale ,可以从基础模板中访问它,并以正确的语言配置 moment.js:

app/templates/base.html :为 moment.js 设置本地语言

...
{% block scripts %}
    {{ super() }}
    {{ moment.include_moment() }}
    {{ moment.lang(g.locale) }}
{% endblock %}

现在所有的日期和时间都与文本使用相同的语言了。 你可以在下面看到西班牙语的外观:

此时,除用户在用户动态或个人资料说明中提供的文本外,所有其他的文本均可翻译成其他语言。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文