返回介绍

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

发布于 2025-01-02 21:53:54 字数 1315 浏览 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 源代码和模板中都已被标记成可翻译文本。

发布评论

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