From cc6139ab50d07b4c61cf8302ebb16d764a995d9a Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 20 Oct 2007 12:29:56 +0000 Subject: [PATCH] Fixed #4982 -- Fixed handling of '%' symbols in 'blocktrans' blocks. Thanks, permonik@mesias.brnonet.cz. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6565 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/templatetags/i18n.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py index d5b0741a61..cec35fb48e 100644 --- a/django/templatetags/i18n.py +++ b/django/templatetags/i18n.py @@ -1,3 +1,5 @@ +import re + from django.template import Node, Variable from django.template import TemplateSyntaxError, TokenParser, Library from django.template import TOKEN_TEXT, TOKEN_VAR @@ -68,9 +70,11 @@ class BlockTranslateNode(Node): count = self.counter.resolve(context) context[self.countervar] = count plural = self.render_token_list(self.plural) - result = translation.ungettext(singular, plural, count) % context + result = translation.ungettext(singular, plural, count) else: - result = translation.ugettext(singular) % context + result = translation.ugettext(singular) + # Escape all isolated '%' before substituting in the context. + result = re.sub('%(?!\()', '%%', result) % context context.pop() return result