Re: translators!
Paul Davis <[email protected]>
| Newsgroups | gmane.comp.audio.ardour.devel |
|---|---|
| Message-ID | <CAFa_cKk5mHCHXadoJmmvgWDa-tzi-h4MP0nMQs38VY9PhJmw5w@mail.gmail.com> |
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 <[email protected]>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 < > [email protected]> 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 <[email protected]> >> wrote: >> > should be improved and/or fixed in svn now. P_() is a new plural form >> i18n >> > macro. >> > > _______________________________________________ ardour-dev mailing list [email protected] http://lists.ardour.org/listinfo.cgi/ardour-dev-ardour.org