Мне нужно изменить язык по умолчанию для каждого пользователя, но в моем случае перевод не применяется с выбранным языком. Я сохраняю предпочтительный язык для каждого пользователя и устанавливаю его следующим образом:
# set default language
try:
user_language_filter = UserFilters.objects.get(user=request.user, element__iexact='defaultLanguage')
user_language = user_language_filter.value.lower()
except UserFilters.DoesNotExist:
user_language = 'en'
if translation.LANGUAGE_SESSION_KEY in request.session:
del request.session[translation.LANGUAGE_SESSION_KEY]
translation.activate(user_language)
request.session[translation.LANGUAGE_SESSION_KEY] = user_language
print(translation.get_language())
Здесь я извлекаю сохраненный язык для пользователя и, если он недоступен, задаю для него значение «en». print () показывает правильный язык. В моих настройках у меня есть:
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
....
LANGUAGES = (
('en', _('English')),
('fr', _('French'))
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, '../locale'),
)
makemessages и compilemessages правильно создают файлы по заданному пути.
В моем ListView у меня есть:
def get_context_data(self, **kwargs):
context = super(CompanyListView, self).get_context_data(**kwargs)
context.update({
'page_title': _('Manage Companies'),
})
return context
Текст перевести это в файлы локали, а также переведены. Я также напечатал {{LANGUAGE_CODE}} в шаблоне, который показывает неправильный. И в шаблоне page_title не переводится. Любая помощь приветствуется. Обновление Похоже, что перевод в представлении не выполняется. Если в шаблоне я использую {% trans 'для перевода'%}, это переводится так же, как и поля модели в ModelForms.