如何在Django的i18n {% trans %} 标签中使用字符串替换?
我在找类似这样的东西:
{% trans "花瓶里有 %{flowers} 朵花" < flowers:3 %}
当然,这里的语法是假的,但它应该能说明我想要的是什么。
我是不是应该自己动手做点什么?这看起来是个常见的需求,所以我很惊讶快速搜索没有找到任何有用的信息。
其实,我开始对Django的模板系统感到厌烦……虽然我明白它是为了把应用逻辑和视图分开,但这样做反而打扰了我的工作流程。我应该能快速做个原型,只有在需要和设计师合作的时候,才需要对这些东西严格一些。
3 个回答
0
你可能会觉得这个模块 inflect.py 很有用,虽然这意味着你需要离开当前的模板系统。
import inflect
p = inflect.engine()
p.num(numflowers, show=False)
return 'There %s %s %s in the vase.' % (
p.pl('is'),
p.numwords(numflowers),
p.pl('flower'))
当 numflowers = 1 时
'There is one flower in the vase.'
当 numflowers = 2 时
'There are two flowers in the vase.'
1
使用 {% blocktrans %}
来代替 {% trans %}
。
3
我不太确定你想要做什么(< flowers:3
是想干嘛的?),不过你有没有看看 blocktrans 这个东西?
{% blocktrans count flowers|length as counter %}
There is one flower in the vase.
{% plural %}
There are {{ counter }} flowers in the vase.
{% endblocktrans %}