Removed deprecated Chinese language codes; refs #18149.
This commit is contained in:
parent
b845951fd4
commit
f0a1df0b01
|
@ -130,10 +130,8 @@ LANGUAGES = (
|
||||||
('uk', gettext_noop('Ukrainian')),
|
('uk', gettext_noop('Ukrainian')),
|
||||||
('ur', gettext_noop('Urdu')),
|
('ur', gettext_noop('Urdu')),
|
||||||
('vi', gettext_noop('Vietnamese')),
|
('vi', gettext_noop('Vietnamese')),
|
||||||
('zh-cn', gettext_noop('Simplified Chinese')),
|
|
||||||
('zh-hans', gettext_noop('Simplified Chinese')),
|
('zh-hans', gettext_noop('Simplified Chinese')),
|
||||||
('zh-hant', gettext_noop('Traditional Chinese')),
|
('zh-hant', gettext_noop('Traditional Chinese')),
|
||||||
('zh-tw', gettext_noop('Traditional Chinese')),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Languages using BiDi (right-to-left) layout
|
# Languages using BiDi (right-to-left) layout
|
||||||
|
|
|
@ -511,10 +511,6 @@ LANG_INFO = {
|
||||||
},
|
},
|
||||||
'zh-cn': {
|
'zh-cn': {
|
||||||
'fallback': ['zh-hans'],
|
'fallback': ['zh-hans'],
|
||||||
'bidi': False,
|
|
||||||
'code': 'zh-cn',
|
|
||||||
'name': 'Simplified Chinese',
|
|
||||||
'name_local': '简体中文',
|
|
||||||
},
|
},
|
||||||
'zh-hans': {
|
'zh-hans': {
|
||||||
'bidi': False,
|
'bidi': False,
|
||||||
|
@ -542,9 +538,5 @@ LANG_INFO = {
|
||||||
},
|
},
|
||||||
'zh-tw': {
|
'zh-tw': {
|
||||||
'fallback': ['zh-hant'],
|
'fallback': ['zh-hant'],
|
||||||
'bidi': False,
|
|
||||||
'code': 'zh-tw',
|
|
||||||
'name': 'Traditional Chinese',
|
|
||||||
'name_local': '繁體中文',
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,45 +0,0 @@
|
||||||
# -*- encoding: utf-8 -*-
|
|
||||||
# This file is distributed under the same license as the Django package.
|
|
||||||
#
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
# The *_FORMAT strings use the Django date format syntax,
|
|
||||||
# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
||||||
DATE_FORMAT = 'Y年n月j日' # 2016年9月5日
|
|
||||||
TIME_FORMAT = 'H:i' # 20:45
|
|
||||||
DATETIME_FORMAT = 'Y年n月j日 H:i' # 2016年9月5日 20:45
|
|
||||||
YEAR_MONTH_FORMAT = 'Y年n月' # 2016年9月
|
|
||||||
MONTH_DAY_FORMAT = 'm月j日' # 9月5日
|
|
||||||
SHORT_DATE_FORMAT = 'Y年n月j日' # 2016年9月5日
|
|
||||||
SHORT_DATETIME_FORMAT = 'Y年n月j日 H:i' # 2016年9月5日 20:45
|
|
||||||
FIRST_DAY_OF_WEEK = 1 # 星期一 (Monday)
|
|
||||||
|
|
||||||
# The *_INPUT_FORMATS strings use the Python strftime format syntax,
|
|
||||||
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
|
|
||||||
DATE_INPUT_FORMATS = (
|
|
||||||
'%Y/%m/%d', # '2016/09/05'
|
|
||||||
'%Y-%m-%d', # '2016-09-05'
|
|
||||||
'%Y年%n月%j日', # '2016年9月5日'
|
|
||||||
)
|
|
||||||
|
|
||||||
TIME_INPUT_FORMATS = (
|
|
||||||
'%H:%M', # '20:45'
|
|
||||||
'%H:%M:%S', # '20:45:29'
|
|
||||||
'%H:%M:%S.%f', # '20:45:29.000200'
|
|
||||||
)
|
|
||||||
|
|
||||||
DATETIME_INPUT_FORMATS = (
|
|
||||||
'%Y/%m/%d %H:%M', # '2016/09/05 20:45'
|
|
||||||
'%Y-%m-%d %H:%M', # '2016-09-05 20:45'
|
|
||||||
'%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45'
|
|
||||||
'%Y/%m/%d %H:%M:%S', # '2016/09/05 20:45:29'
|
|
||||||
'%Y-%m-%d %H:%M:%S', # '2016-09-05 20:45:29'
|
|
||||||
'%Y年%n月%j日 %H:%M:%S', # '2016年9月5日 20:45:29'
|
|
||||||
'%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200'
|
|
||||||
'%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200'
|
|
||||||
'%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200'
|
|
||||||
)
|
|
||||||
|
|
||||||
DECIMAL_SEPARATOR = '.'
|
|
||||||
THOUSAND_SEPARATOR = ''
|
|
||||||
NUMBER_GROUPING = 4
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -1,45 +0,0 @@
|
||||||
# -*- encoding: utf-8 -*-
|
|
||||||
# This file is distributed under the same license as the Django package.
|
|
||||||
#
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
# The *_FORMAT strings use the Django date format syntax,
|
|
||||||
# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
||||||
DATE_FORMAT = 'Y年n月j日' # 2016年9月5日
|
|
||||||
TIME_FORMAT = 'H:i' # 20:45
|
|
||||||
DATETIME_FORMAT = 'Y年n月j日 H:i' # 2016年9月5日 20:45
|
|
||||||
YEAR_MONTH_FORMAT = 'Y年n月' # 2016年9月
|
|
||||||
MONTH_DAY_FORMAT = 'm月j日' # 9月5日
|
|
||||||
SHORT_DATE_FORMAT = 'Y年n月j日' # 2016年9月5日
|
|
||||||
SHORT_DATETIME_FORMAT = 'Y年n月j日 H:i' # 2016年9月5日 20:45
|
|
||||||
FIRST_DAY_OF_WEEK = 1 # 星期一 (Monday)
|
|
||||||
|
|
||||||
# The *_INPUT_FORMATS strings use the Python strftime format syntax,
|
|
||||||
# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
|
|
||||||
DATE_INPUT_FORMATS = (
|
|
||||||
'%Y/%m/%d', # '2016/09/05'
|
|
||||||
'%Y-%m-%d', # '2016-09-05'
|
|
||||||
'%Y年%n月%j日', # '2016年9月5日'
|
|
||||||
)
|
|
||||||
|
|
||||||
TIME_INPUT_FORMATS = (
|
|
||||||
'%H:%M', # '20:45'
|
|
||||||
'%H:%M:%S', # '20:45:29'
|
|
||||||
'%H:%M:%S.%f', # '20:45:29.000200'
|
|
||||||
)
|
|
||||||
|
|
||||||
DATETIME_INPUT_FORMATS = (
|
|
||||||
'%Y/%m/%d %H:%M', # '2016/09/05 20:45'
|
|
||||||
'%Y-%m-%d %H:%M', # '2016-09-05 20:45'
|
|
||||||
'%Y年%n月%j日 %H:%M', # '2016年9月5日 14:45'
|
|
||||||
'%Y/%m/%d %H:%M:%S', # '2016/09/05 20:45:29'
|
|
||||||
'%Y-%m-%d %H:%M:%S', # '2016-09-05 20:45:29'
|
|
||||||
'%Y年%n月%j日 %H:%M:%S', # '2016年9月5日 20:45:29'
|
|
||||||
'%Y/%m/%d %H:%M:%S.%f', # '2016/09/05 20:45:29.000200'
|
|
||||||
'%Y-%m-%d %H:%M:%S.%f', # '2016-09-05 20:45:29.000200'
|
|
||||||
'%Y年%n月%j日 %H:%n:%S.%f', # '2016年9月5日 20:45:29.000200'
|
|
||||||
)
|
|
||||||
|
|
||||||
DECIMAL_SEPARATOR = '.'
|
|
||||||
THOUSAND_SEPARATOR = ''
|
|
||||||
NUMBER_GROUPING = 4
|
|
|
@ -15,7 +15,6 @@ from django.conf.locale import LANG_INFO
|
||||||
from django.core.exceptions import AppRegistryNotReady
|
from django.core.exceptions import AppRegistryNotReady
|
||||||
from django.core.signals import setting_changed
|
from django.core.signals import setting_changed
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.utils.deprecation import RemovedInDjango19Warning
|
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils._os import upath
|
from django.utils._os import upath
|
||||||
from django.utils.safestring import mark_safe, SafeData
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
|
@ -46,12 +45,6 @@ language_code_re = re.compile(r'^[a-z]{1,8}(?:-[a-z0-9]{1,8})*$', re.IGNORECASE)
|
||||||
|
|
||||||
language_code_prefix_re = re.compile(r'^/([\w-]+)(/|$)')
|
language_code_prefix_re = re.compile(r'^/([\w-]+)(/|$)')
|
||||||
|
|
||||||
# some browsers use deprecated locales. refs #18419
|
|
||||||
_DJANGO_DEPRECATED_LOCALES = {
|
|
||||||
'zh-cn': 'zh-hans',
|
|
||||||
'zh-tw': 'zh-hant',
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(setting_changed)
|
@receiver(setting_changed)
|
||||||
def reset_cache(**kwargs):
|
def reset_cache(**kwargs):
|
||||||
|
@ -213,11 +206,6 @@ def activate(language):
|
||||||
"""
|
"""
|
||||||
if not language:
|
if not language:
|
||||||
return
|
return
|
||||||
if language in _DJANGO_DEPRECATED_LOCALES:
|
|
||||||
msg = ("The use of the language code '%s' is deprecated. "
|
|
||||||
"Please use the '%s' translation instead.")
|
|
||||||
warnings.warn(msg % (language, _DJANGO_DEPRECATED_LOCALES[language]),
|
|
||||||
RemovedInDjango19Warning, stacklevel=2)
|
|
||||||
_active.value = translation(language)
|
_active.value = translation(language)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@ import os
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from django.test import SimpleTestCase, override_settings
|
from django.test import SimpleTestCase
|
||||||
from django.test.utils import reset_warning_registry
|
from django.test.utils import reset_warning_registry
|
||||||
from django.utils import six, translation
|
from django.utils import six
|
||||||
from django.utils.deprecation import RenameMethodsBase
|
from django.utils.deprecation import RenameMethodsBase
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
|
@ -175,24 +175,6 @@ class RenameMethodsTests(SimpleTestCase):
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
@override_settings(USE_I18N=True)
|
|
||||||
class DeprecatedChineseLanguageCodes(SimpleTestCase):
|
|
||||||
def test_deprecation_warning(self):
|
|
||||||
with warnings.catch_warnings(record=True) as recorded:
|
|
||||||
warnings.simplefilter('always')
|
|
||||||
with translation.override('zh-cn'):
|
|
||||||
pass
|
|
||||||
with translation.override('zh-tw'):
|
|
||||||
pass
|
|
||||||
msgs = [str(warning.message) for warning in recorded]
|
|
||||||
self.assertEqual(msgs, [
|
|
||||||
"The use of the language code 'zh-cn' is deprecated. "
|
|
||||||
"Please use the 'zh-hans' translation instead.",
|
|
||||||
"The use of the language code 'zh-tw' is deprecated. "
|
|
||||||
"Please use the 'zh-hant' translation instead.",
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
class DeprecatingSimpleTestCaseUrls(unittest.TestCase):
|
class DeprecatingSimpleTestCaseUrls(unittest.TestCase):
|
||||||
|
|
||||||
def test_deprecation(self):
|
def test_deprecation(self):
|
||||||
|
|
|
@ -972,11 +972,11 @@ class MiscTests(TestCase):
|
||||||
self.assertEqual(g(r), 'es')
|
self.assertEqual(g(r), 'es')
|
||||||
|
|
||||||
# This tests the following scenario: there isn't a main language (zh)
|
# This tests the following scenario: there isn't a main language (zh)
|
||||||
# translation of Django but there is a translation to variation (zh_CN)
|
# translation of Django but there is a translation to variation (zh-hans)
|
||||||
# the user sets zh-cn as the preferred language, it should be selected
|
# the user sets zh-hans as the preferred language, it should be selected
|
||||||
# by Django without falling back nor ignoring it.
|
# by Django without falling back nor ignoring it.
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,de'}
|
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-hans,de'}
|
||||||
self.assertEqual(g(r), 'zh-cn')
|
self.assertEqual(g(r), 'zh-hans')
|
||||||
|
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'NL'}
|
r.META = {'HTTP_ACCEPT_LANGUAGE': 'NL'}
|
||||||
self.assertEqual('nl', g(r))
|
self.assertEqual('nl', g(r))
|
||||||
|
@ -1022,32 +1022,6 @@ class MiscTests(TestCase):
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-tw,en'}
|
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-tw,en'}
|
||||||
self.assertEqual(g(r), 'zh-hant')
|
self.assertEqual(g(r), 'zh-hant')
|
||||||
|
|
||||||
@override_settings(
|
|
||||||
LANGUAGES=(
|
|
||||||
('en', 'English'),
|
|
||||||
('zh-cn', 'Simplified Chinese'),
|
|
||||||
('zh-hans', 'Simplified Chinese'),
|
|
||||||
('zh-hant', 'Traditional Chinese'),
|
|
||||||
('zh-tw', 'Traditional Chinese'),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
def test_backwards_compatibility(self):
|
|
||||||
"""
|
|
||||||
While the old chinese language codes are being deprecated, they should
|
|
||||||
still work as before the new language codes were introduced.
|
|
||||||
|
|
||||||
refs #18419 -- this is explicitly for backwards compatibility and
|
|
||||||
should be removed in Django 1.9
|
|
||||||
"""
|
|
||||||
g = get_language_from_request
|
|
||||||
r = self.rf.get('/')
|
|
||||||
r.COOKIES = {}
|
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,en'}
|
|
||||||
self.assertEqual(g(r), 'zh-cn')
|
|
||||||
|
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-tw,en'}
|
|
||||||
self.assertEqual(g(r), 'zh-tw')
|
|
||||||
|
|
||||||
def test_special_fallback_language(self):
|
def test_special_fallback_language(self):
|
||||||
"""
|
"""
|
||||||
Some languages may have special fallbacks that don't follow the simple
|
Some languages may have special fallbacks that don't follow the simple
|
||||||
|
@ -1085,12 +1059,12 @@ class MiscTests(TestCase):
|
||||||
self.assertEqual(g(r), 'es')
|
self.assertEqual(g(r), 'es')
|
||||||
|
|
||||||
# This tests the following scenario: there isn't a main language (zh)
|
# This tests the following scenario: there isn't a main language (zh)
|
||||||
# translation of Django but there is a translation to variation (zh_CN)
|
# translation of Django but there is a translation to variation (zh-hans)
|
||||||
# the user sets zh-cn as the preferred language, it should be selected
|
# the user sets zh-hans as the preferred language, it should be selected
|
||||||
# by Django without falling back nor ignoring it.
|
# by Django without falling back nor ignoring it.
|
||||||
r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'zh-cn'}
|
r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'zh-hans'}
|
||||||
r.META = {'HTTP_ACCEPT_LANGUAGE': 'de'}
|
r.META = {'HTTP_ACCEPT_LANGUAGE': 'de'}
|
||||||
self.assertEqual(g(r), 'zh-cn')
|
self.assertEqual(g(r), 'zh-hans')
|
||||||
|
|
||||||
def test_get_language_from_path_real(self):
|
def test_get_language_from_path_real(self):
|
||||||
g = trans_real.get_language_from_path
|
g = trans_real.get_language_from_path
|
||||||
|
@ -1238,8 +1212,8 @@ class TestLanguageInfo(TestCase):
|
||||||
"""
|
"""
|
||||||
li = get_language_info('zh-my')
|
li = get_language_info('zh-my')
|
||||||
self.assertEqual(li['code'], 'zh-hans')
|
self.assertEqual(li['code'], 'zh-hans')
|
||||||
li = get_language_info('zh-cn')
|
li = get_language_info('zh-hans')
|
||||||
self.assertEqual(li['code'], 'zh-cn')
|
self.assertEqual(li['code'], 'zh-hans')
|
||||||
|
|
||||||
|
|
||||||
class MultipleLocaleActivationTests(TestCase):
|
class MultipleLocaleActivationTests(TestCase):
|
||||||
|
|
Loading…
Reference in New Issue