Re: translators!
Paul Davis <[email protected]>
| Newsgroups | gmane.comp.audio.ardour.devel |
|---|---|
| Message-ID | <CAFa_cKnKzZ+bis_F2fftxJA6sh5MmDT-EYwmWN8-iSYt9u=NsA@mail.gmail.com> |
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