我在里面使用 {% 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
Run Code Online (Sandbox Code Playgroud)
然后我使用 makemessages 和 compilemessages 来生成翻译后的字符串。这很好用!我的网站是法语。
但是现在我想让我的网站恢复为英文,所以我只需将 LANGUAGE_CODE 更改为:
LANGUAGE_CODE = 'en'
Run Code Online (Sandbox Code Playgroud)
但我的网站仍然是法语!甚至 django-debug-bar 仍然是法语。
我发现的唯一解决方法是在 LANGUAGES 中注释掉法语:
LANGUAGES = (
('en', _('English')),
# ('fr', _('French')),
)
Run Code Online (Sandbox Code Playgroud)
为什么 LANGUAGE_CODE = 'en' 不起作用?
您需要'django.middleware.locale.LocaleMiddleware',在 settings.py 中注释或禁用
。
这个中间件处理从请求参数中选择语言。
翻译文件:
中间件文档:
https://docs.djangoproject.com/en/1.11/ref/middleware/#module-django.middleware.locale
| 归档时间: |
|
| 查看次数: |
3098 次 |
| 最近记录: |