Ich habe eine Frage zur Verwendung von ugettext und ugettext_lazy
für Übersetzungen. Ich habe gelernt, dass ich in Modellen verwenden sollte ugettext_lazy
, während in Ansichten ugettext. Aber gibt es noch andere Orte, an denen ich auch arbeiten sollte ugettext_lazy
? Was ist mit Formulardefinitionen? Gibt es Leistungsunterschiede zwischen ihnen?
Edit:
Und noch etwas. Manchmal statt ugettext_lazy
, ugettext_noop
verwendet wird. Wie in der Dokumentation angegeben, werden ugettext_noop
Zeichenfolgen nur zur Übersetzung markiert und zum spätestmöglichen Zeitpunkt übersetzt, bevor sie dem Benutzer angezeigt werden. Ich bin hier jedoch wenig verwirrt. Ist das nicht ähnlich wie bei der Ausführung ugettext_lazy
? Es fällt mir immer noch schwer zu entscheiden, welche ich in meinen Modellen und Formularen verwenden soll.
quelle
msg = "An error has occurred"; logging.error(msg);return HttpResponse(_(msg))? why need
_noop,?
wenn django ohne_noop
den String keine Übersetzung findet?_noop
?Eine hervorragende Verwendung von _noop ist, wenn Sie eine Nachricht auf Englisch für die Entwickler protokollieren möchten, die übersetzte Zeichenfolge jedoch einem Betrachter präsentieren möchten. Ein Beispiel hierfür finden Sie unter http://blog.bessas.me/posts/using-gettext-in-django/
quelle
Die Lazy-Version gibt ein Proxy-Objekt anstelle einer Zeichenfolge zurück und funktioniert in einigen Situationen nicht wie erwartet. Beispielsweise:
würde fehlschlagen, da die allerletzte Zeile versuchen würde, das erste Objekt in JSON zu serialisieren, und anstelle einer Zeichenfolge für "client" ein Proxy-Objekt hätte. Das Proxy-Objekt kann nicht in json serialisiert werden.
quelle