Skip to main content
 首页 » 编程设计

python之Django 本地化 : How To Make 'po' file without HTML

2025年05月04日24bluestorm

我想要没有任何 HTML 的 po 翻译文件。

因此,在 .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 使总和加粗吗?

请您参考如下方法:

我通过编写自定义模板过滤器找到了解决方案,该过滤器以 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"