Переводы и gettext Django: устаревший оператор % (интерполяция строк)

Хотя 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на самом деле не возвращает строки, а обещания, объекты, которые вычисляются только при необходимости. .

5
задан Armando Pérez Marqués 12 June 2012 в 15:34
поделиться