Ratibor |
|
---|---|
# 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;
}
} Не задавай глупых вопросов, не услышишь вранья.
|
|
Відредаговано: Ratibor (10.02.2009 03:55, 16 років тому) |