我有一个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 %}
其中一些是法语,所以这不应该是问题。
我使用Quick Language Switcher发送Accept-Language:HTTP标头'fr'。
Django调试工具栏以法语(!)显示,并在HTTP请求中显示“Accept-Language:fr”,在HTTP响应中显示“Content-Language:fr”。它还说Django变量LANGUAGE_CODE是“en-us”(?),即使我已将该设置注释掉。
我已阅读"How Django discovers language preference"而我看不到我错过的内容。
答案 0 :(得分:2)
我的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"),
)