diff --git a/dictsource/ru_list b/dictsource/ru_list index 42e41a31..0ae5efbd 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -250,6 +250,7 @@ _с Es (в города) v||gV#rV#d'A (в кому) f||k'omu (во время оно) v'o||v@-r;'em;V||'onV + (вряд ли) v@-r;'Atl;I (всё-таки) fs;'8tVk;I (где-то) gd;'etV (зачем-то) zatS;'emtV diff --git a/dictsource/ru_rules b/dictsource/ru_rules index c20b23cd..652ccae6 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -84,6 +84,7 @@ в (ч f в (щ f в (ь_ f; + в (ьт f; здра) в (ств // silent v(не произносимая в) чу) в (ств // silent v(не произносимая в) @@ -136,6 +137,7 @@ д (к t д (нь d; д (п t + д (с t д (сY t; д (тY t; д (фY t 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; }