|
@@ -4,7 +4,7 @@ from os import path
|
|
|
|
|
|
from django.conf import settings
|
|
|
from django.test import TestCase
|
|
|
-from django.utils.translation import activate, deactivate
|
|
|
+from django.utils.translation import override, activate
|
|
|
from django.utils.text import javascript_quote
|
|
|
|
|
|
from regressiontests.views.urls import locale_dir
|
|
@@ -42,15 +42,6 @@ class JsI18NTests(TestCase):
|
|
|
settings.LANGUAGE_CODE.
|
|
|
"""
|
|
|
|
|
|
- def setUp(self):
|
|
|
- self.old_language_code = settings.LANGUAGE_CODE
|
|
|
- self.old_installed_apps = settings.INSTALLED_APPS
|
|
|
-
|
|
|
- def tearDown(self):
|
|
|
- deactivate()
|
|
|
- settings.LANGUAGE_CODE = self.old_language_code
|
|
|
- settings.INSTALLED_APPS = self.old_installed_apps
|
|
|
-
|
|
|
def test_jsi18n_with_missing_en_files(self):
|
|
|
"""
|
|
|
The javascript_catalog shouldn't load the fallback language in the
|
|
@@ -61,20 +52,20 @@ class JsI18NTests(TestCase):
|
|
|
languages and you've set settings.LANGUAGE_CODE to some other language
|
|
|
than English.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'es'
|
|
|
- activate('en-us')
|
|
|
- response = self.client.get('/views/jsi18n/')
|
|
|
- self.assertNotContains(response, 'esto tiene que ser traducido')
|
|
|
+ with self.settings(LANGUAGE_CODE='es'):
|
|
|
+ with override('en-us'):
|
|
|
+ response = self.client.get('/views/jsi18n/')
|
|
|
+ self.assertNotContains(response, 'esto tiene que ser traducido')
|
|
|
|
|
|
def test_jsi18n_fallback_language(self):
|
|
|
"""
|
|
|
Let's make sure that the fallback language is still working properly
|
|
|
in cases where the selected language cannot be found.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'fr'
|
|
|
- activate('fi')
|
|
|
- response = self.client.get('/views/jsi18n/')
|
|
|
- self.assertContains(response, 'il faut le traduire')
|
|
|
+ with self.settings(LANGUAGE_CODE='fr'):
|
|
|
+ with override('fi'):
|
|
|
+ response = self.client.get('/views/jsi18n/')
|
|
|
+ self.assertContains(response, 'il faut le traduire')
|
|
|
|
|
|
def testI18NLanguageNonEnglishDefault(self):
|
|
|
"""
|
|
@@ -83,10 +74,10 @@ class JsI18NTests(TestCase):
|
|
|
is English and there is not 'en' translation available. See #13388,
|
|
|
#3594 and #13726 for more details.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'fr'
|
|
|
- activate('en-us')
|
|
|
- response = self.client.get('/views/jsi18n/')
|
|
|
- self.assertNotContains(response, 'Choisir une heure')
|
|
|
+ with self.settings(LANGUAGE_CODE='fr'):
|
|
|
+ with override('en-us'):
|
|
|
+ response = self.client.get('/views/jsi18n/')
|
|
|
+ self.assertNotContains(response, 'Choisir une heure')
|
|
|
|
|
|
def test_nonenglish_default_english_userpref(self):
|
|
|
"""
|
|
@@ -94,21 +85,21 @@ class JsI18NTests(TestCase):
|
|
|
available. The Javascript i18n view must return a NON empty language catalog
|
|
|
with the proper English translations. See #13726 for more details.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'fr'
|
|
|
- settings.INSTALLED_APPS = list(settings.INSTALLED_APPS) + ['regressiontests.views.app0']
|
|
|
- activate('en-us')
|
|
|
- response = self.client.get('/views/jsi18n_english_translation/')
|
|
|
- self.assertContains(response, javascript_quote('this app0 string is to be translated'))
|
|
|
+ extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app0']
|
|
|
+ with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):
|
|
|
+ with override('en-us'):
|
|
|
+ response = self.client.get('/views/jsi18n_english_translation/')
|
|
|
+ self.assertContains(response, javascript_quote('this app0 string is to be translated'))
|
|
|
|
|
|
def testI18NLanguageNonEnglishFallback(self):
|
|
|
"""
|
|
|
Makes sure that the fallback language is still working properly
|
|
|
in cases where the selected language cannot be found.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'fr'
|
|
|
- activate('none')
|
|
|
- response = self.client.get('/views/jsi18n/')
|
|
|
- self.assertContains(response, 'Choisir une heure')
|
|
|
+ with self.settings(LANGUAGE_CODE='fr'):
|
|
|
+ with override('none'):
|
|
|
+ response = self.client.get('/views/jsi18n/')
|
|
|
+ self.assertContains(response, 'Choisir une heure')
|
|
|
|
|
|
|
|
|
class JsI18NTestsMultiPackage(TestCase):
|
|
@@ -116,15 +107,6 @@ class JsI18NTestsMultiPackage(TestCase):
|
|
|
Tests for django views in django/views/i18n.py that need to change
|
|
|
settings.LANGUAGE_CODE and merge JS translation from several packages.
|
|
|
"""
|
|
|
-
|
|
|
- def setUp(self):
|
|
|
- self.old_language_code = settings.LANGUAGE_CODE
|
|
|
- self.old_installed_apps = settings.INSTALLED_APPS
|
|
|
-
|
|
|
- def tearDown(self):
|
|
|
- settings.LANGUAGE_CODE = self.old_language_code
|
|
|
- settings.INSTALLED_APPS = self.old_installed_apps
|
|
|
-
|
|
|
def testI18NLanguageEnglishDefault(self):
|
|
|
"""
|
|
|
Check if the JavaScript i18n view returns a complete language catalog
|
|
@@ -133,29 +115,29 @@ class JsI18NTestsMultiPackage(TestCase):
|
|
|
translations of multiple Python packages is requested. See #13388,
|
|
|
#3594 and #13514 for more details.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'en-us'
|
|
|
- settings.INSTALLED_APPS = list(settings.INSTALLED_APPS) + ['regressiontests.views.app1', 'regressiontests.views.app2']
|
|
|
- activate('fr')
|
|
|
- response = self.client.get('/views/jsi18n_multi_packages1/')
|
|
|
- self.assertContains(response, javascript_quote('il faut traduire cette chaîne de caractères de app1'))
|
|
|
- deactivate()
|
|
|
+ extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app1', 'regressiontests.views.app2']
|
|
|
+ with self.settings(LANGUAGE_CODE='en-us', INSTALLED_APPS=extended_apps):
|
|
|
+ with override('fr'):
|
|
|
+ response = self.client.get('/views/jsi18n_multi_packages1/')
|
|
|
+ self.assertContains(response, javascript_quote('il faut traduire cette chaîne de caractères de app1'))
|
|
|
|
|
|
def testI18NDifferentNonEnLangs(self):
|
|
|
"""
|
|
|
Similar to above but with neither default or requested language being
|
|
|
English.
|
|
|
"""
|
|
|
- settings.LANGUAGE_CODE = 'fr'
|
|
|
- settings.INSTALLED_APPS = list(settings.INSTALLED_APPS) + ['regressiontests.views.app3', 'regressiontests.views.app4']
|
|
|
- activate('es-ar')
|
|
|
- response = self.client.get('/views/jsi18n_multi_packages2/')
|
|
|
- self.assertContains(response, javascript_quote('este texto de app3 debe ser traducido'))
|
|
|
- deactivate()
|
|
|
+ extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app3', 'regressiontests.views.app4']
|
|
|
+ with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):
|
|
|
+ with override('es-ar'):
|
|
|
+ response = self.client.get('/views/jsi18n_multi_packages2/')
|
|
|
+ self.assertContains(response, javascript_quote('este texto de app3 debe ser traducido'))
|
|
|
|
|
|
def testI18NWithLocalePaths(self):
|
|
|
- settings.LANGUAGE_CODE = 'es-ar'
|
|
|
- self.old_locale_paths = settings.LOCALE_PATHS
|
|
|
- settings.LOCALE_PATHS += (path.join(path.dirname(path.dirname(path.abspath(__file__))), 'app3', 'locale'),)
|
|
|
- response = self.client.get('/views/jsi18n/')
|
|
|
- self.assertContains(response, javascript_quote('este texto de app3 debe ser traducido'))
|
|
|
- settings.LOCALE_PATHS = self.old_locale_paths
|
|
|
+ extended_locale_paths = settings.LOCALE_PATHS + (
|
|
|
+ path.join(path.dirname(
|
|
|
+ path.dirname(path.abspath(__file__))), 'app3', 'locale'),)
|
|
|
+ with self.settings(LANGUAGE_CODE='es-ar', LOCALE_PATHS=extended_locale_paths):
|
|
|
+ with override('es-ar'):
|
|
|
+ response = self.client.get('/views/jsi18n/')
|
|
|
+ self.assertContains(response,
|
|
|
+ javascript_quote('este texto de app3 debe ser traducido'))
|