Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #7027: template tags now corectly break tokens around strings m…

…arked for translation.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8769 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 86316f0be6837e3359b63e48e518b4f7d5b4d78d 1 parent 79968f9
@jacobian jacobian authored
View
14 django/template/__init__.py
@@ -197,7 +197,19 @@ def __str__(self):
self.contents[:20].replace('\n', ''))
def split_contents(self):
- return list(smart_split(self.contents))
+ split = []
+ bits = iter(smart_split(self.contents))
+ for bit in bits:
+ # Handle translation-marked template pieces
+ if bit.startswith('_("') or bit.startswith("_('"):
+ sentinal = bit[2] + ')'
+ trans_bit = [bit]
+ while not bit.endswith(sentinal):
+ bit = bits.next()
+ trans_bit.append(bit)
+ bit = ' '.join(trans_bit)
+ split.append(bit)
+ return split
class Lexer(object):
def __init__(self, template_string, origin):
View
6 tests/regressiontests/templates/tests.py
@@ -130,6 +130,12 @@ def test_template_sources(path, template_dirs, expected_sources):
test_template_sources('/DIR1/index.HTML', template_dirs,
['/dir1/index.html'])
+ def test_token_smart_split(self):
+ # Regression test for #7027
+ token = template.Token(template.TOKEN_BLOCK, 'sometag _("Page not found") value|yesno:_("yes,no")')
+ split = token.split_contents()
+ self.assertEqual(split, ["sometag", '_("Page not found")', 'value|yesno:_("yes,no")'])
+
def test_templates(self):
template_tests = self.get_template_tests()
filter_tests = filters.get_filter_tests()
Please sign in to comment.
Something went wrong with that request. Please try again.