diff options
| author | Jannis Leidel <jannis@leidel.info> | 2010-10-01 02:02:01 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2010-10-01 02:02:01 +0000 |
| commit | a64e96c227b36c701a86ded75d839b1cd2442713 (patch) | |
| tree | 275bcb46c02809cc7475ee81c9dea0e9bcbbabd2 | |
| parent | 8e301812fa6349b410db44fd4d6fe1df388635c3 (diff) | |
Fixed #13568 -- Fixed the blocktrans tag to not raise a KeyError if the number of variables in the singular and the plural block differ. Thanks, deloide.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13967 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/templatetags/i18n.py | 4 | ||||
| -rw-r--r-- | tests/regressiontests/templates/tests.py | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py index 10ac900041..c4dd2e7835 100644 --- a/django/templatetags/i18n.py +++ b/django/templatetags/i18n.py @@ -76,8 +76,10 @@ class BlockTranslateNode(Node): if self.plural and self.countervar and self.counter: count = self.counter.resolve(context) context[self.countervar] = count - plural, vars = self.render_token_list(self.plural) + plural, plural_vars = self.render_token_list(self.plural) result = translation.ungettext(singular, plural, count) + if count != 1: + vars = plural_vars else: result = translation.ugettext(singular) # Escape all isolated '%' before substituting in the context. diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index bbbcae30eb..9e2d175677 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -1116,6 +1116,9 @@ class Templates(unittest.TestCase): 'i18n24': ("{% load i18n %}{% trans 'Page not found'|upper %}", {'LANGUAGE_CODE': 'de'}, u'SEITE NICHT GEFUNDEN'), 'i18n25': ('{% load i18n %}{% trans somevar|upper %}', {'somevar': 'Page not found', 'LANGUAGE_CODE': 'de'}, u'SEITE NICHT GEFUNDEN'), + # translation of plural form with extra field in singular form (#13568) + 'i18n26': ('{% load i18n %}{% blocktrans with myextra_field as extra_field count number as counter %}singular {{ extra_field }}{% plural %}plural{% endblocktrans %}', {'number': 1, 'myextra_field': 'test'}, "singular test"), + ### HANDLING OF TEMPLATE_STRING_IF_INVALID ################################### 'invalidstr01': ('{{ var|default:"Foo" }}', {}, ('Foo','INVALID')), |
