2016-05-21 46 views
2

我有一個Django 1.9.1應用程序。有些以法語出現,但不是全部。當我訪問我的一個表格時,我會用法語(「Search」=>「Rechercher」,「Name」=>「Nom」)獲得一些庫存短語,但不會包含我的應用程序中的任何短語(例如「Add New Patient」 ,「看護人」都是英文)。django LANGUAGE_CODE不工作

我已經配置語言設置:

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",我看不到我在想什麼。

回答

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