Login

Plural templatetags if quantity > 1: return single else return plural

Author:
Natim
Posted:
December 7, 2009
Language:
HTML/template
Version:
Not specified
Tags:
tags templatetags pluralize
Score:
0 (after 0 ratings)

Regarding to a quantity, use the singular or the plural in two distincts template variables.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-

"""
Usage: {% plural quantity name_singular name_plural %}

This simple version only works with template variable since we will use blocktrans for strings.
"""

from django import template

register = template.Library()

class PluralNode(template.Node):
    def __init__(self, quantity, single, plural):
        self.quantity = template.Variable(quantity)
        self.single = template.Variable(single)
        self.plural = template.Variable(plural)

    def render(self, context):
        if self.quantity.resolve(context) > 1:
            return u'%s' % self.plural.resolve(context)
        else:
            return u'%s' % self.single.resolve(context)

@register.tag(name="plural")
def do_plural(parser, token):
    try:
        # split_contents() knows not to split quoted strings.
        tag_name, quantity, single, plural = token.split_contents()
    except ValueError:
        raise template.TemplateSyntaxError, "%r tag requires exactly three arguments" % token.contents.split()[0]

    return PluralNode(quantity, single, plural)

More like this

  1. favicon Template Tag by benjy_mouse 5 years, 6 months ago
  2. Easy Conditional Template Tags by fragsworth 6 years, 3 months ago
  3. Enhancing template tags with "as variable" syntax by ctrochalakis 6 years ago
  4. Smart widthratio by zenx 5 years, 4 months ago
  5. function_tag by tensiongyb 7 years, 8 months ago

Comments

jdunck (on December 8, 2009):

What does this do that the pluralize filter doesn't?

#

Please login first before commenting.