Перевод Django - работает с тестовым клиентом, но не с браузером - PullRequest
1 голос
/ 05 ноября 2010

Не могу понять, почему не работает перевод django (i18n). Я использую английский в коде, и я написал переводы на французский. Странно, это работает, когда я использую django.test.client.Client, но не когда я использую веб-браузер.

Я попытался установить для Accept-Language значение fr в настройках своего браузера, а также попытался удалить ключ HTTP_ACCEPT_LANGUAGE из заголовка запроса.

Я установил язык fr с помощью представления setlang в django.conf.urls.i18n.

Когда я делаю:

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}

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

У меня есть это в моих настройках:

USE_I18N = True
#Probably ignored because of the django_language cookie
LANGUAGE_CODE = 'fr'
MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
)

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

Я почти уверен, что проблема в том, что браузер посылает django, что влияет на перевод, но я не могу понять, что. Я сравнил два и единственные ссылки на язык - fr в обеих версиях.

У кого-нибудь есть предложения по поводу того, что я могу попробовать?

Я провел больше исследований с отладчиком и обнаружил, что каталог в _active не содержит мои переводы при использовании браузера, но содержит при использовании тестового клиента. Что может вызвать такое поведение?

1 Ответ

0 голосов
/ 02 декабря 2015

К сожалению, пока наступает 2016 год, добавление заголовка Accept-Language внутри тестового клиента все еще не работает. Но вы можете активировать язык вручную. Смотрите код ниже:

from django.utils.translation import activate
activate('fr')

Подробнее вы можете прочитать здесь .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...