(How)我可以使用字符串替换来处理/ Django i18n {%trans%}标记吗?

时间:2010-02-25 19:44:35

标签: python django formatting templates internationalization

我正在寻找类似的东西:

{% trans "There are %{flowers}n flowers in the vase" < flowers:3 %}

现在显然语法是假的,但它应该足以证明我正在寻找的东西。

我应该自己做点什么吗?它看起来像一个常见的用例,所以我很惊讶快速的网络搜索没有返回任何有用的东西。

我实际上开始讨厌使用Django模板系统......虽然我知道它的目的是强制将应用程序逻辑与视图分离,但它是通过侵入我的工作流程来实现的。我应该能够快速制作原型,只有当我需要与设计师合作时才会这样,只有这样,我才能更加严格地对待这样的事情。

3 个答案:

答案 0 :(得分: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 %}

答案 1 :(得分:1)

使用{% blocktrans %}代替{% trans %}

答案 2 :(得分: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'))

with numflowers = 1

'There is one flower in the vase.'

with numflowers = 2

'There are two flowers in the vase.'