Fixed #30165 -- Deprecated ugettext(), ugettext_lazy(), ugettext_noop(), ungettext(), and ungettext_lazy().
This commit is contained in:
parent
48c17807a9
commit
6eb4996672
|
@ -2,9 +2,11 @@
|
||||||
Internationalization support.
|
Internationalization support.
|
||||||
"""
|
"""
|
||||||
import re
|
import re
|
||||||
|
import warnings
|
||||||
from contextlib import ContextDecorator
|
from contextlib import ContextDecorator
|
||||||
|
|
||||||
from django.utils.autoreload import autoreload_started, file_changed
|
from django.utils.autoreload import autoreload_started, file_changed
|
||||||
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
@ -72,23 +74,51 @@ def gettext_noop(message):
|
||||||
return _trans.gettext_noop(message)
|
return _trans.gettext_noop(message)
|
||||||
|
|
||||||
|
|
||||||
ugettext_noop = gettext_noop
|
def ugettext_noop(message):
|
||||||
|
"""
|
||||||
|
A legacy compatibility wrapper for Unicode handling on Python 2.
|
||||||
|
Alias of gettext_noop() since Django 2.0.
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'django.utils.translation.ugettext_noop() is deprecated in favor of '
|
||||||
|
'django.utils.translation.gettext_noop().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return gettext_noop(message)
|
||||||
|
|
||||||
|
|
||||||
def gettext(message):
|
def gettext(message):
|
||||||
return _trans.gettext(message)
|
return _trans.gettext(message)
|
||||||
|
|
||||||
|
|
||||||
# An alias since Django 2.0
|
def ugettext(message):
|
||||||
ugettext = gettext
|
"""
|
||||||
|
A legacy compatibility wrapper for Unicode handling on Python 2.
|
||||||
|
Alias of gettext() since Django 2.0.
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'django.utils.translation.ugettext() is deprecated in favor of '
|
||||||
|
'django.utils.translation.gettext().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return gettext(message)
|
||||||
|
|
||||||
|
|
||||||
def ngettext(singular, plural, number):
|
def ngettext(singular, plural, number):
|
||||||
return _trans.ngettext(singular, plural, number)
|
return _trans.ngettext(singular, plural, number)
|
||||||
|
|
||||||
|
|
||||||
# An alias since Django 2.0
|
def ungettext(singular, plural, number):
|
||||||
ungettext = ngettext
|
"""
|
||||||
|
A legacy compatibility wrapper for Unicode handling on Python 2.
|
||||||
|
Alias of ngettext() since Django 2.0.
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'django.utils.translation.ungettext() is deprecated in favor of '
|
||||||
|
'django.utils.translation.ngettext().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return ngettext(singular, plural, number)
|
||||||
|
|
||||||
|
|
||||||
def pgettext(context, message):
|
def pgettext(context, message):
|
||||||
|
@ -99,10 +129,23 @@ def npgettext(context, singular, plural, number):
|
||||||
return _trans.npgettext(context, singular, plural, number)
|
return _trans.npgettext(context, singular, plural, number)
|
||||||
|
|
||||||
|
|
||||||
gettext_lazy = ugettext_lazy = lazy(gettext, str)
|
gettext_lazy = lazy(gettext, str)
|
||||||
pgettext_lazy = lazy(pgettext, str)
|
pgettext_lazy = lazy(pgettext, str)
|
||||||
|
|
||||||
|
|
||||||
|
def ugettext_lazy(message):
|
||||||
|
"""
|
||||||
|
A legacy compatibility wrapper for Unicode handling on Python 2. Has been
|
||||||
|
Alias of gettext_lazy since Django 2.0.
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'django.utils.translation.ugettext_lazy() is deprecated in favor of '
|
||||||
|
'django.utils.translation.gettext_lazy().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return gettext_lazy(message)
|
||||||
|
|
||||||
|
|
||||||
def lazy_number(func, resultclass, number=None, **kwargs):
|
def lazy_number(func, resultclass, number=None, **kwargs):
|
||||||
if isinstance(number, int):
|
if isinstance(number, int):
|
||||||
kwargs['number'] = number
|
kwargs['number'] = number
|
||||||
|
@ -158,8 +201,17 @@ def ngettext_lazy(singular, plural, number=None):
|
||||||
return lazy_number(ngettext, str, singular=singular, plural=plural, number=number)
|
return lazy_number(ngettext, str, singular=singular, plural=plural, number=number)
|
||||||
|
|
||||||
|
|
||||||
# An alias since Django 2.0
|
def ungettext_lazy(singular, plural, number=None):
|
||||||
ungettext_lazy = ngettext_lazy
|
"""
|
||||||
|
A legacy compatibility wrapper for Unicode handling on Python 2.
|
||||||
|
An alias of ungettext_lazy() since Django 2.0.
|
||||||
|
"""
|
||||||
|
warnings.warn(
|
||||||
|
'django.utils.translation.ungettext_lazy() is deprecated in favor of '
|
||||||
|
'django.utils.translation.ngettext_lazy().',
|
||||||
|
RemovedInDjango40Warning, stacklevel=2,
|
||||||
|
)
|
||||||
|
return ngettext_lazy(singular, plural, number)
|
||||||
|
|
||||||
|
|
||||||
def npgettext_lazy(context, singular, plural, number=None):
|
def npgettext_lazy(context, singular, plural, number=None):
|
||||||
|
|
|
@ -20,6 +20,10 @@ details on these changes.
|
||||||
|
|
||||||
* ``django.utils.encoding.force_text()`` and ``smart_text()`` will be removed.
|
* ``django.utils.encoding.force_text()`` and ``smart_text()`` will be removed.
|
||||||
|
|
||||||
|
* ``django.utils.translation.ugettext()``, ``ugettext_lazy()``,
|
||||||
|
``ugettext_noop()``, ``ungettext()``, and ``ungettext_lazy()`` will be
|
||||||
|
removed.
|
||||||
|
|
||||||
.. _deprecation-removed-in-3.1:
|
.. _deprecation-removed-in-3.1:
|
||||||
|
|
||||||
3.1
|
3.1
|
||||||
|
|
|
@ -978,7 +978,6 @@ between unicode and bytestrings. If your code doesn't support Python 2, use the
|
||||||
functions without the ``u``.
|
functions without the ``u``.
|
||||||
|
|
||||||
.. function:: gettext(message)
|
.. function:: gettext(message)
|
||||||
.. function:: ugettext(message)
|
|
||||||
|
|
||||||
Translates ``message`` and returns it as a string.
|
Translates ``message`` and returns it as a string.
|
||||||
|
|
||||||
|
@ -989,7 +988,6 @@ functions without the ``u``.
|
||||||
For more information, see :ref:`contextual-markers`.
|
For more information, see :ref:`contextual-markers`.
|
||||||
|
|
||||||
.. function:: gettext_lazy(message)
|
.. function:: gettext_lazy(message)
|
||||||
.. function:: ugettext_lazy(message)
|
|
||||||
.. function:: pgettext_lazy(context, message)
|
.. function:: pgettext_lazy(context, message)
|
||||||
|
|
||||||
Same as the non-lazy versions above, but using lazy execution.
|
Same as the non-lazy versions above, but using lazy execution.
|
||||||
|
@ -997,7 +995,6 @@ functions without the ``u``.
|
||||||
See :ref:`lazy translations documentation <lazy-translations>`.
|
See :ref:`lazy translations documentation <lazy-translations>`.
|
||||||
|
|
||||||
.. function:: gettext_noop(message)
|
.. function:: gettext_noop(message)
|
||||||
.. function:: ugettext_noop(message)
|
|
||||||
|
|
||||||
Marks strings for translation but doesn't translate them now. This can be
|
Marks strings for translation but doesn't translate them now. This can be
|
||||||
used to store strings in global variables that should stay in the base
|
used to store strings in global variables that should stay in the base
|
||||||
|
@ -1005,7 +1002,6 @@ functions without the ``u``.
|
||||||
later.
|
later.
|
||||||
|
|
||||||
.. function:: ngettext(singular, plural, number)
|
.. function:: ngettext(singular, plural, number)
|
||||||
.. function:: ungettext(singular, plural, number)
|
|
||||||
|
|
||||||
Translates ``singular`` and ``plural`` and returns the appropriate string
|
Translates ``singular`` and ``plural`` and returns the appropriate string
|
||||||
based on ``number``.
|
based on ``number``.
|
||||||
|
@ -1016,7 +1012,6 @@ functions without the ``u``.
|
||||||
based on ``number`` and the ``context``.
|
based on ``number`` and the ``context``.
|
||||||
|
|
||||||
.. function:: ngettext_lazy(singular, plural, number)
|
.. function:: ngettext_lazy(singular, plural, number)
|
||||||
.. function:: ungettext_lazy(singular, plural, number)
|
|
||||||
.. function:: npgettext_lazy(context, singular, plural, number)
|
.. function:: npgettext_lazy(context, singular, plural, number)
|
||||||
|
|
||||||
Same as the non-lazy versions above, but using lazy execution.
|
Same as the non-lazy versions above, but using lazy execution.
|
||||||
|
|
|
@ -378,7 +378,7 @@ Translating URL patterns
|
||||||
Django can now look for a language prefix in the URLpattern when using the new
|
Django can now look for a language prefix in the URLpattern when using the new
|
||||||
:func:`~django.conf.urls.i18n.i18n_patterns` helper function.
|
:func:`~django.conf.urls.i18n.i18n_patterns` helper function.
|
||||||
It's also now possible to define translatable URL patterns using
|
It's also now possible to define translatable URL patterns using
|
||||||
:func:`~django.utils.translation.ugettext_lazy`. See
|
``django.utils.translation.ugettext_lazy()``. See
|
||||||
:ref:`url-internationalization` for more information about the language prefix
|
:ref:`url-internationalization` for more information about the language prefix
|
||||||
and how to internationalize URL patterns.
|
and how to internationalize URL patterns.
|
||||||
|
|
||||||
|
|
|
@ -309,6 +309,14 @@ Miscellaneous
|
||||||
aliases for: :func:`urllib.parse.quote`, :func:`~urllib.parse.quote_plus`,
|
aliases for: :func:`urllib.parse.quote`, :func:`~urllib.parse.quote_plus`,
|
||||||
:func:`~urllib.parse.unquote`, and :func:`~urllib.parse.unquote_plus`.
|
:func:`~urllib.parse.unquote`, and :func:`~urllib.parse.unquote_plus`.
|
||||||
|
|
||||||
|
* ``django.utils.translation.ugettext()``, ``ugettext_lazy()``,
|
||||||
|
``ugettext_noop()``, ``ungettext()``, and ``ungettext_lazy()`` are deprecated
|
||||||
|
in favor of the functions that they're aliases for:
|
||||||
|
:func:`django.utils.translation.gettext`,
|
||||||
|
:func:`~django.utils.translation.gettext_lazy`,
|
||||||
|
:func:`~django.utils.translation.gettext_noop`,
|
||||||
|
:func:`~django.utils.translation.ngettext`, and
|
||||||
|
:func:`~django.utils.translation.ngettext_lazy`.
|
||||||
|
|
||||||
.. _removed-features-3.0:
|
.. _removed-features-3.0:
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ from django.test import (
|
||||||
RequestFactory, SimpleTestCase, TestCase, override_settings,
|
RequestFactory, SimpleTestCase, TestCase, override_settings,
|
||||||
)
|
)
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
from django.utils.formats import (
|
from django.utils.formats import (
|
||||||
date_format, get_format, get_format_modules, iter_format_modules, localize,
|
date_format, get_format, get_format_modules, iter_format_modules, localize,
|
||||||
localize_input, reset_format_cache, sanitize_separators, time_format,
|
localize_input, reset_format_cache, sanitize_separators, time_format,
|
||||||
|
@ -34,7 +35,8 @@ from django.utils.translation import (
|
||||||
get_language, get_language_bidi, get_language_from_request,
|
get_language, get_language_bidi, get_language_from_request,
|
||||||
get_language_info, gettext, gettext_lazy, ngettext, ngettext_lazy,
|
get_language_info, gettext, gettext_lazy, ngettext, ngettext_lazy,
|
||||||
npgettext, npgettext_lazy, pgettext, to_language, to_locale, trans_null,
|
npgettext, npgettext_lazy, pgettext, to_language, to_locale, trans_null,
|
||||||
trans_real, ugettext, ugettext_lazy, ungettext, ungettext_lazy,
|
trans_real, ugettext, ugettext_lazy, ugettext_noop, ungettext,
|
||||||
|
ungettext_lazy,
|
||||||
)
|
)
|
||||||
from django.utils.translation.reloader import (
|
from django.utils.translation.reloader import (
|
||||||
translation_file_changed, watch_for_translation_changes,
|
translation_file_changed, watch_for_translation_changes,
|
||||||
|
@ -74,13 +76,39 @@ class TranslationTests(SimpleTestCase):
|
||||||
"""
|
"""
|
||||||
Pre-Django 2.0 aliases with u prefix are still available.
|
Pre-Django 2.0 aliases with u prefix are still available.
|
||||||
"""
|
"""
|
||||||
self.assertEqual(ugettext("Image"), "Bild")
|
msg = (
|
||||||
self.assertEqual(ugettext_lazy("Image"), gettext_lazy("Image"))
|
'django.utils.translation.ugettext_noop() is deprecated in favor '
|
||||||
self.assertEqual(ungettext("%d year", "%d years", 0) % 0, "0 Jahre")
|
'of django.utils.translation.gettext_noop().'
|
||||||
self.assertEqual(
|
|
||||||
ungettext_lazy("%d year", "%d years", 0) % 0,
|
|
||||||
ngettext_lazy("%d year", "%d years", 0) % 0,
|
|
||||||
)
|
)
|
||||||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||||||
|
self.assertEqual(ugettext_noop("Image"), "Image")
|
||||||
|
msg = (
|
||||||
|
'django.utils.translation.ugettext() is deprecated in favor of '
|
||||||
|
'django.utils.translation.gettext().'
|
||||||
|
)
|
||||||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||||||
|
self.assertEqual(ugettext("Image"), "Bild")
|
||||||
|
msg = (
|
||||||
|
'django.utils.translation.ugettext_lazy() is deprecated in favor '
|
||||||
|
'of django.utils.translation.gettext_lazy().'
|
||||||
|
)
|
||||||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||||||
|
self.assertEqual(ugettext_lazy("Image"), gettext_lazy("Image"))
|
||||||
|
msg = (
|
||||||
|
'django.utils.translation.ungettext() is deprecated in favor of '
|
||||||
|
'django.utils.translation.ngettext().'
|
||||||
|
)
|
||||||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||||||
|
self.assertEqual(ungettext("%d year", "%d years", 0) % 0, "0 Jahre")
|
||||||
|
msg = (
|
||||||
|
'django.utils.translation.ungettext_lazy() is deprecated in favor '
|
||||||
|
'of django.utils.translation.ngettext_lazy().'
|
||||||
|
)
|
||||||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||||||
|
self.assertEqual(
|
||||||
|
ungettext_lazy("%d year", "%d years", 0) % 0,
|
||||||
|
ngettext_lazy("%d year", "%d years", 0) % 0,
|
||||||
|
)
|
||||||
|
|
||||||
@translation.override('fr')
|
@translation.override('fr')
|
||||||
def test_plural(self):
|
def test_plural(self):
|
||||||
|
|
Loading…
Reference in New Issue