4

私のモデルのhelp_textにpgettext_lazyを使用すると、テンプレートが失敗します。それはugettext_lazyでうまく動作します。なぜpgettext_lazyはテンプレートを破損しますが、ugettext_lazyは破損しませんか?

エラー

Caught TypeError while rendering: Lazy object returned unexpected type. 

モデル

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)")) 

フォーム

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

テンプレート

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

それぞれの方法でヘルプテキストを設定した直後にモデルをデバッグしました。両方とも印刷されます

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

pgettext_lazyにバグがありますか?何か案は?

答えて

5

私は同じ問題を抱えていました。私は、これはエラーを取り除くでしょうが、翻訳されたとして、今manage.py makemessagesはラインをピックアップしていません

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

を使用しました。

は多分これはしかしあなたを助ける...

EDIT:

ああ、私は解決策を見つけた:

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

これは仕事を行います。

+0

よく...これは私がまだ見てきた最良のオプションです。共有してくれてありがとう。 –

+0

他に興味のあることがあります。 poedit(多くの翻訳者がpoファイルを読み書きするために使用するapp)は、pgettextが作成するmsgctxタグをサポートしていません。私の場合は、翻訳者にコメントを提供するために文脈を間違って使用していました。代わりに、標準のインラインコメント機能を使用するように変更しました(#翻訳者:blah blah blah) –

+0

編集:poctit 1.5.4がmsgctxtタグをサポートするように見えます。 –

関連する問題