Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django未正确翻译网站_Django_Python 2.7_Internationalization_Django I18n - Fatal编程技术网

Django未正确翻译网站

Django未正确翻译网站,django,python-2.7,internationalization,django-i18n,Django,Python 2.7,Internationalization,Django I18n,在花了太多时间在这上面之后,StackOverflow是为了救援 我将我的settings.py配置如下: ... TIME_ZONE = 'Europe/Berlin' LANGUAGE_CODE = 'de' LANGUAGES = ( ('en', u'English'), ('de', u'German'), ('fr', u'French'), ) USE_I18N = True USE_L10N = True MIDDLEWARE_CLASSES = (

在花了太多时间在这上面之后,StackOverflow是为了救援

我将我的settings.py配置如下:

...
TIME_ZONE = 'Europe/Berlin'

LANGUAGE_CODE = 'de'

LANGUAGES = (
  ('en', u'English'),
  ('de', u'German'),
  ('fr', u'French'),
)

USE_I18N = True

USE_L10N = True

MIDDLEWARE_CLASSES = (
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.request',
    'django.core.context_processors.static',
    'django.contrib.messages.context_processors.messages',
)
...
<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="/" />
    <select name="language">
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>
在我的
base.html
文件中,我有一个如下表格:

...
TIME_ZONE = 'Europe/Berlin'

LANGUAGE_CODE = 'de'

LANGUAGES = (
  ('en', u'English'),
  ('de', u'German'),
  ('fr', u'French'),
)

USE_I18N = True

USE_L10N = True

MIDDLEWARE_CLASSES = (
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.request',
    'django.core.context_processors.static',
    'django.contrib.messages.context_processors.messages',
)
...
<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="/" />
    <select name="language">
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>
在同一个
base.html
文件中,我在顶部有
{%loadi18n%}
,在正文中有一个示例
{%trans“这是标题。”%}
。在运行服务器之前,我执行了以下操作:

django-admin.py makemessages -l de
django-admin.py makemessages -l fr
上面的示例文本是由
makemessages
提取的,我为
msgstr
提供了相应的翻译。之后,我编写了django-admin.py compilemessages。命令运行良好,并在相应的区域设置文件夹中生成了.mo文件

我运行了服务器,表单不工作。在另一个StackOverflow帖子中,有人暗示我要删除
#,模糊的行
,我这样做了。我做错了什么


谢谢

您应该将
localemidleware
放在中间件类的
SessionMiddleware
之后:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
....
)
中间件类的顺序很重要。
localemidleware
使用会话数据检测用户语言,因此它必须位于
SessionMiddleware
之后。这里的文档中也提到了这一点


希望这对你有用

您应该将
localemidleware
放在中间件类的
SessionMiddleware
之后:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
....
)
中间件类的顺序很重要。
localemidleware
使用会话数据检测用户语言,因此它必须位于
SessionMiddleware
之后。这里的文档中也提到了这一点


希望这对你有用

谢谢!这正是问题所在。我把现场移了下来,砰的一声,它成功了@你能看一下我的帖子看看你能不能帮我?我的问题和这个差不多,但我不知道如何解决这个问题。谢谢这正是问题所在。我把现场移了下来,砰的一声,它成功了@你能看一下我的帖子看看你能不能帮我?我的问题和这个差不多,但我不知道如何解决这个问题。