Вот правила множественного числа разных языков.
www.unicode.org/cldr/charts/latest/supplemental/la...
Я с подобным работал, и если есть возможность выдавать один и тот же ответ в двух разных ветках — то так.
Остаток от деления на 100 от 5 до 20 → «ворон»
Остаток от деления на 10 равен 1 → «ворона»
Остаток от деления на 10 от 2 до 4 → «вороны»
Иначе — «ворон».
Я эти правила записывал вот в таком виде.
<pluralRules nDecisions="3" unknownInt="2"> ← вариантов три; если ни одно из правил не подошло, брать последний («ворон»)
<rule mod="100" min="10" max="20" decide="2" /> ← остаток на 100 от 10 до 20 — «ворон»
<rule mod="10" min="1" max="1" decide="0" />
<rule mod="10" min="2" max="4" decide="1" />
</pluralRules>