Мой бэкэнд использует Django, а мой интерфейс сделан с ReactJS.
Когда пользователи меняют язык своего профиля, я выполняю вызов POST ajax на /i18n/setlang/
с объектом данных {language: [language_code]}
и обновляю страницу.
У меня просто есть этот вызов ajax для изменения языка, набор файлов .po / .mo с переводами, и я использую gettext () для перевода строк в JS.
Это прекрасно работает в Chrome, но полностью игнорируется в Firefox и перевод не выполняется.Любая идея, почему?
Мое промежуточное ПО содержит django.middleware.locale.LocaleMiddleware
, и мой LOCALE_PATH установлен следующим образом:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'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.clickjacking.XFrameOptionsMiddleware',
]
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
ОБНОВЛЕНИЕ
В Chrome значение request.META['HTTP_ACCEPT_LANGUAGE']
is
fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,pl;q=0.6
(все языки, которые я поддерживаю), тогда как в Firefox он возвращает:
en,en-US;q=0.5
Все еще не уверенпочему ...