2009-01-21 5 views
7

Ich habe ein mittelgroßes Django-Projekt (läuft auf AppEngine, wenn es einen Unterschied macht) und alle Strings, die in .po-Dateien leben, sollten sie haben.Django fehlende Übersetzung einiger Strings. Irgendeine Idee warum?

Ich sehe seltsames Verhalten, wo bestimmte Strings einfach nicht übersetzen. 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, übersetzen etwa 1/4 der Strings einfach nicht.

In der relevanten generierten MO-Datei eingrabend, sehe ich weder die msgid noch die msgstr vorhanden.

Hat jemand etwas Ähnliches gesehen? Irgendeine Idee, was passieren könnte?

  • trans-Tags sehen richtig
  • .po-Dateien korrekt aussehen
  • keine Fehler während compile_messages

Antwort

9

Ugh. Django, du bringst mich um.

Hier ist, was passiert war:

http://blog.e-shell.org/124

Aus irgendeinem Grund nur Django kennt, entschieden einige meiner Übersetzungen mit der Bemerkung ‚# fuzzy‘ zu schmücken. Es scheint gewählt zu haben, welche zufällig markiert werden.

Wie auch immer, bedeutet #fuzzy dies: „Tut dies nicht übersetzen, auch wenn hier die Übersetzung:“

ich dies hier, falls eine andere arme Seele über sie kommt in Zukunft verlassen würde.

+0

+1 standardmäßig PyCharm enthält #fuzzy oben in der Datei, um es zu deaktivieren. – Valchris

+0

Danke, hatte das gleiche Problem, du hast mir Zeit gespart :-) – Tommy

10

Der Fuzzy-Marker wird der Datei .po 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.