@@ -389,23 +389,23 @@ static int DeterminePluralForm(int64 cou
/* Two forms, singular used for zero and one
* Used in:
* French, Brazilian Portuguese */
case 2:
return n > 1;
/* Three forms, special case for zero
/* Three forms, special case for 0 and ending in 1, except those ending in 11
* Latvian */
case 3:
return n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2;
/* Three forms, special case for one and two
/* Five forms, special case for one, two, 3 to 6 and 7 to 10
* Gaelige (Irish) */
case 4:
return n == 1 ? 0 : n == 2 ? 1 : 2;
return n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4;
/* Three forms, special case for numbers ending in 1[2-9]
* Lithuanian */
case 5:
return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
@@ -462,12 +462,18 @@ static int DeterminePluralForm(int64 cou
case 9: // gu
return 1;
default:
NOT_REACHED();
}
/* Four forms: one, 0 and everything ending in 02..10, everything ending in 11..19.
* Maltese */
case 12:
return (n == 1 ? 0 : n == 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3);
static const char *ParseStringChoice(const char *b, uint form, char **dst, const char *last)
{
/* <NUM> {Length of each string} {each string} */