Index: templatetags/i18n.py
===================================================================
--- templatetags/i18n.py	(revision 6098)
+++ templatetags/i18n.py	(working copy)
@@ -1,3 +1,4 @@
+import re
 from django.template import Node, resolve_variable
 from django.template import TemplateSyntaxError, TokenParser, Library
 from django.template import TOKEN_TEXT, TOKEN_VAR
@@ -68,9 +69,11 @@
             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)
+        # mask all % not directly followed by ( and rest fill with context
+        result = re.sub('\%(?!\()', '%%', result) % context
         context.pop()
         return result
 
