在Django模板中,我如何翻译包含HTML语言的挡路?例如:

{% trans "Please" %}
    <a href="{% url login %}?next={{ currentUrlPath }}">
        {% trans "log in" %}
    </a>
{% trans "in order to use MyApplicationName." %}

拆分翻译后的字符串允许我随时更改模板中的HTML,但我想将其放入单个翻译字符串中会更有意义,如下所示:

{% url login as loginUrl %}
{% blocktrans %}
    Please
    <a href="{{ loginUrl }}?next={{ currentUrlPath }}">
        log in
    </a>
    in order to use MyApplicationName.
{% endblocktrans %}

但是HTML标记在翻译字符串中,也就是说,如果我想更改HTML(例如锚的CSS类),我必须为每种语言重新翻译字符串.

还有更好的 Select 吗?

推荐答案

the docs开始:

不能在{%trans%}内的字符串中混合模板变量.如果您的翻译需要带变量(占位符)的字符串,请改用{%block trans%}.

blocktrans岁以下:

要翻译模板表达式--比方说,访问对象属性或使用模板过滤器--您需要将表达式绑定到局部变量,以便在翻译挡路中使用.示例:

{% blocktrans with article.price as amount %}
That will cost $ {{ amount }}.
{% endblocktrans %}

{% blocktrans with value|filter as myvar %}
This will have {{ myvar }} inside.
{% endblocktrans %}

这样,翻译后的字符串就有了占位符.在您的 case 中:

{% blocktrans with login_object.anchor as anchor %}
    Please {{ anchor|safe }}log in</a> in order to use MyApplicationName.
{% endblocktrans %}

您需要在view函数中生成包含在anchor中的文本.这样就不会出现在翻译后的字符串中.

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

Django:添加第二个';详细';用于检索额外信息的视图

lower() 在 None 上被调用

root urls.py 是 Django 中的 config/urls.py 吗?

如何将数据(具体归档)从views.py 传递到models.py

更新或创建异步 Django ORM 实例

Django rest框架覆盖ViewSet中的page_size

如何在 Django 中返回静态 HTML 文件作为响应?

通过 django shell 保存图像/文件

Django聚合:仅求和返回值?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

ImportError:无法导入设置

可以在 github 页面上托管 django 站点吗?

django 模板中对象的模型名称

在 django admin 中链接到外键对象

如何在 django 中使用更少的 css?

django 如何知道已经运行了哪些迁移?

Django 多项 Select 字段/复选框 Select 多个

Django:根据自定义函数过滤查询

Django - TypeError - save() 得到了一个意外的关键字参数force_insert