title: Django translations and gettext: The deprecation of the % (string interpolation) operator
body: <p>Although Django Django does not yet support Python 3, it eventually will, so I want to keep my code the more "future-proof" possible.</p>
  
  <p>Since Python 2.7 the string interpolation operator (<code>%</code>) is being deprecated. And I realized that every string that needs to be translated is using the <code>%</code> interpolation syntax. And in the Django docs there is no mention of the new <code>str.format</code> method (the "new" official way of string formatting)...</p>
  
  <p>Maybe there is a limitation of the <code>gettext</code> library, but I don't think so, since the string appears identical in the .PO files.</p>
  
  <p>The question is if I can use the new string <code>format</code> method for translation.</p>
  
  <p>The old way:</p>
  
  <pre><code>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,
          }
  </code></pre>
  
  <p>The "new" way:</p>
  
  <pre><code>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,
          )
  </code></pre>
  
  <p>Also, <code>ugettext_lazy</code> does not really return strings, but <code>Promises</code>, objects that are evaluated only when needed.</p>