django LANGUAGE_CODE не работает

У меня есть приложение Django 1.9.1. Некоторые из них появляются на французском языке, но не все. Когда я захожу в одну из своих форм, я получаю несколько стандартных фраз на французском («Search» => «Rechercher», «Name» => «Nom»), но не получаю никаких фраз из моего приложения (например, «Добавить нового пациента» , «Caregiver» на английском языке).

У меня настроены языковые настройки:

PROJECT_DIR = os.path.dirname(
    os.path.dirname(os.path.dirname(os.path.dirname(
    os.path.abspath(__file__)))))

LANGUAGES = [
  ('fr', _('French')),
  ('en', _('English')),
]
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (
    os.path.join(PROJECT_DIR, "locale"),
)

У меня настроено LocaleMiddleware:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    # LocaleMiddleware should be after SessionMiddleware and before CommonMiddleware
    # See https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#how-django-discovers-language-preference
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

У меня есть несколько файлов перевода, которые пришли из "makemessages -l fr" с переведенными моими фразами:

locale/fr/LC_MESSAGES/django.po
locale/fr/LC_MESSAGES/django.mo

Я загружаю i18n в свой шаблон.

{% load i18n %}

Некоторые из них на французском, так что это не должно быть проблемой.

Я использую Quick Переключатель языков для отправки HTTP-заголовка Accept-Language: fr.

Панель инструментов отладки Django отображается на французском языке (!) И говорит «Accept-Language: fr» в HTTP-запросе и «Content-Language: fr» в HTTP-ответе. Он также говорит, что переменная Django LANGUAGE_CODE является "en-us" (?), Хотя у меня этот параметр закомментирован.

Я прочитал "Как Django обнаруживает язык предпочтение ", и я не вижу, что мне не хватает.


person dfrankow    schedule 21.05.2016    source источник


Ответы (1)


Мой LOCALE_PATH был неправильным. Это было на один уровень выше. Вот подходящий для меня LOCALE_PATH:

BASE_DIR = os.path.dirname(
    os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

LOCALE_PATHS = (
    os.path.join(BASE_DIR, "locale"),
)
person dfrankow    schedule 21.05.2016