[I18n] plural forms, важна!!!

3 views
Skip to first unread message

375gnu

unread,
Sep 11, 2011, 7:40:10 AM9/11/11
to Belarusian i18n list
Звычайнае апісаньне множных формаў у файлах 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
I1...@mova.org
http://mova.org/cgi-bin/mailman/listinfo/i18n

Ihar Hrachyshka

unread,
Sep 11, 2011, 7:52:19 AM9/11/11
to i1...@mova.org

Сумнеўна.
Якая прычына абавязкова перакладаць "one procedure" як "адна працэдура",
а не як "1 працэдура"?
/Ihar

375gnu

unread,
Sep 11, 2011, 7:59:04 AM9/11/11
to Belarusian i18n list
On 9/11/11, Ihar Hrachyshka <ihar.hr...@gmail.com> wrote:

> Сумнеўна.
> Якая прычына абавязкова перакладаць "one procedure" як "адна працэдура",
> а не як "1 працэдура"?

Прыклад можа й ня вельмі :), але вось рэальны прыклад з ГІМПа.
Напэўна, ягоныя аўтары палічылі, што гэтак будзе лепей з эстэтычнага
п.г.

#: ../app/dialogs/quit-dialog.c:213
#, c-format
msgid "There is one image with unsaved changes:"
msgid_plural "There are %d images with unsaved changes:"
msgstr[0] "Незамацаваныя зьмены ў %d відарысе:"
msgstr[1] "Незамацаваныя зьмены ў %d відарысах:"
msgstr[2] "Незамацаваныя зьмены ў %d відарысах:"
msgstr[3] "Незамацаваныя зьмены ў адным відарысе:"

І гэта ня толькі ў ГІМПе, бо гэны радок для множнай формы я адшукаў у
нейкай рассылцы на гну.орг.

--
http://375gnu.wordpress.com

Ihar Hrachyshka

unread,
Sep 11, 2011, 8:13:38 AM9/11/11
to i1...@mova.org
On 09/11/2011 02:59 PM, 375gnu wrote:
> On 9/11/11, Ihar Hrachyshka <ihar.hr...@gmail.com> wrote:
>
>> Сумнеўна.
>> Якая прычына абавязкова перакладаць "one procedure" як "адна працэдура",
>> а не як "1 працэдура"?
>
> Прыклад можа й ня вельмі :), але вось рэальны прыклад з ГІМПа.
> Напэўна, ягоныя аўтары палічылі, што гэтак будзе лепей з эстэтычнага
> п.г.
>
> #: ../app/dialogs/quit-dialog.c:213
> #, c-format
> msgid "There is one image with unsaved changes:"
> msgid_plural "There are %d images with unsaved changes:"
> msgstr[0] "Незамацаваныя зьмены ў %d відарысе:"
> msgstr[1] "Незамацаваныя зьмены ў %d відарысах:"
> msgstr[2] "Незамацаваныя зьмены ў %d відарысах:"
> msgstr[3] "Незамацаваныя зьмены ў адным відарысе:"
>
> І гэта ня толькі ў ГІМПе, бо гэны радок для множнай формы я адшукаў у
> нейкай рассылцы на гну.орг.
>

І гэты прыклад таксама не паказвае на канечную патрэбу такой формулы.
Калі ісці гэтай дарогай, дык можна тады словамі расшыфроўваць і
"Незамацаваныя зьмены ў двух/трох/... відарысах:" і г.д. Што прынцыпова
мяняе ў фармаце паведамлення гэта магічная лічба "1"?

Аўтарам праграмы гэтак падалося больш эстэтычна? Ну то на здароўе, абы
нас не чапалі.

Дарэчы, фармат апісання множных форм не абавязкова павінен быць
аднолькавым для ўсіх файлаў адной мовы.

/Ihar

Reply all
Reply to author
Forward
0 new messages