From eb6a6c46199bb8c9b5931d1ed7103677f78b2dbd Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Mon, 24 Mar 2008 13:27:19 +0000 Subject: [PATCH] Fixed #6864 -- Handle Javascript i18n when the plural form expression returns True or False (so both booleans and integers are allowed). Thanks, Ramiro Morales. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7356 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/views/i18n.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/django/views/i18n.py b/django/views/i18n.py index e420e3d7f7..e141c1d967 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -82,6 +82,17 @@ function interpolate(fmt, obj, named) { } """ +PluralIdx = r""" +function pluralidx(n) { + var v=%s; + if (typeof(v) == 'boolean') { + return v ? 1 : 0; + } else { + return v; + } +} +""" + def null_javascript_catalog(request, domain=None, packages=None): """ Returns "identity" versions of the JavaScript i18n functions -- i.e., @@ -154,7 +165,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): # this should actually be a compiled function of a typical plural-form: # Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=',1)[1] - src.append('function pluralidx(n) {\n return %s;\n}\n' % plural) + src.append(PluralIdx % plural) else: src.append(SimplePlural) csrc = []