Django语言更改不起作用

 mobiledu2502913627 发布于 2023-01-29 14:51

我正在使用Django 1.6,感觉好像缺少一些东西,但是cookie设置为当前选择的语言,但显示语言保持默认。

对应代码:

settings.py

LANGUAGES = (
    ('hu', 'Hungarian'),
    ('en', 'English'),
)

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    "django.core.context_processors.request"
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    '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'
)
LANGUAGE_CODE = 'en-US'
TIME_ZONE = 'CET'
USE_I18N = True
USE_L10N = True
USE_TZ = True

urls.py

urlpatterns = patterns('',
    url(r'^i18n/', include('django.conf.urls.i18n')),
    ...
)

模板

{% extends 'base.html' %}
{% load i18n %}
...

{% trans "Modern Technologies" %}

...

我运行了makemessages -a来创建lang文件,安装了rosetta并编辑了语言。然后我运行了编译消息。在Chrome中检入cookie“ django_language”的设置正确。但是实际的文本仍然是默认的“现代技术”。

1 个回答
  • 您的中间件顺序与文档建议的顺序不同:

    要使用LocaleMiddleware,请将'django.middleware.locale.LocaleMiddleware'添加到您的MIDDLEWARE_CLASSES设置中。因为中间件顺序很重要,所以您应遵循以下准则:

    确保它是安装的第一个中间件之一。

    它应该出现在SessionMiddleware之后,因为LocaleMiddleware使用了会话数据。它也应该在CommonMiddleware之前出现,因为CommonMiddleware需要一种激活的语言才能解析请求的URL。

    如果使用CacheMiddleware,请将LocaleMiddleware放在其后。

    因此,您的中间件配置应如下所示:

    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        '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',
    )
    

    您还需要记住在设置文件中包括LOCALE_PATHS设置:

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

    2023-01-29 14:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有