flask_babel 和 Jinja2 如何在可翻译文本中包含 HTML 或占位符?
flask_babel and Jinja2 How to include HTML or placeholders in translatable text?
在一个多语言的基本 Flask 网站中,我想对特定的单词或表达应用一种样式。
为了处理多语言,我使用 flask_babelex 和标记化。
from tokenize import u
from flask_babelex import gettext
page_title = gettext(u'The best potatoes in the world!')
在模板中,我会有这样的:
<h2>{{ page_title }}</h2>
这将以这种方式呈现:
<h2>The best potatoes in the world!</h2>
为了应用正确的样式效果,我希望“potatoes”这个词在一个范围内。
<h2>The best <span>potatoes</span> in the world!</h2>
在 page_title 定义字符串中包含跨度无效。它似乎已被清理并且 html 显示为字符串的一部分而不是被解释。
一个简单的 javascipt 函数来定位呈现页面中的单词将不会执行,因为该单词会随着不同的语言(例如 patatas)而改变。
我想可以创建一个复杂的 javascript 函数,其中包含占位符并在渲染时完成,但是......我希望有更简单的方法来实现这一点。
在原始字符串中包含 HTML 或在 Jinja2 模板中包含要替换的占位符或任何其他建议的最佳方法是什么?
您可以将内容标记为| safe
以避免HTML被转义:
{{ page_title | safe }}
假设您不允许用户为其他用户插入可用的内容。
另一种选择是,如:
{{ _('The best %(start_tag)spotatoes%(end_tag)s in the world!', start_tag='<span>', end_tag='</span>') | safe }}
在一个多语言的基本 Flask 网站中,我想对特定的单词或表达应用一种样式。 为了处理多语言,我使用 flask_babelex 和标记化。
from tokenize import u
from flask_babelex import gettext
page_title = gettext(u'The best potatoes in the world!')
在模板中,我会有这样的:
<h2>{{ page_title }}</h2>
这将以这种方式呈现:
<h2>The best potatoes in the world!</h2>
为了应用正确的样式效果,我希望“potatoes”这个词在一个范围内。
<h2>The best <span>potatoes</span> in the world!</h2>
在 page_title 定义字符串中包含跨度无效。它似乎已被清理并且 html 显示为字符串的一部分而不是被解释。 一个简单的 javascipt 函数来定位呈现页面中的单词将不会执行,因为该单词会随着不同的语言(例如 patatas)而改变。 我想可以创建一个复杂的 javascript 函数,其中包含占位符并在渲染时完成,但是......我希望有更简单的方法来实现这一点。
在原始字符串中包含 HTML 或在 Jinja2 模板中包含要替换的占位符或任何其他建议的最佳方法是什么?
您可以将内容标记为| safe
以避免HTML被转义:
{{ page_title | safe }}
假设您不允许用户为其他用户插入可用的内容。
另一种选择是
{{ _('The best %(start_tag)spotatoes%(end_tag)s in the world!', start_tag='<span>', end_tag='</span>') | safe }}