[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