Browse Source

Add defines for the numbers2 thousandplex bit flags.

master
Reece H. Dunn 5 years ago
parent
commit
ee1557ece2
2 changed files with 14 additions and 10 deletions
  1. 8
    8
      src/libespeak-ng/tr_languages.c
  2. 6
    2
      src/libespeak-ng/translate.h

+ 8
- 8
src/libespeak-ng/tr_languages.c View File

@@ -683,7 +683,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels

tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA;
tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; // variant form of numbers before thousands
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND;

if (name2 == L3('g', 'r', 'c')) {
// ancient greek
@@ -913,7 +913,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.accents = 1;

tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS;
tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_THOUSANDPLEX_VAR_MILLIARDS | NUM2_THOUSANDS_VAR5;
tr->langopts.our_alphabet = OFFSET_CYRILLIC; // don't say "cyrillic" before letter names

SetLetterVowel(tr, 'y');
@@ -1004,7 +1004,7 @@ Translator *SelectTranslator(const char *name)
tr->letter_groups[1] = is_lettergroup_B;
SetLetterVowel(tr, 'y');
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SINGLE_AND | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_1900;
tr->langopts.numbers2 = 0x2;
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS;
}
break;
case L('i', 't'): // Italian
@@ -1191,7 +1191,7 @@ Translator *SelectTranslator(const char *name)

tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
tr->langopts.numbers2 = 0x8a; // variant numbers before thousands,milliards
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_THOUSANDPLEX_VAR_MILLIARDS | NUM2_THOUSANDS_VAR2;
}
break;
case L('m', 't'): // Maltese
@@ -1291,7 +1291,7 @@ Translator *SelectTranslator(const char *name)

tr->encoding = ESPEAKNG_ENCODING_ISO_8859_2;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN;
tr->langopts.numbers2 = 0x1e; // variant numbers before all thousandplex
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_ALL;
}
break;
case L('r', 'u'): // Russian
@@ -1328,7 +1328,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.decimal_sep = ',';

if (name2 == L('c', 's'))
tr->langopts.numbers2 = 0x108; // variant numbers before milliards
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_MILLIARDS | NUM2_THOUSANDS_VAR4;

SetLetterVowel(tr, 'y');
SetLetterVowel(tr, 'r');
@@ -1371,7 +1371,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables
tr->letter_bits[(int)'r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN;
tr->langopts.numbers2 = 0x100; // plural forms of millions etc
tr->langopts.numbers2 = NUM2_THOUSANDS_VAR4;
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator
break;
case L('s', 'q'): // Albanian
@@ -1609,5 +1609,5 @@ static void Translator_Russian(Translator *tr)
tr->langopts.stress_flags = S_NO_AUTO_2;

tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands
tr->langopts.numbers2 = NUM2_THOUSANDPLEX_VAR_THOUSANDS | NUM2_THOUSANDS_VAR1; // variant numbers before thousands
}

+ 6
- 2
src/libespeak-ng/translate.h View File

@@ -475,7 +475,7 @@ typedef struct {

int numbers;

#define NUM2_GROUP_NUMBER_VAR_BITS 0x0000000f // use variant form of numbers before thousands,millions,etc.
#define NUM2_THOUSANDPLEX_VAR_BITS 0x0000001e // use variant form of numbers before thousands, millions, etc.
#define NUM2_THOUSANDS_VAR_BITS 0x000001c0 // use different forms of thousand, million, etc (M MA MB)
#define NUM2_SWAP_THOUSANDS 0x00000200 // say "thousand" and "million" before its number, not after
#define NUM2_ORDINAL_NO_AND 0x00000800 // don't say 'and' between tens and units for ordinal numbers
@@ -489,10 +489,14 @@ typedef struct {
#define NUM2_ORDINAL_DROP_VOWEL 0x00080000 // drop final vowel from cardial number before adding ordinal suffix (currently only tens and units)
#define NUM2_ZERO_TENS 0x00100000 // say zero tens

#define NUM2_THOUSANDPLEX_VAR_THOUSANDS 0x00000002
#define NUM2_THOUSANDPLEX_VAR_MILLIARDS 0x00000008
#define NUM2_THOUSANDPLEX_VAR_ALL 0x0000001e

#define NUM2_THOUSANDS_VAR1 0x00000040
#define NUM2_THOUSANDS_VAR2 0x00000080
#define NUM2_THOUSANDS_VAR3 0x000000c0
#define NUM2_THOUSANDS_VAR4 0x00000100
#define NUM2_THOUSANDS_VAR4 0x00000100 // plural forms for millions, etc.
#define NUM2_THOUSANDS_VAR5 0x00000140

int numbers2;

Loading…
Cancel
Save