Citat:
Originalno napisao Misha
Osnovni brojevi od 5 pa nadalje se ne menjaju po padezima.
Znaci ovako nekako je valjda pravilno:
dva dinara, tri dinara, petsto dinara
dvoje ljudi, troje ljudi, petstotina ljudi
|
Naravno da se menjaju!
Za one sa nepravilnom množinom:
500 ljudi
501 čovek
502 čoveka
503 čoveka
504 čoveka
505 ljudi
...
Za one sa pravilnom množinom:
500 dinara
501 dinar
502 dinara
503 dinara
504 dinara
505 dinara
...
Kôd:
function declinate($num = 0, $cases) {
if (array_key_exists($num, $cases)) {
return $cases[$num];
}
$num %= 100;
if ($num > 4 and $num < 20) {
return declinate(5, $cases);
}
$num %= 10;
return declinate($num, $cases);
}
$mnozine['nominativ'] = array('ljudi', 'čovek', 'čoveka', 'čoveka', 'čoveka', 'ljudi');
for ($i = 0; $i < 30; $i++) {
echo sprintf("%d:\t%s\n", $i, declinate($i, $mnozine['nominativ']));
}