diff options
| author | Claude Paroz <claude@2xlibre.net> | 2015-03-12 09:32:29 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2015-03-13 16:46:40 +0100 |
| commit | aa5ab114e34645823b219f9a866fd82fc26b427b (patch) | |
| tree | 2b286ba43dc34a103ccd7e69d1969518df2243f8 /tests | |
| parent | a8991b9b9f11e2d5308f677d0ad1768b88e2d2ec (diff) | |
Fixed #24122 -- Redirected to translated url after setting language
Thanks gbdlin for the initial patch and Tim Graham for the review.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/i18n/patterns/tests.py | 14 | ||||
| -rw-r--r-- | tests/view_tests/locale/nl/LC_MESSAGES/django.mo | bin | 515 -> 557 bytes | |||
| -rw-r--r-- | tests/view_tests/locale/nl/LC_MESSAGES/django.po | 4 | ||||
| -rw-r--r-- | tests/view_tests/tests/test_i18n.py | 17 | ||||
| -rw-r--r-- | tests/view_tests/urls.py | 6 |
5 files changed, 40 insertions, 1 deletions
diff --git a/tests/i18n/patterns/tests.py b/tests/i18n/patterns/tests.py index 1ac0e8a4a9..62ca49b67d 100644 --- a/tests/i18n/patterns/tests.py +++ b/tests/i18n/patterns/tests.py @@ -4,7 +4,7 @@ import os from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import ( - clear_url_caches, reverse, set_script_prefix, + clear_url_caches, reverse, set_script_prefix, translate_url, ) from django.http import HttpResponsePermanentRedirect from django.middleware.locale import LocaleMiddleware @@ -135,6 +135,18 @@ class URLTranslationTests(URLTestCaseBase): with translation.override('pt-br'): self.assertEqual(reverse('users'), '/pt-br/usuarios/') + def test_translate_url_utility(self): + with translation.override('en'): + self.assertEqual(translate_url('/en/non-existent/', 'nl'), '/en/non-existent/') + self.assertEqual(translate_url('/en/users/', 'nl'), '/nl/gebruikers/') + # Namespaced URL + self.assertEqual(translate_url('/en/account/register/', 'nl'), '/nl/profiel/registeren/') + self.assertEqual(translation.get_language(), 'en') + + with translation.override('nl'): + self.assertEqual(translate_url('/nl/gebruikers/', 'en'), '/en/users/') + self.assertEqual(translation.get_language(), 'nl') + class URLNamespaceTests(URLTestCaseBase): """ diff --git a/tests/view_tests/locale/nl/LC_MESSAGES/django.mo b/tests/view_tests/locale/nl/LC_MESSAGES/django.mo Binary files differindex 90066d70ec..ef12f2ade8 100644 --- a/tests/view_tests/locale/nl/LC_MESSAGES/django.mo +++ b/tests/view_tests/locale/nl/LC_MESSAGES/django.mo diff --git a/tests/view_tests/locale/nl/LC_MESSAGES/django.po b/tests/view_tests/locale/nl/LC_MESSAGES/django.po index e85f08ee80..4e5f7e2fb5 100644 --- a/tests/view_tests/locale/nl/LC_MESSAGES/django.po +++ b/tests/view_tests/locale/nl/LC_MESSAGES/django.po @@ -16,6 +16,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: urls.py:78 +msgid "^translated/$" +msgstr "^vertaald/$" + #: views/csrf.py:98 msgid "Forbidden" msgstr "Verboden" diff --git a/tests/view_tests/tests/test_i18n.py b/tests/view_tests/tests/test_i18n.py index 2f47007b04..ef11d7d82a 100644 --- a/tests/view_tests/tests/test_i18n.py +++ b/tests/view_tests/tests/test_i18n.py @@ -67,6 +67,23 @@ class I18NTests(TestCase): self.assertEqual(language_cookie['path'], '/test/') self.assertEqual(language_cookie['max-age'], 3600 * 7 * 2) + @modify_settings(MIDDLEWARE_CLASSES={ + 'append': 'django.middleware.locale.LocaleMiddleware', + }) + def test_lang_from_translated_i18n_pattern(self): + response = self.client.post( + '/i18n/setlang/', data={'language': 'nl'}, + follow=True, HTTP_REFERER='/en/translated/' + ) + self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], 'nl') + self.assertRedirects(response, 'http://testserver/nl/vertaald/') + # And reverse + response = self.client.post( + '/i18n/setlang/', data={'language': 'en'}, + follow=True, HTTP_REFERER='/nl/vertaald/' + ) + self.assertRedirects(response, 'http://testserver/en/translated/') + def test_jsi18n(self): """The javascript_catalog can be deployed with language settings""" for lang_code in ['es', 'fr', 'ru']: diff --git a/tests/view_tests/urls.py b/tests/view_tests/urls.py index 0bfcd587c2..061dd19751 100644 --- a/tests/view_tests/urls.py +++ b/tests/view_tests/urls.py @@ -2,7 +2,9 @@ from os import path from django.conf.urls import include, url +from django.conf.urls.i18n import i18n_patterns from django.utils._os import upath +from django.utils.translation import ugettext_lazy as _ from django.views import defaults, i18n, static from . import views @@ -73,6 +75,10 @@ urlpatterns = [ url(r'^site_media/(?P<path>.*)$', static.serve, {'document_root': media_dir}), ] +urlpatterns += i18n_patterns( + url(_(r'^translated/$'), views.index_page, name='i18n_prefixed'), +) + urlpatterns += [ url(r'view_exception/(?P<n>[0-9]+)/$', views.view_exception, name='view_exception'), url(r'template_exception/(?P<n>[0-9]+)/$', views.template_exception, name='template_exception'), |
