【问题标题】:Django LANGUAGE_CODE = 'en' but displays 'fr'?Django LANGUAGE_CODE = 'en' 但显示'fr'?
【发布时间】:2018-04-14 06:02:24
【问题描述】:

我在里面使用 {% 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:没有成功,
  • 我尝试清除 cookie:没有成功。
  • 我生成了英文 .mo 和 .po 文件:没有成功
  • 我试过 LANGUAGE_CODE = 'en-us' :没有成功

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    您需要评论或禁用 'django.middleware.locale.LocaleMiddleware', 在 settings.py 中。

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


    翻译文件:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-20
      • 2023-03-07
      • 2014-12-13
      • 2016-09-18
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多