package im.actor.runtime.intl.plurals; /** * Plural rules for the following locales and languages * <p> * Locales: hr ru sr uk be bs sh * <p> * Languages: * - Belarusian (br) * - Bosnian (bs) * - Croatian (hr) * - Russian (ru) * - Serbo-Croatian (sh) * - Serbian (sr) * - Ukrainian (uk) * <p> * Rules: * one → n mod 10 is 1 and n mod 100 is not 11; * few → n mod 10 in 2..4 and n mod 100 not in 12..14; * many → n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14; * other → everything else (fractions) */ public class Plural_Balkan implements PluralEngine { @Override public int getPluralType(int value) { int rem100 = value % 100; int rem10 = value % 10; if (rem10 == 1 && rem100 != 11) { return PluralType.ONE; } else if (rem10 >= 2 && rem10 <= 4 && !(rem100 >= 12 && rem100 <= 14)) { return PluralType.FEW; } else if ((rem10 == 0 || (rem10 >= 5 && rem10 <= 9) || (rem100 >= 11 && rem100 <= 14))) { return PluralType.MANY; } else { return PluralType.OTHER; } } }