返回介绍

标记文本以在模板中进行翻译

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

在前面的章节中,你已经看到了如何在 Python 源代码中标记可翻译的文本,但这只是该过程的一部分,因为模板文件也包含文本。 _() 函数也可以在模板中使用,所以过程非常相似。 例如,参考来自 404.html 的这段 HTML 代码:

<h1>File Not Found</h1>

启用翻译之后的版本是:

<h1>{{ _('File Not Found') }}</h1>

请注意,除了用 _() 包装文本外,还需要添加 {{...}} 来强制 _() 进行翻译,而不是将其视为模板中的文本字面量。

对于具有动态组件的更复杂的短语,也可以使用参数:

<h1>{{ _('Hi, %(username)s!', username=current_user.username) }}</h1>

_post.html 中的一个特别棘手的案例让我花了一些时间才理顺:

        {% set user_link %}
            <a href="{{ url_for('user', username=post.author.username) }}">
                {{ post.author.username }}
            </a>
        {% endset %}
        {{ _('%(username)s said %(when)s',
            username=user_link, when=moment(post.timestamp).fromNow()) }}

这里的问题是我希望 username 是一个超链接,指向用户的个人主页,而不仅仅是名字,所以我必须使用 setendset 模板指令创建一个名为 user_link 的中间变量 ,然后将其作为参数传递给翻译函数。

正如我上面提到的,你可以 下载 该版本的应用,其中的 Python 源代码和模板中都已被标记成可翻译文本。

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

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

发布评论

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