Ich habe Schwierigkeiten bei der Internationalisierung meiner App, daher stelle ich hier ein minimales Beispiel vor, bei dem meine Implementierung fehlschlägt.Django Internationalisierung minimales Beispiel
Betrachten Sie die folgenden Schritte für eine Website in django mit internationalen Unterstützung produzieren:
im Terminal zu Ihrem Lieblingsordner gehen und:
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
wo:
## (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"
Ich gehe davon aus Die Website hat eine und nur eine Sprache, also habe ich nicht die Middleware-Locale vonaktiviert:
Wenn Sie jedes einzelne Benutzer festlegen lassen wollen, welche Sprache er oder sie vorzieht, LocaleMiddleware verwenden. LocaleMiddleware ermöglicht die Auswahl der Sprache anhand von Daten aus der Anfrage. Es passt den Inhalt für jeden Benutzer an.
Diese Implementierung erzeugt nicht die gewünschte Übersetzung von "Hallo" zu "Hallo". Was mache ich falsch?
Wenn Sie auf das Django Admin-Panel zugreifen, ist es auf Deutsch? Haben Sie versucht, 'LOCALE_PATHS' zu setzen? https://docs.djangoproject.com/de/dev/ref/settings/#locale-paths –
@ andrea.ge: von was ich von django Dokumentation verstanden habe, sollten diese die minimalen Schritte zur Übersetzung sein ... Ich habe es versucht LOCAL_PATHS, ohne Erfolg, und ich habe nicht versucht, admin, weil es eine DB erfordert, die ich nicht verwende ... –
Auf welchen Pfad haben Sie 'LOCALE_PATHS' gesetzt? –