Django本地化:如何制作没有HTML的'po'文件?

时间:2012-02-03 22:03:50

标签: python django

我希望我的 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来加粗和吗?

1 个答案:

答案 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"