plural forms, важна!!!

375gnu <[email protected]> Sun, 11 Sep 2011 14:40:10 +0300
Newsgroups gmane.comp.internationalization.belarusian
Message-ID <CAAB-Kc=s7Ecauas_z78FcefeTHvr05ss3NHCSu3Fm2_ATuYi3A@mail.gmail.com>
Звычайнае апісаньне множных формаў у файлах gettext [1] ня ўлічвае
даволі рэдкай, але цалкам імавернай сытуацыі, калі адзіночная й
множныя формы апісваюцца з рознай колькасьцю фарматавальнікаў,
напрыклад

msgid "one procedure"
msgid_plural "%d procedures"
msgstr[0] "адна працэдура"
msgstr[1] "%d працэдуры"
msgstr[2] "%d працэдураў"

Такі пераклад будзе некарэктным, бо значэньням 21, 31, 41 і г.д. будзе
адпавядаць msgstr[0].

Правільнае апісаньне множных формаў мусіць выглядаць наступным чынам:

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;\n

Тады вышэйпадазены прыклад прыме выгляд:

msgid "one procedure"
msgid_plural "%d procedures"
msgstr[0] "%d працэдура"
msgstr[1] "%d працэдуры"
msgstr[2] "%d працэдураў"
msgstr[3] "адна працэдура"

Я з гэтым сутыкнуўся ў GIMP.

[1] nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4
&& (n%100<10 || n%100>=20) ? 1 : 2);\n
-- 
http://375gnu.wordpress.com
_______________________________________________
I18n mailing list
[email protected]
http://mova.org/cgi-bin/mailman/listinfo/i18n