django LANGUAGE_CODE tidak berfungsi

Saya memiliki aplikasi Django 1.9.1. Beberapa di antaranya muncul dalam bahasa Prancis, tapi tidak semua. Ketika saya mengunjungi salah satu formulir saya, saya mendapatkan beberapa frasa stok dalam bahasa Prancis ("Search" => "Rechercher", "Name" => "Nom"), tetapi tidak ada frasa aplikasi saya (misalnya, "Tambahkan Pasien Baru" , "Cargiver" keduanya dalam bahasa Inggris).

Saya telah mengkonfigurasi pengaturan bahasa:

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"),
)

Saya telah mengkonfigurasi 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',
)

Saya memiliki beberapa file terjemahan yang berasal dari "makemessages -l fr" dengan frasa saya diterjemahkan:

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

Saya memuat i18n di template saya.

{% load i18n %}

Beberapa di antaranya berbahasa Prancis, jadi itu tidak menjadi masalah.

Saya menggunakan Cepat Pengalih Bahasa untuk mengirim Bahasa Terima: header HTTP 'fr'.

Toolbar debug Django muncul dalam bahasa Prancis (!), dan mengatakan "Bahasa Terima: fr" dalam permintaan HTTP, dan "Bahasa Konten: fr" dalam respons HTTP. Ia juga mengatakan variabel Django LANGUAGE_CODE adalah "en-us" (?), meskipun pengaturan itu sudah saya komentari.

Saya telah membaca "Bagaimana Django menemukan bahasa preferensi" dan saya tidak melihat apa yang saya lewatkan.


person dfrankow    schedule 21.05.2016    source sumber


Jawaban (1)


LOCALE_PATH saya salah. Itu satu tingkat terlalu tinggi. Inilah LOCALE_PATH yang tepat untuk saya:

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