Django Django はまだ Python 3 をサポートしていませんが、最終的にはサポートするので、コードを可能な限り「将来に備えた」状態に保ちたいと考えています。
Python 2.7 以降、文字列補間演算子 ( %
) は非推奨になりました。そして、翻訳が必要なすべての文字列が%
補間構文を使用していることに気付きました。そして、Djangoのドキュメントには、新しいstr.format
方法(文字列フォーマットの「新しい」公式の方法)についての言及はありません...
ライブラリの制限があるのかもしれgettext
ませんが、文字列が .PO ファイルで同じように見えるので、私はそうは思いません。
問題は、新しい文字列format
メソッドを翻訳に使用できるかどうかです。
古い方法:
class Post(models.Model):
title = models.CharField(max_length=50)
date = models.DateField()
# ...
def __unicode__(self):
return _('%(title)s (%(date)s)') % {
'title': self.title,
'date': self.date,
}
「新しい」方法:
class Post(models.Model):
title = models.CharField(max_length=50)
date = models.DateField()
# ...
def __unicode__(self):
return _('{title} ({date})').format(
title=self.title,
date=self.date,
)
また、ugettext_lazy
実際には文字列ではなくPromises
、必要な場合にのみ評価されるオブジェクトを返します。