Fixed #19272 -- Fixed gettext_lazy returned type on Python 2

Thanks tyrion for the report.
This commit is contained in:
Claude Paroz 2012-11-14 10:50:15 +01:00
parent 1620c27936
commit 550ddc66b4
2 changed files with 6 additions and 1 deletions

View File

@ -246,7 +246,8 @@ def do_translate(message, translation_function):
""" """
global _default global _default
eol_message = message.replace('\r\n', '\n').replace('\r', '\n') # str() is allowing a bytestring message to remain bytestring on Python 2
eol_message = message.replace(str('\r\n'), str('\n')).replace(str('\r'), str('\n'))
t = getattr(_active, "value", None) t = getattr(_active, "value", None)
if t is not None: if t is not None:
result = getattr(t, translation_function)(eol_message) result = getattr(t, translation_function)(eol_message)

View File

@ -83,6 +83,10 @@ class TranslationTests(TestCase):
s4 = ugettext_lazy('Some other string') s4 = ugettext_lazy('Some other string')
self.assertEqual(False, s == s4) self.assertEqual(False, s == s4)
if not six.PY3:
# On Python 2, gettext_lazy should not transform a bytestring to unicode
self.assertEqual(gettext_lazy(b"test").upper(), b"TEST")
def test_lazy_pickle(self): def test_lazy_pickle(self):
s1 = ugettext_lazy("test") s1 = ugettext_lazy("test")
self.assertEqual(six.text_type(s1), "test") self.assertEqual(six.text_type(s1), "test")