суббота, 31 октября 2009 г.

О словоформах и наболевшем

Добрые русскоговорящие люди! Помните, что слова после числительных склоняются. Мы говорим «один час», но при этом «два часа», или «пять часов». Откуда же в интерфейсах берутся эти ужасные «4 час(а|ов)»?

Надо же всего лишь:
function FormatCount( n:uint, forms:Array ):String
{
var last2 :uint = n % 100 ;
var last1 :uint = n % 10 ;

var isTeen :Boolean = last2 > 10 && last2 < 20 ;
var isSingle:Boolean = last1 == 1 ;
var isCouple:Boolean = last1 > 1 && last1 < 5 ;

if ( !isTeen )
{
if ( isSingle ) return forms[0];
if ( isCouple ) return forms[1];
}

return forms[2];
}

И программа заговорит с пользователем на чистом русском языке!