Forums / National / Russian / Зоопарк с окончаниями

Ratibor
#7477 2009-02-10 03:10
# dervan : Тогда ещё неприкаянными остались 'au', 'us' - это навскидку, может ещё что есть. Выходит, их тоже надо приткнуть в одну из этих 2-х веток.
Вот пусть они сами и решают в какую им ветку входить :-)

Может вообще оставим только языки, для которых есть ланг файлы в транке,
а остальные сами пусть добавляют вместе с локализацией ?

Главное основу зделали и добавить новый язык теперь не составит труда.

Тогда бы получилось так:
function declension($digit, $expr, $onlyword = false)
{
    if (!is_array($expr))
    {
        return trim(($onlyword ? '' : "$digit ") . $expr);
    }
 
    global $lang;
 
    $i = preg_replace('#[^0-9]+#', '', $digit);
    $plural = get_plural($i, $lang);
    $cnt = count($expr);
    return trim(($onlyword ? '' : "$digit ") . (($cnt > 0 && $plural < $cnt) ? $expr[$plural] : ''));
}

function get_plural($plural, $locale)
{
    switch ($locale)
    {
        case 'en':
        case 'de':
        case 'nl':
        case 'se':
            return ($plural == 1) ? 1 : 0;
 
        case 'fr':
        case 'uk':
            return (($plural == 0) || ($plural == 1)) ? 1 : 0;
 
        case 'ru':
        case 'ua':
            $plural %= 100;
            return (5 <= $plural && $plural <= 20) ? 2 : ((1 == ($plural %= 10)) ? 0 : ((2 <= $plural && $plural <= 4) ? 1 : 2));

        default:
            return 0;
    }
}
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-10 03:55, 15 years ago)