[Ardour-Dev] translators!

Paul Davis paul at linuxaudiosystems.com
Fri Jan 4 08:06:31 PST 2013


after a lot of wrangling with waf, this should now be fixed. i checked
ru.po and the plural forms appear to be there.

svn update will cause a complete rebuild, because waf has changed.


On Fri, Jan 4, 2013 at 8:21 AM, Paul Davis <paul at linuxaudiosystems.com>wrote:

> the problem is that intltool needs to be told about P_() ....fixing that
>
> %d only works if the code uses printf() and friends to format the message.
> we are using C++ and the type-safe "compose" mechanism, which uses %1. it
> won't be a problem.
>
>
>
> On Fri, Jan 4, 2013 at 3:07 AM, Alexandre Prokoudine <
> alexandre.prokoudine at gmail.com> wrote:
>
>> Paul,
>>
>> Here's a quick overview of plural forms issues that still exist.
>>
>> First of all, ngettext suggests to use %d instead of %1. P_() macros
>> doesn't work with %d. In fact, it doesn't even work with %1. Here are
>> some examples:
>>
>> From sfdb_ui.cc:
>>
>>                 string_compose(P_("found %1 match", "found %1 matches",
>> matches), matches));
>>
>> This never gets merged into PO files. Nor the other occurence of same
>> phrase later in the file.
>>
>> From ardour_ui.cc:
>>
>> if (tracks.size() != how_many) {
>>                                 error << string_compose (P_("could not
>> create new audio track",
>> "could not create %1 new audio tracks", how_many), how_many)
>>                                       << endmsg;
>> }
>>
>> Two issues in the example above:
>>
>> 1. As already discussed on IRC, in Russian this won't work for numbers
>> like 21, 41, 71 etc. There should always be a variable. I can submit
>> English translation that deals with it to make the actual user visible
>> phrase in English look more natural, i.e. the way it is now.
>>
>> 2. Again, the combination of the P_() macros and the %1 variable
>> doesn't work. Neither PO files get ngettextized, nor the actual
>> phrases are put into PO files as is. After running ./waf i18n I get
>> the "could not create %1 new audio tracks" phrase placed to the bottom
>> of the PO file and marked as obsolete. Apparently gettext thinks that
>> phrases inside P_() don't exist.
>>
>> When you think you fixed it, you can check if it worked by running
>> ./waf i18n and checking if the entry looks like this:
>>
>> #: ardour_ui.cc:1388
>> #, fuzzy
>> msgid "could not create %d new audio track"
>> msgid_plural "could not create %d new audio tracks"
>> msgstr[0] "first plural form translation"
>> msgstr[1] "second plural form translation"
>> msgstr[2] "third plural form translation"
>>
>> That's for Russian with its three plural forms.
>>
>> The other problem is that  "could not create a new mixed track"/"could
>> not create %1 new mixed tracks" is not ngettextized in the source
>> code. I tried fixing it by rewriting the code, but I'm obviously
>> lacking required programming skills.
>>
>> Alexandre
>>
>> On Thu, Jan 3, 2013 at 6:19 PM, Paul Davis <paul at linuxaudiosystems.com>
>> wrote:
>> > should be improved and/or fixed in svn now. P_() is a new plural form
>> i18n
>> > macro.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ardour.org/pipermail/ardour-dev-ardour.org/attachments/20130104/f284925f/attachment-0002.htm>


More information about the Ardour-Dev mailing list