【发布时间】:2013-08-12 18:27:19
【问题描述】:
在这方面花费了太多时间之后,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',
)
...
在我的base.html 文件中,我有一个如下表格:
<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>
我的urls.py:
urlpatterns = patterns('',
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^$', 'MainApp.views.index'), #root
)
在同一个base.html 文件中,我在顶部有{% load i18n %},在正文中,我有一个样本{% trans "This is the title." %}。在运行服务器之前,我做了:
django-admin.py makemessages -l de
django-admin.py makemessages -l fr
上面的示例文本是由makemessages 提取的,我为msgstr 提供了相应的翻译。之后,我做了django-admin.py compilemessages. 命令运行良好,并在各自的语言环境文件夹中生成了 .mo 文件。
我运行服务器,但表单不起作用。在另一篇 StackOverflow 帖子中,有人提示我删除 #, fuzzy lines,我照做了。我究竟做错了什么?
谢谢!
【问题讨论】:
标签: django python-2.7 internationalization django-i18n