Django указать c язык для каждого пользователя не соблюдается - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно изменить язык по умолчанию для каждого пользователя, но в моем случае перевод не применяется с выбранным языком. Я сохраняю предпочтительный язык для каждого пользователя и устанавливаю его следующим образом:

# 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.

1 Ответ

0 голосов
/ 28 апреля 2020

Я обнаружил, что в файле языка .po некоторые переводы помечены

#, fuzzy

, и эти переводы не отображаются.

...