Control: clone -1 -2
Control: archive -1
Control: retitle -2 i18nspector: Please check for problematic plural forms
Control: notfixed -2 i18nspector/0.8.2-1

On Mon, 2013-03-25 at 04:52:17 +0100, Guillem Jover wrote:
> On Sun, 2013-03-24 at 20:51:39 +0100, Jakub Wilk wrote:
> > Bosnian (together with Belarusian, Croatian, Russian, Serbian and
> > Ukrainian) is actually an interesting case. According to gettext
> > documentation and Translate Toolkit wiki, the correct Plural-Forms
> > for them is:
> > 
> > nplurals=3; plural= \
> >     n%10==1 && n%100!=11 ? 0 : \
> >     n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
> > 
> > This expression has an unpleasant property that plural(1) ==
> > plural(21). Why is that a problem? Well, usually it isn't. But
> > sometimes software authors use plural forms in messages like this:
> 
> Aha, thanks for pointing this out, had missed that when skimming over
> those sites/docs.
> 
> > msgid "an apple"
> > msgid_plural "apples"
> > 
> > or like this:
> > 
> > msgid "an apple"
> > msgid_plural "%d apples"
> > 
> > Then in translation you would get singular form, even though the
> > numeral is greater than 1. Ooops!
> 
> Actually, it does not really matter how the original string was
> written, as long as the translated string matches the plural-form
> formula. The argument to the printf-like function will be passed
> anyway (if it is passed at all), so it can still be translated
> like this:
> 
> msgid "an apple"
> msgid_plural "%d apples"
> msgstr[0] "%d poma"
> msgstr[1] "%d pomes"
> 
> So to me this seems to end up being a matter of style and how the
> translators want to translate the strings.
> 
> > Of course, I'm not the first one who noticed this is a problem. In
> > fact, majority of Russian, Serbian and Ukrainian MO files in Debian
> > use this Plural-Forms instead:
> > 
> > nplurals=4; plural= \
> >     n==1 ? 3 : \
> >     n%10==1 && n%100!=11 ? 0 : \
> >     n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
> > 
> > This is the same as above, but with special case for 1.
> 
> Given the above, then I think a solution could be to accept both
> plural-forms as valid (because they are a matter of translation-style).
> And ideally, i18nslator would check that if the condensed form is used
> (nplurals=3), the msgstr matching n==1 contains the same amount of
> format directives as the msgstr matching f.ex. n==2, to detect the
> problematic case you brought up before, and to not trip on strings
> with more than one format directive, for example:
> 
> msgstr[0] "numeral-or-article text-0 %d"
> msgstr[1] "%d text-1 %d"
> msgstr[2] "%d text-2 %d"
> 
> This would then trigger a warning.

Ok, as mentioned at the time (!), I've cloned the report for this other
issue.

Thanks,
Guillem


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to