diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py
index b685a0ad4d..ead9c67db6 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 97abe476cd..faeb51423d 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 b6a877300b..0acc47e4b4 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 9314c4c735..606895c763 100644
--- a/lms/templates/dashboard/_dashboard_info_language.html
+++ b/lms/templates/dashboard/_dashboard_info_language.html
@@ -7,5 +7,5 @@
${_("Preferred Language")}
(${_("edit")})
- ${current_language['name_local']}
+ ${current_language}
diff --git a/lms/templates/modal/_modal-settings-language.html b/lms/templates/modal/_modal-settings-language.html
index 709e03a22a..c0858c711d 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:
% else: