Opened 10 years ago
Closed 10 years ago
#26103 closed Bug (invalid)
Python 2 crash with non-ASCII characters in settings.LANGUAGES
| Reported by: | Tim Graham | Owned by: | nobody |
|---|---|---|---|
| Component: | Template system | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
As noted on a pull request, adding a non-ASCII character in settings.LANGUAGES, even after adding # -*- coding: utf-8 -*- to django/conf/global_settings.py, causes a test failure on Python 2.7:
======================================================================
ERROR: test_i18n12 (template_tests.syntax_tests.test_i18n.I18nTagTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/case.py", line 331, in run
testMethod()
File "/home/tim/code/django/django/test/utils.py", line 208, in inner
return func(*args, **kwargs)
File "/home/tim/code/django/tests/template_tests/utils.py", line 61, in inner
func(self)
File "/home/tim/code/django/tests/template_tests/syntax_tests/test_i18n.py", line 149, in test_i18n12
output = self.engine.render_to_string('i18n12')
File "/home/tim/code/django/django/template/engine.py", line 180, in render_to_string
return t.render(Context(context))
File "/home/tim/code/django/django/template/base.py", line 207, in render
return self._render(context)
File "/home/tim/code/django/django/test/utils.py", line 94, in instrumented_test_render
return self.nodelist.render(context)
File "/home/tim/code/django/django/template/base.py", line 976, in render
bit = node.render_annotated(context)
File "/home/tim/code/django/django/template/base.py", line 943, in render_annotated
return self.render(context)
File "/home/tim/code/django/django/templatetags/i18n.py", line 20, in render
context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]
File "/home/tim/code/django/django/utils/translation/__init__.py", line 85, in ugettext
return _trans.ugettext(message)
File "/home/tim/code/django/django/utils/translation/trans_real.py", line 321, in ugettext
return do_translate(message, 'ugettext')
File "/home/tim/code/django/django/utils/translation/trans_real.py", line 301, in do_translate
result = getattr(translation_object, translation_function)(eol_message)
File "/usr/lib/python2.7/gettext.py", line 404, in ugettext
return unicode(message)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128)
Note:
See TracTickets
for help on using tickets.
Sorry, but adding a non-ASCII non-Unicode string is considered as an error (unless it has a very specific purpose). On Python 2, the
u''prefix is mandatory in such a case.