From 90028d9e368e8e2b7410b374120f86958b0c9157 Mon Sep 17 00:00:00 2001 From: Johannes Hoppe Date: Sat, 22 Jul 2017 16:22:52 +0200 Subject: [PATCH] Fix case issue -- get_langauge() only returns lower case get_langauge() only returns lower case some i18n file name include upper case language code tho. This will detect all lanugages. --- django_select2/__init__.py | 2 +- django_select2/forms.py | 8 ++++++-- tests/test_forms.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/django_select2/__init__.py b/django_select2/__init__.py index 412d1ed..8425278 100644 --- a/django_select2/__init__.py +++ b/django_select2/__init__.py @@ -9,4 +9,4 @@ The application includes Select2 driven Django Widgets and Form Fields. """ -__version__ = "5.11.0" +__version__ = "5.11.1" diff --git a/django_select2/forms.py b/django_select2/forms.py index d592ea4..b3bb410 100644 --- a/django_select2/forms.py +++ b/django_select2/forms.py @@ -113,8 +113,12 @@ class Select2Mixin(object): .. Note:: For more information visit https://docs.djangoproject.com/en/1.8/topics/forms/media/#media-as-a-dynamic-property """ - i18n_file = '%s/%s.js' % (settings.SELECT2_I18N_PATH, get_language()) - i18n_file = (i18n_file,) if get_language() in settings.SELECT2_I18N_AVAILABLE_LANGUAGES else () + try: + # get_language() will always return a lower case language code, where some files are named upper case. + i = [x.lower() for x in settings.SELECT2_I18N_AVAILABLE_LANGUAGES].index(get_language()) + i18n_file = ('%s/%s.js' % (settings.SELECT2_I18N_PATH, settings.SELECT2_I18N_AVAILABLE_LANGUAGES[i]), ) + except ValueError: + i18n_file = () return forms.Media( js=(settings.SELECT2_JS,) + i18n_file + ('django_select2/django_select2.js',), css={'screen': (settings.SELECT2_CSS,)} diff --git a/tests/test_forms.py b/tests/test_forms.py index 1012094..5c817ec 100644 --- a/tests/test_forms.py +++ b/tests/test_forms.py @@ -125,6 +125,20 @@ class TestSelect2Mixin(object): 'django_select2/django_select2.js' ] + translation.activate('sr-cyrl') + assert Select2Widget().media._js == [ + '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js', + '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/i18n/sr-Cyrl.js', + 'django_select2/django_select2.js' + ] + + translation.activate('zh-cn') + assert Select2Widget().media._js == [ + '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js', + '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/i18n/zh-CN.js', + 'django_select2/django_select2.js' + ] + class TestSelect2MixinSettings(object): def test_default_media(self):