Quoth Steven D'Aprano <st...@remove-this-cybersource.com.au>: > Whether using % or format(), I don't see the need to change the code, > only the strings. > > Using positional arguments is not really that different: > > "{0} {1}".format("dead", "parrot") > "{0} {1}".format("perroquet", "mort")
This should be something like: _("{0} {1}").format(_("dead"), _("parrot")) where il8n would substitute the template "{1} {0}" when doing French. > versus: > > "%s %s" % ("dead", "parrot") > "%s %s" % ("perroquet", "mort") > > In this case, the template on the left remains the same, you just have to > reorder the string arguments on the right. Clearly less satisfactory than > the solution using keyword substitution, but whatever solution you pick, > I don't see any advantage to format() over % formatting. Can you show an > example? Not less satisfactory, but rather unworkable. You can't do proper il8n with %s formatting, since there is no way for the il8n machinery to reorder the argument tuple. It can only translate the template string. So when doing il8n, the {} syntax wins out for brevity over the equivalent % syntax (%s(somename)s). Not that brevity is that important an argument. The new system is just so much more flexible than the old. As someone else said, the design is beautiful :) I have a couple thousand lines of python code I wrote a while back to layer on a system with this kind of flexibility...I was shocked and pleased when I saw the PEP, since it echoed so many of the ideas I had implemented in that code, plus more. And all done better of course :) --RDM -- http://mail.python.org/mailman/listinfo/python-list