diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index b685a0ad4dd6d94d6febb9e9690afab1bac219f7..ead9c67db6f531ace1521bf5672d230c9eccbfc2 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -63,6 +63,7 @@ import external_auth.views from bulk_email.models import Optout, CourseAuthorization import shoppingcart +from user_api.models import UserPreference, LANGUAGE_KEY import track.views @@ -472,13 +473,13 @@ def dashboard(request): language_options = DarkLangConfig.current().released_languages_list - if not language_options: - language_options = [settings.LANGUAGE_CODE] + language_options.append(settings.LANGUAGE_CODE) - try: - current_language = translation.get_language_info(translation.get_language()) - except KeyError: - current_language = translation.get_language_info(settings.LANGUAGE_CODE) + cur_lang_code = UserPreference.get_preference(request.user, LANGUAGE_KEY) + if cur_lang_code: + current_language = settings.LANGUAGE_DICT[cur_lang_code] + else: + current_language = settings.LANGUAGE_DICT[settings.LANGUAGE_CODE] context = { 'course_enrollment_pairs': course_enrollment_pairs, @@ -499,6 +500,7 @@ def dashboard(request): 'billing_email': settings.PAYMENT_SUPPORT_EMAIL, 'language_options': language_options, 'current_language': current_language, + 'current_language_code': cur_lang_code, } return render_to_response('dashboard.html', context) diff --git a/common/djangoapps/user_api/middleware.py b/common/djangoapps/user_api/middleware.py index 97abe476cd502cb6e6a2254d90b61c961cdb1fec..faeb51423d7b796c6872ee0565d5cd08d5bedff7 100644 --- a/common/djangoapps/user_api/middleware.py +++ b/common/djangoapps/user_api/middleware.py @@ -16,9 +16,9 @@ class UserPreferenceMiddleware(object): def process_request(self, request): """ If a user's UserPreference contains a language preference and there is - no language set on the session, use the user's preference. + no language set on the session (i.e. from dark language overrides), use the user's preference. """ - if 'django_language' not in request.session and request.user.is_authenticated(): + if request.user.is_authenticated() and 'django_language' not in request.session: user_pref = UserPreference.get_preference(request.user, LANGUAGE_KEY) if user_pref: request.session['django_language'] = user_pref diff --git a/lms/envs/common.py b/lms/envs/common.py index b6a877300bc8ccb2f702f8273cc644356263c40a..0acc47e4b4cc28ad282035aed34b43a9bc8cad05 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -555,6 +555,8 @@ LANGUAGES = ( ('zh-tw', u'å°ç£æ£é«”'), # Chinese (Taiwan) ) +LANGUAGE_DICT = dict(LANGUAGES) + USE_I18N = True USE_L10N = True diff --git a/lms/templates/dashboard/_dashboard_info_language.html b/lms/templates/dashboard/_dashboard_info_language.html index 9314c4c7357c03cd212ebe67a3353573a321b076..606895c763e0d989ba0e43017685f5fc961e1c94 100644 --- a/lms/templates/dashboard/_dashboard_info_language.html +++ b/lms/templates/dashboard/_dashboard_info_language.html @@ -7,5 +7,5 @@ ${_("Preferred Language")} (<a href="#change_language" rel="leanModal" class="edit-language">${_("edit")}</a>) </span> - <span class="data">${current_language['name_local']}</span> + <span class="data">${current_language}</span> </li> diff --git a/lms/templates/modal/_modal-settings-language.html b/lms/templates/modal/_modal-settings-language.html index 709e03a22a7c70c4018decfeb7b9c598f9616a7b..c0858c711d29f28cf54058f65a1b52d540a44d98 100644 --- a/lms/templates/modal/_modal-settings-language.html +++ b/lms/templates/modal/_modal-settings-language.html @@ -34,7 +34,7 @@ % for abbrv in language_options: % for language in settings.LANGUAGES: % if abbrv == language[0]: - % if abbrv == current_language['code']: + % if abbrv == current_language_code: <option value="${language[0]}" selected="selected">${language[1]}</option> % else: <option value="${language[0]}">${language[1]}</option>