From d61398d2b537727e4aa5f5daffa209ed87f05f4e Mon Sep 17 00:00:00 2001 From: kirill-jjj Date: Sun, 16 Oct 2022 22:04:48 +0500 Subject: [PATCH 1/4] =?UTF-8?q?Russian:=20fix=20for=20letters=20=D0=B2?= =?UTF-8?q?=D1=8C=D1=82,=20like=20with=20word=20=D0=BE=D1=82=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D1=8C=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 1 + 1 file changed, 1 insertion(+) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index c20b23cd..e4d40834 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -84,6 +84,7 @@ в (ч f в (щ f в (ь_ f; + в (ьт f; здра) в (ств // silent v(не произносимая в) чу) в (ств // silent v(не произносимая в) From b5b298f87ad5191a3e99d3f9822004d37a50edcd Mon Sep 17 00:00:00 2001 From: kirill-jjj Date: Sun, 16 Oct 2022 22:17:12 +0500 Subject: [PATCH 2/4] =?UTF-8?q?Russian:=20fix=20for=20=D0=B2=D1=80=D1=8F?= =?UTF-8?q?=D0=B4=20=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_list | 1 + 1 file changed, 1 insertion(+) 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 From 941bd2a17699f48e65e573fb42f44bcb3465976f Mon Sep 17 00:00:00 2001 From: kirill-jjj Date: Sun, 16 Oct 2022 22:36:42 +0500 Subject: [PATCH 3/4] =?UTF-8?q?Russian:=20fix=20for=20leter's=20=D0=B4?= =?UTF-8?q?=D1=81,=20for=20example=20=D0=BF=D0=BE=D0=B4=D1=81=D0=B2=D0=B5?= =?UTF-8?q?=D1=87=D0=BD=D0=B8=D0=BA,=20=D0=B7=D0=B0=D0=B1=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D1=81=D0=BA=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 1 + 1 file changed, 1 insertion(+) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index e4d40834..652ccae6 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -137,6 +137,7 @@ д (к t д (нь d; д (п t + д (с t д (сY t; д (тY t; д (фY t From c5de4ff6c274a8f59d52e144aee4f4e28b71eba9 Mon Sep 17 00:00:00 2001 From: A11CF0 Date: Sun, 16 Oct 2022 21:32:17 +0300 Subject: [PATCH 4/4] Avoid clashes between gender selection code and thousand variant flags Fixes #1420 also Set max_digits to 32 for russian since it's safe to do now. --- src/libespeak-ng/numbers.c | 4 ++-- src/libespeak-ng/tr_languages.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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; }