アプリの国際化がうまくいかないので、実装が失敗する最小限の例をここに示します。
国際的なサポートを備えた django で Web サイトを作成するには、次の手順を検討してください。
ターミナルでお気に入りのフォルダーに移動し、次のようにします。
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"
Web サイトには 1つの言語しかないと想定しているため、 django のドキュメントでミドルウェア ロケールをアクティブ化しませんでした。
個々のユーザーが好みの言語を指定できるようにする場合は、LocaleMiddleware を使用します。LocaleMiddleware は、リクエストからのデータに基づいて言語を選択できるようにします。ユーザーごとにコンテンツをカスタマイズします。
この実装では、「Hello」から「Hello」への目的の変換は生成されません。私は何を間違っていますか?