Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Fixed #19915 - Made blocktrans tag honour TEMPLATE_STRING_IF_INVALID. #865

Closed
wants to merge 1 commit into from

2 participants

@matiasb

No description provided.

@ramiro
Collaborator

Merged in 8043663. Thanks!

@ramiro ramiro closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Feb 28, 2013
  1. @matiasb
This page is out of date. Refresh to see the latest.
View
7 django/templatetags/i18n.py
@@ -1,6 +1,7 @@
from __future__ import unicode_literals
import re
+from django.conf import settings
from django.template import (Node, Variable, TemplateSyntaxError,
TokenParser, Library, TOKEN_TEXT, TOKEN_VAR)
from django.template.base import render_value_in_context
@@ -17,7 +18,6 @@ def __init__(self, variable):
self.variable = variable
def render(self, context):
- from django.conf import settings
context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]
return ''
@@ -143,7 +143,10 @@ def render(self, context, nested=False):
result = translation.pgettext(message_context, singular)
else:
result = translation.ugettext(singular)
- data = dict([(v, render_value_in_context(context.get(v, ''), context)) for v in vars])
+ default_value = settings.TEMPLATE_STRING_IF_INVALID
+ get_render_value = lambda v: render_value_in_context(
+ context.get(v, default_value), context)
+ data = dict([(v, get_render_value(v)) for v in vars])
context.pop()
try:
result = result % data
View
5 tests/regressiontests/templates/tests.py
@@ -1392,7 +1392,10 @@ def get_template_tests(self):
'i18n33': ('{% load i18n %}{{ langcode|language_name }} {{ langcode|language_name_local }} {{ langcode|language_bidi }}', {'langcode': 'nl'}, 'Dutch Nederlands False'),
# blocktrans handling of variables which are not in the context.
- 'i18n34': ('{% load i18n %}{% blocktrans %}{{ missing }}{% endblocktrans %}', {}, ''),
+ # this should work as if blocktrans was not there (bug #19915)
+ 'i18n34': ('{% load i18n %}{% blocktrans %}{{ missing }}{% endblocktrans %}', {}, ('', 'INVALID')),
+ 'i18n34_2': ('{% load i18n %}{% blocktrans with a="α" %}{{ a }}{% endblocktrans %}', {}, 'α'),
+ 'i18n34_3': ('{% load i18n %}{% blocktrans with a=anton %}{{ b }}{% endblocktrans %}', {'anton': 'α'}, ('', 'INVALID')),
# trans tag with as var
'i18n35': ('{% load i18n %}{% trans "Page not found" as page_not_found %}{{ page_not_found }}', {'LANGUAGE_CODE': 'de'}, "Seite nicht gefunden"),
Something went wrong with that request. Please try again.