mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #30241 -- Added more system checks of translation settings.
This commit is contained in:
committed by
Mariusz Felisiak
parent
d4783048ef
commit
4400d8296d
@@ -1,12 +1,15 @@
|
||||
from django.core.checks import Error
|
||||
from django.core.checks.translation import check_setting_language_code
|
||||
from django.core.checks.translation import (
|
||||
check_language_settings_consistent, check_setting_language_code,
|
||||
check_setting_languages, check_setting_languages_bidi,
|
||||
)
|
||||
from django.test import SimpleTestCase
|
||||
|
||||
|
||||
class TranslationCheckTests(SimpleTestCase):
|
||||
|
||||
def test_valid_language_code(self):
|
||||
tags = (
|
||||
def setUp(self):
|
||||
self.valid_tags = (
|
||||
'en', # language
|
||||
'mas', # language
|
||||
'sgn-ase', # language+extlang
|
||||
@@ -17,12 +20,7 @@ class TranslationCheckTests(SimpleTestCase):
|
||||
# FIXME: The following should be invalid:
|
||||
'sr@latin', # language+script
|
||||
)
|
||||
for tag in tags:
|
||||
with self.subTest(tag), override_settings(LANGUAGE_CODE=tag):
|
||||
self.assertEqual(check_setting_language_code(None), [])
|
||||
|
||||
def test_invalid_language_code(self):
|
||||
tags = (
|
||||
self.invalid_tags = (
|
||||
None, # invalid type: None.
|
||||
123, # invalid type: int.
|
||||
b'en', # invalid type: bytes.
|
||||
@@ -37,9 +35,60 @@ class TranslationCheckTests(SimpleTestCase):
|
||||
# FIXME: The following should be invalid:
|
||||
# 'sr@latin', # locale instead of language tag.
|
||||
)
|
||||
|
||||
def test_valid_language_code(self):
|
||||
for tag in self.valid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGE_CODE=tag):
|
||||
self.assertEqual(check_setting_language_code(None), [])
|
||||
|
||||
def test_invalid_language_code(self):
|
||||
msg = 'You have provided an invalid value for the LANGUAGE_CODE setting: %s.'
|
||||
for tag in tags:
|
||||
for tag in self.invalid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGE_CODE=tag):
|
||||
self.assertEqual(check_setting_language_code(None), [
|
||||
Error(msg % tag, id='translation.E001'),
|
||||
])
|
||||
|
||||
def test_valid_languages(self):
|
||||
for tag in self.valid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGES=[(tag, tag)]):
|
||||
self.assertEqual(check_setting_languages(None), [])
|
||||
|
||||
def test_invalid_languages(self):
|
||||
msg = 'You have provided an invalid language code in the LANGUAGES setting: %s.'
|
||||
for tag in self.invalid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGES=[(tag, tag)]):
|
||||
self.assertEqual(check_setting_languages(None), [
|
||||
Error(msg % tag, id='translation.E002'),
|
||||
])
|
||||
|
||||
def test_valid_languages_bidi(self):
|
||||
for tag in self.valid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGES_BIDI=[tag]):
|
||||
self.assertEqual(check_setting_languages_bidi(None), [])
|
||||
|
||||
def test_invalid_languages_bidi(self):
|
||||
msg = 'You have provided an invalid language code in the LANGUAGES_BIDI setting: %s.'
|
||||
for tag in self.invalid_tags:
|
||||
with self.subTest(tag), self.settings(LANGUAGES_BIDI=[tag]):
|
||||
self.assertEqual(check_setting_languages_bidi(None), [
|
||||
Error(msg % tag, id='translation.E003'),
|
||||
])
|
||||
|
||||
def test_inconsistent_language_settings(self):
|
||||
msg = (
|
||||
'You have provided a value for the LANGUAGE_CODE setting that is '
|
||||
'not in the LANGUAGES setting.'
|
||||
)
|
||||
with self.settings(LANGUAGE_CODE='fr', LANGUAGES=[('en', 'English')], LANGUAGES_BIDI=[]):
|
||||
self.assertEqual(check_language_settings_consistent(None), [
|
||||
Error(msg, id='translation.E004'),
|
||||
])
|
||||
msg = (
|
||||
'You have provided values in the LANGUAGES_BIDI setting that are '
|
||||
'not in the LANGUAGES setting.'
|
||||
)
|
||||
with self.settings(LANGUAGE_CODE='en', LANGUAGES=[('en', 'English')], LANGUAGES_BIDI=['he']):
|
||||
self.assertEqual(check_language_settings_consistent(None), [
|
||||
Error(msg, id='translation.E005'),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user