[Ossm-members] Множина во мак. јазик и gettext

Томислав Марковски tome at users.ossm.org.mk
Mon Aug 9 21:14:35 UTC 2004


On пон, 2004-08-09 at 13:12, Новица Наков wrote:
> Хм, па постојат 3 форми во македонскиот јазик и мислам дека тоа е правило. Не 
> ми е баш најјасно што ти е дилемата. Ако не се лажам на mkde.sf.net Данко има 
> објаснето како функционира тоа со 3-те форми и kbabel. 

Хмм... се чудам како јас сум првиот што го забележува ова. Да бидам
појасен, еве за што се работи.

Прост пример:

msgstr "File"
msgstr_plural "Files"
msgid[0] "Датотека"
msgid[1] "Датотеки"
msgid[2] "Датотеки"

До тука, јасно е нели? Именката „датотека“ има само една множина -
„датотеки“. Да пратпоставиме дека Гном е толку паметен и знае дека
„Датотека“ треба да испише само за 1, 21, 31... 101, 121, 131... итн.
број на датотеки.
Е сега, што се случува кога се користи српскиот превод? Исто и србите
имаат 3 множини, но кај нив, работите стојат малку поинаку. Не знам
точно како, но сигурен сум дека за 1-4, 11-14 итн. се користи првата
форма, после тоа другата, а за трет случај третата. Тогаш би било сосем
нелогично Гном да знае кое и кога треба да го употреби. За таа цел, ова
се решава со додавање на "Plural-Forms" ставката во хедерот на .по
датотеката. Која го има следниот формат:

Plural-Forms: nplurals=INTEGER; plural=EXPRESSION

nplurals=3 (ова го подесуваме или рачно, или во кбабел, иако кбабел кај
мене не го ни регистрира во хедер).
plural=израз со C синтакса... што значи ова?

ако plural=(n != 1), тогаш n се заменува со бројот на датотеки на пример
и изразот се проверува. Во овој случај, изразот враќа true (или 1, ова е
својство на C), што би значело дека „1“ т.е. msgid[1] ќе се искористи за
секој број различен од 1. Кој не се разбира многу од изрази и
програмирање малку ќе му биде нејасно ова. Е сега, на тие што им е
јасно, за македонски јазик се користи изразот:

plural= n%10==1 && n%100!=11 ? 0 : 1

кој уствари вика: користи множина за се што не завршува на 1, освен 11.

Не знам колку сум јасен до тука, прашајте ако не е јасно. До тогаш, ако
сретнете превод кој користи ваква множина _ОБАВЕЗНО_ додадете го овој
ред во хедерот:

Plural-Forms: nplurals=3; plural= n%10==1 && n%100!=11 ? 0 : 1

Ако не е вака, ќе читаме и понатаму „21 папки (1 предмети)“ и сл.
пропусти.

Поздрав


More information about the Ossm-members mailing list