我希望我的 po 翻译文件没有任何HTML。
所以,在.po文件中我们有:
msgid "PRODUCTS_WERE_ORDERED(%(b_sum)s)"
msgstr "Products were ordered for %(b_sum)s"
我不喜欢下一个(这是一个解决方案,但它很糟糕):
msgstr "Products were ordered for <b>%(b_sum)s</b>"
最后我想将 b_sum 加粗。下一个代码(在模板中)不起作用:
{% with b_beg="<b>" b_end="</b>" %}
<p>
{% blocktrans with b_sum=sum %}PRODUCTS_WERE_ORDERED({{b_beg}}{{b_sum}}{{b_end}}){% endblocktrans %}
</p>
{% endwith %}
翻译后我们有:PRODUCTS_WERE_ORDERED( 350 )
如果我们使用
PRODUCTS_WERE_ORDERED({{b_sum}})
然后我们有:产品订购350(没有大胆)。
有人知道如何在 po 翻译文件中不使用HTML来加粗和吗?
答案 0 :(得分:1)
我通过编写自定义模板过滤器找到了解决方案,该过滤器使用 sum 作为参数格式化字符串:
@register.filter( name='safewrap' )
def safewrap( val, arg ):
return val.format( arg )
safewrap.is_safe = True
在这种情况下,我们在模板文件中有:
{% blocktrans with sum2="<b>{0}</b>"|safewrap:sum %}PRODUCTS_WERE_ORDERED({{sum2}}){% endblocktrans %}
所以我们的'po'文件没有HTML:
msgid "PRODUCTS_WERE_ORDERED(%(sum2)s)"
msgstr "This costs %(sum2)s"