4

Wenn ich pgettext_lazy für den Hilfstext meines Modells verwende, schlägt meine Vorlage fehl. Es funktioniert gut mit ugettext_lazy.Warum bricht Pgettext_lazy meine Vorlage, aber Ugettext_lazy nicht?

Fehler

Caught TypeError while rendering: Lazy object returned unexpected type. 

Modell

class BalanceIncreaseOrder(models.Model): 
    amount = models.FloatField(help_text=pgettext_lazy("Translators: please localize this to reflect the correct currency", "Note: amount will be billed in United States dollars (USD)")) 

Formular

class BalanceIncreaseOrderForm(ModelFormRequired): 
    class Meta: 
     model = BalanceIncreaseOrder 
     fields = ("amount",) 

Vorlage

{% for field in form %} 
    {{ field }} 
{% endfor %} 

Ich habe das Modell sofort nach dem Festlegen des Hilfetextes in jeder Richtung getestet. Beide Male druckt es

<django.utils.functional.__proxy__ object at 0x10fcb3a50> 

Gibt es einen Fehler in Pgettext_lazy? Irgendwelche Ideen?

Antwort

5

Ich hatte das gleiche Problem. Ich benutzte

unicode(pgettext_lazy('context', 'string')) 

Dies wird die Beseitigung der Fehler, aber jetzt manage.py makemessages nicht die Linie abholen übersetzt.

dies wird Ihnen vielleicht .. obwohl helfen

EDIT:

Ah, fand ich eine Lösung:

pgettext_lazy(u'context', u'string') 

Dies wird die Arbeit erledigen.

+0

gut ... es ist die beste Option, die ich bisher gesehen habe. Danke für das Teilen. –

+0

etwas anderes, das von Interesse sein könnte. poedit (eine App, die von vielen Übersetzern verwendet wird, um die po-Dateien zu lesen/zu bearbeiten), unterstützt nicht das msgctx-Tag, das pgettext erzeugt. In meinem Fall habe ich den Kontext falsch verwendet, um dem Übersetzer einen Kommentar zu geben. Stattdessen habe ich es nur geändert, um die Standard-Inline-Kommentarfunktion zu verwenden (# Translators: blah blah blah) –

+0

edit: poedit 1.5.4 scheint das msgctxt-Tag zu unterstützen. –