12

DjangoトランスタグにHTMLタグを含めることはできますか? たとえば、私はできます{% trans "Hold <em><strong>Ctrl</strong></em>" %}か?または、{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em>"代わりに私がしなければならないでしょうか?

4

2 に答える 2

14

transテンプレートタグ内に HTML タグを含めることはできますか?

いいえ、trans最初のアプローチで行っているように、テンプレート タグ内に HTML タグを含めるべきではありません{% trans "Hold <em><strong>Ctrl</strong></em>" %}。これは間違ったアプローチです

ドキュメントから:

{% trans %}テンプレート タグは、定数文字列 (一重引用符または二重引用符で囲まれている) または可変コンテンツのいずれかを変換します。

内の文字列内にテンプレート変数を混在させることはできません{% trans %}翻訳に変数 (プレースホルダー) を含む文字列が必要な場合は、{% blocktrans %}代わりに使用してください。

<title>{% trans "This is the title." %}</title> # example 1

<title>{% trans "myvar" noop %}</title>  # example 2

解決策 1:transテンプレート タグを使用する

タグ内に HTML コードを配置する代わりに、trans以下のようにして目的の結果を得ることができます (ただし、これは推奨される方法ではありません)。

{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em> # using trans tag

解決策 2:blocktrans代わりにタグを使用する

blocktransタグの代わりにテンプレート タグを使用transして HTML タグを含めることをお勧めします。

タグを使用すると、blocktransプレースホルダーを使用して、リテラルと可変コンテンツで構成される複雑な文を翻訳用にマークできます。

その後、次のことができます。

{% blocktrans %}
Hold <em><strong>Ctrl</strong></em>
{% endblocktrans %}
于 2015-09-28T19:15:35.357 に答える
2

Rahul が回答で述べたように、trans テンプレート タグ内に HTML タグを含めるべきではありません。しかし、Translating text blocks with Django によると.. HTML をどうするか? (私が見つけたばかりです)、代わりに blocktrans テンプレートタグの中に HTML タグを入れることができます。したがって、私はする必要はありません{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em>"Django 1.8 docsでそのような指示を見つけることができませんでした。

于 2015-09-29T17:46:18.557 に答える