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.
This commit is contained in:
Johannes Hoppe 2017-07-22 16:22:52 +02:00
parent ec3462e87a
commit 90028d9e36
3 changed files with 21 additions and 3 deletions

View file

@ -9,4 +9,4 @@ The application includes Select2 driven Django Widgets and Form Fields.
"""
__version__ = "5.11.0"
__version__ = "5.11.1"

View file

@ -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,)}

View file

@ -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):