diff --git a/src/libespeak-ng/numbers.c b/src/libespeak-ng/numbers.c index 28b9b265..e0c68768 100644 --- a/src/libespeak-ng/numbers.c +++ b/src/libespeak-ng/numbers.c @@ -1316,7 +1316,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, bool suppress_nul if (LookupThousands(tr, hundreds / 10, tplex, exact | ordinal, ph_10T) == 0) { x = 0; - if (tr->langopts.numbers2 & (1 << tplex)) + if (tr->langopts.numbers2 & (1 << tplex) && tplex <= 3) x = 8; // use variant (feminine) for before thousands and millions if (tr->translator_name == L('m', 'l')) x = 0x208; @@ -1419,7 +1419,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, bool suppress_nul x |= 4; // tens and units only, no higher digits if (ordinal & 0x20) x |= 0x20; // variant form of ordinal number - } else if (tr->langopts.numbers2 & (1 << thousandplex)) + } else if (tr->langopts.numbers2 & (1 << thousandplex) && thousandplex <= 3) x = 8; // use variant (feminine) for before thousands and millions if ((tr->translator_name == L('m', 'l')) && (thousandplex == 1)) diff --git a/src/libespeak-ng/tr_languages.c b/src/libespeak-ng/tr_languages.c index dee887a6..48ca5917 100644 --- a/src/libespeak-ng/tr_languages.c +++ b/src/libespeak-ng/tr_languages.c @@ -1656,5 +1656,5 @@ static void Translator_Russian(Translator *tr) tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_THOUSANDS_VAR1; // variant numbers before thousands - tr->langopts.max_digits = 18; + tr->langopts.max_digits = 32; }