Django LANGUAGE_CODE ='en'但显示'fr'?

时间:2017-11-01 20:18:00

标签: python django

我使用内部{%trans%}在英文中编写了模板。

我决定把它翻译成法语,所以我把它放在设置中:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

LANGUAGES = (
    ('en', _('English')),
    ('fr', _('French')),
)

LANGUAGE_CODE = 'fr'

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

然后我使用makemessages和compilemessages来生成翻译的字符串。这工作得很好!我的网站是法语。

但现在我想让我的网站恢复英文, 所以我只需将LANGUAGE_CODE更改为:

LANGUAGE_CODE = 'en'

但我的网站仍然是法语!甚至django-debug-bar仍然是法语。

我找到的唯一解决方法是用LANGUAGES注释掉法语:

LANGUAGES = (
    ('en', _('English')),
    # ('fr', _('French')),
)
  • 我试图在列表中移动localMiddleware:没有成功,
  • 我试图清除cookies:没有成功。
  • 我生成了英语.mo和.po文件:没有成功
  • 我试过LANGUAGE_CODE ='en-us':没有成功

为什么LANGUAGE_CODE ='en'不起作用?

1 个答案:

答案 0 :(得分:3)

您需要发表评论或停用 settings.py。中的'django.middleware.locale.LocaleMiddleware',

此中间件处理请求参数中语言的选择。

翻译文档:

https://docs.djangoproject.com/en/1.11/topics/i18n/translation/#how-django-discovers-language-preference

中间件文档:

https://docs.djangoproject.com/en/1.11/ref/middleware/#module-django.middleware.locale