Ich habe ein mittelgroßes Django-Projekt (läuft auf AppEngine, wenn es einen Unterschied macht) und alle Strings müssen in .po-Dateien leben, wie sie sollten.
Ich sehe seltsames Verhalten, bei dem bestimmte Zeichenfolgen nicht übersetzt werden. Sie werden in der .po-Datei angezeigt, wenn ich make_messages ausführe, wobei die korrekten Dateispeicherorte dort markiert sind, wo sich meine {% trans%} - Tags befinden. Die Übersetzungen sind vorhanden und sehen im Vergleich zu anderen Zeichenfolgen auf beiden Seiten korrekt aus. Aber wenn ich die betreffende Seite anzeige, werden etwa 1/4 der Strings einfach nicht übersetzt.
Wenn ich in die entsprechende generierte .mo-Datei einchecke, sehe ich weder die msgid noch die msgstr.
Hat jemand etwas Ähnliches gesehen? Irgendeine Idee, was passieren könnte?
Pfui. Django, du bringst mich um.
Hier ist was passiert:
Aus irgendeinem Grund weiß nur Django, dass er beschlossen hat, einige meiner Übersetzungen mit dem Kommentar "# fuzzy" zu dekorieren. Es scheint gewählt zu haben, welche zufällig markiert werden.
Wie auch immer, #fuzzy bedeutet das: "Übersetzt das nicht, auch wenn hier die Übersetzung steht:"
Ich werde das hier lassen, für den Fall, dass eine andere arme Seele in der Zukunft darauf stößt.
Der Fuzzy-Marker wird der .po-Datei durch Makemessages hinzugefügt. Wenn Sie eine neue Zeichenfolge (ohne Übersetzungen) haben, sucht sie nach ähnlichen Zeichenfolgen und fügt sie als Übersetzung in die Fuzzy-Markierung ein. Dies bedeutet, dass dies eine grobe Übereinstimmung ist, also zeigen Sie es dem Benutzer nicht an, aber es könnte ein guter Anfang für den menschlichen Übersetzer sein.
Es ist kein Django-Verhalten, es kommt von der gettext-Einrichtung.
Tags und Links python django internationalization translation