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