13 Stimmen

Django Internationalisierung und Übersetzungsproblem

Ich habe ein Problem mit Django-Übersetzungen.

Problem 1 - Ich habe den Text in der django.po-Datei aktualisiert, aber die Änderung erscheint nicht auf der Webseite.

Problem 2 - Ich habe meine eigene Lokalisierungsdatei mit django-admin.py makemessages -l et erstellt, den Übersetzungstext zur Datei hinzugefügt, aber auch diese erscheinen nicht auf der Seite.

Ich glaube nicht, dass es ein Einstellungsproblem ist, da die Übersetzungen aus der django.po-Datei auf der Website erscheinen, es sind nur die Änderungen und die Übersetzungen aus meiner eigenen generierten Datei, die nicht angezeigt werden.

Bearbeiten: Meine settings.py enthält dies:

gettext = lambda s: s
LANGUAGE_CODE = 'et'

LANGUAGES = (
             ('et', gettext('Estnisch')),
             )

Meine eigenen Lokalisierungsdateien befinden sich in

/pfad/zum/projekt/locale/et/LC_MESSAGES/

und die Dateien sind

django.mo und django.po

Die Datei, auf die ich mich in Problem 1 beziehe, ist die eigene estnische Übersetzung von Django, die ich geändert habe.

0 Stimmen

Sind Sie bereit für das Dokument über i18n? Ich vermute, dass Sie das i18n-Tag in den Vorlagen aktiviert haben. Sind Sie sicher, dass Ihre .po-Datei im richtigen Pfad liegt? Können Sie mehr Informationen schreiben?

0 Stimmen

Nun ja. i18n ist in Vorlagen mit {% load i18n %} aktiviert. Da sich die django.po-Datei im richtigen Pfad befindet (Problem 1), glaube ich nicht, dass es an der Aktivierung oder dem Laden von i18n liegt. Da bereits vorhandene Übersetzungen in die Vorlage geladen werden. Aber wie weiß ich, ob die Problem 2 Ländereinstellungsdateien am richtigen Ort sind? Sie befinden sich dort, wo sie von django-admin.py makemessages -l et erstellt wurden.

0 Stimmen

Lesen Sie dies: docs.djangoproject.com/en/1.1/topics/i18n/localization/… der Pfad wird sein: your_project/locale/et/LC_MESSAGES/django.po.

27voto

FernandoEscher Punkte 2830

Nun, ich hatte diesen gleichen Fehler vor einigen Momenten. Ich habe ihn gelöst, indem ich das "#, fuzzy" Tag über den Übersetzungszeichenfolgen in meinen django.po Dateien gelöscht habe. Es scheint, dass der übersetzte Text nicht angezeigt wird, wenn er dieses Tag hat. Stelle also sicher, dass du den Text übersetzt und dann diese Zeile löschst.

Hier ist ein Beispiel für einen übersetzten Text, der nicht in einer po-Datei angezeigt wird:

     #: course/models.py:13
     #, fuzzy
     msgid "code"
     msgstr "código"

Also lösche einfach die Markierung und lasse es so:

     #: course/models.py:13
     msgid "code"
     msgstr "código"

Ich hoffe, das funktioniert für dich. Viel Glück!

Referenz: http://share-experiences.com/blog/what-fuzzy-means-python-django-gettext/

PS: Ich weiß, dass du vor einigen Monaten dieses Problem hattest, aber ich hinterlasse diese Antwort, da wir nie gehört haben, ob du dieses Problem gelöst hast.

12voto

jmu Punkte 3549

Hatte ein ähnliches Problem mit Übersetzungen, die nicht angezeigt wurden. Das Festlegen der LOCALE_PATHS hat das Problem behoben:

# settings.py
USE_I18N = True
USE_L10N = True

LOCALE_PATHS = (
  '/pfad/zum/djangoapp/locale',
)

7voto

Tommaso Barbugli Punkte 11457

Übersetzungsdateien (PO) werden nur einmal im Speicher geladen, Änderungen an den PO-Dateien werden von Django nicht erkannt. Um die neuen Übersetzungsdateien zu laden, müssen Sie Django neu starten (z. B. durch Anhalten/Neustarten von runserver, Apache oder NGINX).

1voto

regiov Punkte 41

Ein weiterer Grund, warum Django-Übersetzungen nicht funktionieren, ist das Kompilieren der .po-Datei mit einer anderen Python-Version als der, die zum Ausführen Ihrer Anwendung verwendet wird. Stellen Sie sicher, dass Sie die gleiche Version verwenden.

0voto

xor Punkte 4214

Stellen Sie sicher, dass Sie ugettext_lazy und nicht ugettext verwenden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X