[ LUGOS-SLO ] 1024. sredin seminar, 16. maj 2001 (fwd)
Roman Maurer
roman.maurer at amis.net
Wed May 16 22:51:18 CEST 2001
Primož Peterlin piše:
>
> Ja, res je. Do tega modula 10 pride seveda samo pri jezikih, ki pregibajo
> števnike (slovanski in baltski). Bom povedal natančneje.
Pošiljam del datoteke kdelibs/kdecore/klocale.cpp, ki našteva pogoje
za različne množinske oblike. Mi jih imamo največ, a jeziki, ki jih
omenjaš, imajo tudi zapletena pravila.
Dvojino pa očitno pozna tudi "Gaeilge" (kako se reče po slovensko?).
--
Pozdrav,
Roman
- - - -
switch ( d->plural_form ) {
case 0: // NoPlural
EXPECT_LENGTH( 1 );
return put_n_in( forms[0], n);
break;
case 1: // TwoForms
EXPECT_LENGTH( 2 );
if ( n == 1 )
return put_n_in( forms[0], n);
else
return put_n_in( forms[1], n);
break;
case 2: // French
EXPECT_LENGTH( 2 );
if ( n == 1 || n == 0 )
return put_n_in( forms[0], n);
else
return put_n_in( forms[1], n);
break;
case 3: // Gaeilge
EXPECT_LENGTH( 3 );
if ( n == 1 )
return put_n_in( forms[0], n);
else if ( n == 2 )
return put_n_in( forms[1], n);
else
return put_n_in( forms[2], n);
break;
case 4: // Russian, corrected by mok
EXPECT_LENGTH( 3 );
if ( n%10 == 1 && n%100 != 11)
return put_n_in( forms[0], n); // odin fail
else if (( n%10 >= 2 && n%10 <=4 ) && (n%100<10 || n%100>20))
return put_n_in( forms[1], n); // dva faila
else
return put_n_in( forms[2], n); // desyat' failov
break;
case 5: // Polish
EXPECT_LENGTH( 3 );
if ( n == 1 )
return put_n_in( forms[0], n);
else if ( n%10 >= 2 && n%10 <=4 && (n%100<10 || n%100>=20) )
return put_n_in( forms[1], n);
else
return put_n_in( forms[2], n);
break;
case 6: // Slovenian
EXPECT_LENGTH( 4 );
if ( n%100 == 1 )
return put_n_in( forms[1], n); // ena datoteka
else if ( n%100 == 2 )
return put_n_in( forms[2], n); // dve datoteki
else if ( n%100 == 3 || n%100 == 4 )
return put_n_in( forms[3], n); // tri datoteke
else
return put_n_in( forms[0], n); // sto datotek
break;
case 7: // Lithuanian
EXPECT_LENGTH( 3 );
if ( n%10 == 0 || (n%100>=11 && n%100<=19) )
return put_n_in( forms[2], n);
else if ( n%10 == 1 )
return put_n_in( forms[0], n);
else
return put_n_in( forms[1], n);
break;
case 8: // Czech
EXPECT_LENGTH( 3 );
if ( n%100 == 1 )
return put_n_in( forms[0], n);
else if (( n%100 >= 2 ) && ( n%100 <= 4 ))
return put_n_in( forms[1], n);
else
return put_n_in( forms[2], n);
break;
}
More information about the lugos-slo
mailing list