[Python-Dev] Replacement for print in Python 3.0

Bob Ippolito bob at redivi.com
Wed Sep 7 21:07:07 CEST 2005


On Sep 7, 2005, at 7:11 AM, Guido van Rossum wrote:

> On 9/7/05, Barry Warsaw <barry at python.org> wrote:
>
>> On Wed, 2005-09-07 at 05:23, Stephen J. Turnbull wrote:
>>
>>
>>> But print-ng looks
>>> like becoming the OOWTDI for a lot of applications.  IMO it's  
>>> just too
>>> early to give up on print-ng becoming the one obvious way to do  
>>> it for
>>> a lot of i18n apps, too.
>>>
>>
>> +1.  I have a gut feeling that we can make it easy for  
>> monolinguists to
>> use printng without caring or even knowing about i18n, but also  
>> make it
>> relatively painless to integrate i18n into an application or library.
>> However I haven't had time to really explore that idea.
>>
>
> I certainly didn't mean to rule that out. But I doubt that the only
> text to be i18n'd will occur in printf format strings. (In fact, I
> expect that few apps requiring i18n will be so primitive as to use
> *any* printf calls at all.)

In my experience, implementing i18n with *existing* Python (2.3 at  
the time) features was not a big deal.

We used a translation company to translate all of the strings, and  
they had no problem with normal Python %(format)s strings.  We gave  
it to them in an excel spreadsheet, and converted it to Apple  
".strings" style files (which we parse directly in the Windows  
version).  Granted, we highlighted all of the "%(format)s" in the  
spreadsheet so it was clear what should be preserved.

It worked like this:

def _(stringToBeLocalized):
     return anAppropriateString

and all formatted strings in the code looked like this:
_('default english string %(variable)s') % someDict

from real world production code:

_(u'Installing this software requires %(requiredSpace)s of space.\n 
\nYou have selected to install this software on the iPod "%(podName) 
s" (%(totalFree)s available)')  % {
     u'requiredSpace': self.installer.getRequiredFreeDiskSpace(),
     u'podName': self.podName,
     u'totalFree': space,
}

I was also able to easily automate the process of extracting strings  
to create that spreadsheet.  I wrote a simple script that parsed the  
Python modules and looked for function calls of "_" whose only  
argument was a constant string.  Worked great, and it was easy to write.

-bob



More information about the Python-Dev mailing list