Warum nicht django nehmen, meine Sprache-Datei zu berücksichtigen?
Folgte ich die ganze Dokumentation über die text-übersetzung, aber django nicht meine .mo
- Datei berücksichtigt.
Einige Fakten:
- Ich erstellte eine
conf/locale/
Ordner in das Stammverzeichnis meines Projektes django.po
generiert wurde erfolgreich mitdjango-admin.py makemessages -l fr
django.mo
generiert wurde erfolgreich mitdjango-admin.py compilemessages
Also meine Ordner Struktur ist:
project/
site/
locale/
fr/
LC_MESSAGES/
django.mo
django.po
- In
settings.py
habe ichLANGUAGE_CODE = 'fr'
- Mein browser sendet korrekt
Accept-Language:fr-FR,fr;
request.LANGUAGE_CODE
zeigtfr
aus meiner Ansichten
Aber ich bekomme nichts übersetzt... Wie machen django nehmen diese Dateien berücksichtigt ?
Bearbeiten
Hinzufügen /home/www/project/locale
zu settings.LOCALE_PATHS
funktioniert. Jedoch, Django sollte zu finden dieser Weg von selbst, und ich weiß nicht, wie die Verwendung von absoluten Pfaden. Was ist hier passiert ?
- Kannst du vielleicht zeigen, wie Sie uns versuchen zu übersetzen, was in Ihrem code?
- Es kommt nicht von der Art, wie ich Dinge übersetzen (siehe mein edit), aber wenn es darauf ankommt:
_("text")
im Blick (mit lazy übersetzung) und{% trans "text" %}
Vorlagen. - Wollen einfach nur, um sicherzustellen, dass Sie den Aufruf der lazy-Variante von
gettext
bei der Verwendung_
:gettext_lazy
Du musst angemeldet sein, um einen Kommentar abzugeben.
LOCALE_PATHS
Django sucht für die übersetzung von Dateien in 3 Standorten standardmäßig:
LOCALE_PATHS/(language)/LC_MESSAGES/django.(po|mo)
$APPPATH/locale/(language)/LC_MESSAGES/django.(po|mo)
$PYTHONPATH/django/conf/locale/(language)/LC_MESSAGES/django.(po|mo)
LOCALE_PATHS müssen nur verwendet werden, wenn Ihre übersetzung Dateien nicht in Ihrem app-Verzeichnisse oder auf den PYTHON_PATH.
Beispiel LOCALE_PATHS in settings.py
MIDDLEWARE_CLASSES
Hinzufügen
django.middleware.locale.LocaleMiddleware
zuMIDDLEWARE_CLASSES
im settings.pySPRACHEN
$APPPATH/locale/<language>/LC_MESSAGES/django.(po|mo)
. Ich sollte nicht zu fügen Sie diese Zeile. LocaleMiddleware ordnungsgemäß Hinzugefügt wurde.$APPPATH
, das ist nicht derproject
Weg, aber diesite
- Verzeichnis. Könntest du dies als eine Antwort, so kann ich es akzeptieren ? Danke 😉