diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index febde404a52..f3cc6348f6a 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -79,10 +79,10 @@ def pgettext(context, message): def npgettext(context, singular, plural, number): return _trans.npgettext(context, singular, plural, number) -ngettext_lazy = lazy(ngettext, bytes) -gettext_lazy = lazy(gettext, bytes) -ungettext_lazy = lazy(ungettext, six.text_type) +gettext_lazy = lazy(gettext, str) +ngettext_lazy = lazy(ngettext, str) ugettext_lazy = lazy(ugettext, six.text_type) +ungettext_lazy = lazy(ungettext, six.text_type) pgettext_lazy = lazy(pgettext, six.text_type) npgettext_lazy = lazy(npgettext, six.text_type) diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 9e6eadcd489..71282ff2b37 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -259,6 +259,11 @@ def do_translate(message, translation_function): return result def gettext(message): + """ + Returns a string of the translation of the message. + + Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2. + """ return do_translate(message, 'gettext') if six.PY3: @@ -296,8 +301,10 @@ def do_ntranslate(singular, plural, number, translation_function): def ngettext(singular, plural, number): """ - Returns a UTF-8 bytestring of the translation of either the singular or - plural, based on the number. + Returns a string of the translation of either the singular or plural, + based on the number. + + Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2. """ return do_ntranslate(singular, plural, number, 'ngettext') diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index 9ca66bdb9b2..1a8ff25ff3e 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -232,7 +232,7 @@ class TranslationTests(TestCase): """ Translating a string requiring no auto-escaping shouldn't change the "safe" status. """ - s = mark_safe(b'Password') + s = mark_safe(str('Password')) self.assertEqual(SafeString, type(s)) with translation.override('de', deactivate=True): self.assertEqual(SafeUnicode, type(ugettext(s)))