[Freeipa-devel] [PATCH 46/46] ticket 1669 - improve i18n docstring extraction

Rob Crittenden rcritten at redhat.com
Thu Aug 25 20:27:09 UTC 2011


Alexander Bokovoy wrote:
> On 25.08.2011 06:46, John Dennis wrote:
>> class foo(Command):
>>      '''
>>      The foo command takes out the garbage.
>>      '''
>>
>> Would become:
>>
>> class foo(Command):
>>      __doc__ = _('The foo command takes out the garbage.')
>>
>> But which docstrings need to be marked for translation? The makeapi
>> tool knows how to iterate over every command in our public API. It was
>> extended to validate every command's documentation and report if any
>> documentation is missing or not marked for translation. That
>> information was then used to identify each docstring in the code which
>> needed to be transformed.
> Read through whole patch. This is one of rare cases where gettext's use
> of original text as translation id isn't helpful from both performance
> (longer calculation of Id hash during run-time) and maintenance. Looks
> like we have to live with that if Transifex is unable to work with
> indirected translation ids -- that would mean authoritative original
> text would be in 'en' translation, not as original translation id.
>
> If that can't be solved, I'm fine with this approach.
>> In summary what this patch does is:
>>
>> * Remove the use of pygettext (modification to install/po/Makefile.in)
> ACK
>
>> * Replace every docstring with an explicit assignment to __doc__ where
>>    the rhs of the assignment is an i18n marking function.
> ACK
>
>> * Single line docstrings appearing in multi-line string literals
>>    (e.g. ''' or """) were replaced with single line string literals
>>    because the multi-line literals were introducing unnecessary
>>    whitespace and newlines in the string extracted for translation. For
>>    example:
> ACK
>
>> * Import statements were moved from below the docstring to above
>>    it. This was necessary because the i18n markers are imported
>>    functions and must be available before the the doc is
>>    parsed. Technically only the import of the i18n markers had to
>>    appear before the doc but stylistically it's better to keep all the
>>    imports together.
> ACK
>
>> * It was observed during the docstring editing process that the
>>    command documentation was inconsistent with respect to the use of
>>    periods to terminate a sentence. Some doc had a trailing period,
>>    others didn't. Consistency was enforced by adding a period to end of
>>    every docstring if one was missing.
> ACK.
>

ACK from me too, pushed to master and ipa-2-1

I discovered some issues with the Spanish translation while testing this 
and opened a ticket to investigate. It isn't related to these changes.

rob




More information about the Freeipa-devel mailing list