我在国际化我的应用程序时遇到了困难,所以我在这里提供一个我的实现失败的最小示例。
考虑以下步骤以在 django 中生成具有国际支持的网站:
转到终端中您最喜欢的文件夹,然后:
django-admin.py startproject mysite
cd mysite/
mkdir locale
python manage.py startapp main
# (1) modify mysite/urls.py
# (2) modify main/views.py
# (3) modify mysite/settings.py
django-admin.py makemessages -l de
# (4) modify locale/de/LC_MESSAGES/django.po
django-admin.py compilemessages -l de
python manage.py runserver
在哪里:
## (1) mysite/urls.py
urlpatterns = patterns('',
url(r'^$', 'main.views.home'),
)
## (2) main/views.py
from django.http import HttpResponse
from django.utils.translation import ugettext as _
def home(request):
return HttpResponse(_('Hello'))
## (3) mysite/settings.py
LANGUAGE_CODE = 'de'
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + \
('django.core.context_processors.i18n',) # ensures all django processors are used.
## (4) locale/de/LC_MESSAGES/django.po
#: main/views.py:6
msgid "Hello"
msgstr "Hallo"
我假设该网站只有一种语言,因此,我没有通过django 文档激活中间件语言环境:
如果您想让每个单独的用户指定他或她喜欢的语言,请使用 LocaleMiddleware。LocaleMiddleware 启用基于请求数据的语言选择。它为每个用户定制内容。
此实现不会产生所需的“Hello”到“Hallo”的翻译。我究竟做错了什么?