ฉันมีแอป Django 1.9.1 บางส่วนเป็นภาษาฝรั่งเศส แต่ไม่ใช่ทั้งหมด เมื่อฉันไปที่แบบฟอร์มใดแบบฟอร์มหนึ่งของฉัน ฉันได้รับวลีหุ้นเป็นภาษาฝรั่งเศส ("ค้นหา" => "Rechercher", "ชื่อ" => "Nom") แต่ไม่มีวลีใด ๆ ในแอปของฉัน (เช่น "เพิ่มผู้ป่วยใหม่" , "ผู้ดูแล" มีทั้งภาษาอังกฤษ)
ฉันได้กำหนดการตั้งค่าภาษาไว้แล้ว:
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 %}
บางส่วนเป็นภาษาฝรั่งเศส ดังนั้นจึงไม่น่าจะเป็นปัญหาอยู่แล้ว
ฉันใช้ด่วน ตัวสลับภาษาเพื่อส่ง Accept-Language: ส่วนหัว HTTP 'fr'
แถบเครื่องมือดีบัก Django จะแสดงเป็นภาษาฝรั่งเศส (!) และระบุว่า "Accept-Language: fr" ในคำขอ HTTP และ "Content-Language: fr" ในการตอบสนอง HTTP นอกจากนี้ยังบอกว่าตัวแปร Django LANGUAGE_CODE คือ "en-us" (?) แม้ว่าฉันจะใส่ความคิดเห็นในการตั้งค่านั้นก็ตาม
ฉันได้อ่าน "วิธีที่ Django ค้นพบภาษา การตั้งค่า" และฉันไม่เห็นสิ่งที่ฉันขาดหายไป