Search code examples
pythontemplatesjinja2pluralize

How to pluralize a name in a template with jinja2?


If I have a template variable called num_countries, to pluralize with Django I could just write something like this:

countr{{ num_countries|pluralize:"y,ies" }}

Is there a way to do something like this with jinja2? (I do know this doesn't work in jinja2) What's the jinja2 alternative to this?

Thanks for any tip!


Solution

  • According to Jinja's documentation, there is no built in filter which does what you want. You can easily design a custom filter to do that, however:

    def my_plural(str, end_ptr = None, rep_ptr = ""):
        if end_ptr and str.endswith(end_ptr):
            return str[:-1*len(end_ptr)]+rep_ptr
        else:
            return str+'s'
    

    and then register it in your environment:

    environment.filters['myplural'] = my_plural
    

    You can now use my_plural as a Jinja template.