我正在使用django和jinja2,并且在我的一个html页面中有这样的东西
<p><strong>Q. {{ _("What products will you accept?") }}</strong></p>
<p class="style3"><strong>A: </strong>{% trans myurl=request.url('start') %}A list of qualifying devices is available once you start your trade-in estimate. <a href= {{myurl}}>Click here</a> to learn what your old device is worth.</p>{% endtrans %}
当我运行django-admin.py makemessages
时,“您会接受哪些产品?”是唯一被处理的字符串。我认为用{% trans %}
块包装一个字符串也会标记该字符串或这是一个错误的陈述?
标记第二个字符串的最佳技巧是什么(由于request.url
变量,它很棘手)
我已尝试{{ _("A list of qualifying devices is available once you start your trade-in estimate. <a href= {{ request.url('start') }}>Click here</a> to learn what your old device is worth.")|safe }}
,但该链接无效。
答案 0 :(得分:1)
要翻译您需要使用the {% blocktrans %}
template tag,
{% blocktrans with myurl=request.url('start') %}
A list of qualifying devices is available once you start your trade-in estimate. <a href= {{myurl}}>Click here</a> to learn what your old device is worth.</p>
{% endblocktrans %}
但是,我不确定你是否可以在模板中调用像那样的函数,就像你正在尝试一样。
考虑将myurl
作为模板变量传递,然后使用较小的文本块。这增加了翻译的重用 - 特别是对于像“点击此处”这样的小公共块。
{% blocktrans %}
"A list of qualifying devices is available once you start your trade-in estimate."
{% endblocktrans %}
<a href= {{myurl}}>{% trans "Click here" %}</a>
{% trans "to learn what your old device is worth." %}
此外,在使用HTML和模板标记时,请尝试将它们正确嵌套。例如,在您的代码中,您将拥有:
<p>... {% blocktrans %}... </p>{% endblocktrans %}
而是尝试将它们嵌套起来:
<p>... {% blocktrans %}... {% endblocktrans %}</p>
这对于可以自动缩进和折叠内容并有助于提高可读性的IDE尤其有用。