Changes to: pt, tt, ko. Phoneme definitions: added NOT operator, eg: IF NOT nextPh(isVowel) THEN git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@290 d46cf337-b52f-0410-862d-fd96e6ae7743master
e) chen (_ C@n | e) chen (_ C@n | ||||
ü) chen (_ C@n | ü) chen (_ C@n | ||||
chs ks (_ | |||||
chs ks | |||||
chance SA~s@ | chance SA~s@ | ||||
chara (kt k%ara | chara (kt k%ara | ||||
_) ch (ic S | _) ch (ic S |
z Z | z Z | ||||
Dictionary de_dict 2012-06-27 | |||||
Dictionary de_dict 2012-09-13 | |||||
3 @ @- a A A: aI aU | 3 @ @- a A A: aI aU | ||||
A~ E E2 E: e: EI i I | A~ E E2 E: e: EI i I | ||||
ts v x z | ts v x z | ||||
Dictionary en_dict 2012-09-08 | |||||
Dictionary en_dict 2012-09-14 | |||||
0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
a a# A: A@ aa aI aI3 aI@ | a a# A: A@ aa aI aI3 aI@ | ||||
ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
Dictionary pt_dict 2012-09-11 | |||||
Dictionary pt_dict 2012-09-14 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
o o- ong ou u u@ ua uai | o o- ong ou u u@ ua uai | ||||
uei uo y y& y@ yE yi yu | uei uo y y& y@ yE yi yu | ||||
; C f h j k kh l | |||||
l# m n N p ph Q q | |||||
Q" Q^ r R R2 R3 s s. | |||||
S; t th ts ts. ts. tS; tS; | |||||
tsh v w x X z. | |||||
; C f h j J^ k kh | |||||
l l# m n N p ph Q | |||||
q Q" Q^ r R R2 R3 s | |||||
s. S; t th ts ts. ts. tS; | |||||
tS; tsh v w x X z. | |||||
Dictionary zhy_dict 2009-01-19 | Dictionary zhy_dict 2009-01-19 | ||||
Z; | Z; | ||||
Dictionary tt_dict 2012-09-11 | |||||
Dictionary tt_dict 2012-09-14 | |||||
a A A2 e e2 i I o | |||||
u u2 V W y | |||||
& a A e e2 e: i I | |||||
o u u2 V W y | |||||
: ? b d f g h j | : ? b d f g h j | ||||
k l m n N p q r | k l m n N p q r | ||||
Z Z; | Z Z; | ||||
Dictionary ko_dict 2012-06-14 | |||||
Dictionary ko_dict 2012-09-14 | |||||
@ a e E i o u u- | @ a e E i o u u- | ||||
* - ; b d dZ; g h | * - ; b d dZ; g h | ||||
j k k- kh l m n p | |||||
p- ph s t t- tS tS; w | |||||
j k k- kh l m n N | |||||
p p- ph q r s t t- | |||||
tS tS; w |
Keighli keIli | Keighli keIli | ||||
Keanu kI'A:nu: | Keanu kI'A:nu: | ||||
Kieran ki@r@n | Kieran ki@r@n | ||||
Kris krIs | |||||
Laurence l0r@ns | Laurence l0r@ns | ||||
Lawrence l0r@ns | Lawrence l0r@ns | ||||
Leann li:'an | Leann li:'an |
// translation rules for Spanish | |||||
// translation rules for Spanish | |||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// Conditional rules | // Conditional rules | ||||
.group m | .group m | ||||
m m | m m | ||||
@) m (_ =m | |||||
_) mn (em n | _) mn (em n | ||||
_) mb (A mb | |||||
_) mb (A mb | |||||
.group n | .group n |
$textmode | $textmode | ||||
// Number forms: | |||||
_0 ᅧᆼ | _0 ᅧᆼ | ||||
_1 ᅵᆯ | _1 ᅵᆯ | ||||
_2 ᅵ | _2 ᅵ | ||||
_0M1 천 | _0M1 천 | ||||
_1M1 천 | _1M1 천 | ||||
$phonememode | |||||
_0M2 m'an // 10^4 | |||||
_1M2 m'an | |||||
_0M3 tSh-@n||m'an // 10^7 | |||||
_1M3 tSh-@n||m'an | |||||
_0M4 '@q // 10^8 | |||||
_1M4 '@q | |||||
_0M5 tSh-@n||'@q // 10^11 | |||||
_1M5 tSh-@n||'@q | |||||
_0M6 tS;'o // 10^12 | |||||
_1M6 tS;'o | |||||
_0M7 tSh-@n||tS;'o | |||||
_1M7 tSh-@n||tS;'o | |||||
_0M8 gj'@nN | |||||
_1M8 gj'@nN | |||||
$textmode | |||||
// Character names: | |||||
ㄱ ㄱㅣㅇㅕㄱ | |||||
ㄲ ㅆㅏㅇㄱㅣㅇㅕㄱ | |||||
ㄴ ㄴㅣㅇㅡㄴ | |||||
ㄷ ㄷㅣㄱㅡㄷ | |||||
ㄸ ㅆㅏㅇㄷㅣㄱㅡㄷ | |||||
ㄹ ㄹㅣㅇㅡㄹ | |||||
ㅁ ㅁㅣㅇㅡㅁ | |||||
ㅂ ㅂㅣㅇㅡㅂ | |||||
ㅃ ㅆㅏㅇㅂㅣㅇㅡㅂ | |||||
ㅅ ㅅㅣㅇㅗㅅ | |||||
ㅆ ㅆㅏㅇㅅㅣㅇㅗㅅ | |||||
ㅇ ㅇㅣㅇㅡㅇ | |||||
ㅈ ㅈㅣㅇㅡㅈ | |||||
ㅉ ㅆㅏㅇㅈㅣㅇㅡㅈ | |||||
ㅊ ㅊㅣㅇㅡㅊ | |||||
ㅋ ㅋㅣㅇㅡㅋ | |||||
ㅌ ㅌㅣㅇㅡㅌ | |||||
ㅍ ㅍㅣㅇㅡㅍ | |||||
ㅎ ㅎㅣㅇㅡㅎ | |||||
// Misc: | |||||
// 사ᅵ시ᅩᆺ | // 사ᅵ시ᅩᆺ | ||||
고랫재 고랟째 | 고랫재 고랟째 | ||||
귓밥 귇빱 | 귓밥 귇빱 |
// Order: ㄱㄲㅋ ㄷㄸㅌ ㅂㅃㅍ ㅅㅆㅈㅉㅊ ㄴㅁ ㄹ ㅎ | // Order: ㄱㄲㅋ ㄷㄸㅌ ㅂㅃㅍ ㅅㅆㅈㅉㅊ ㄴㅁ ㄹ ㅎ | ||||
.group ᄀ // ㄱ | .group ᄀ // ㄱ | ||||
ᄀ g | |||||
_) ᄀ k | |||||
ᄀ q | |||||
_) ᄀ g | |||||
L01) ᄀ k- | L01) ᄀ k- | ||||
L03) ᄀ kh | L03) ᄀ kh | ||||
.group ᄁ // ㄲ | .group ᄁ // ㄲ | ||||
ᄁ k- | |||||
ᄁ q- | |||||
.group ᄏ // ㅋ | .group ᄏ // ㅋ | ||||
ᄏ kh | ᄏ kh | ||||
.group ᄃ // ㄷ | .group ᄃ // ㄷ | ||||
ᄃ d | ᄃ d | ||||
_) ᄃ t | |||||
_) ᄃ d | |||||
L01) ᄃ t- | L01) ᄃ t- | ||||
L03) ᄃ th | L03) ᄃ th | ||||
ᄑ ph | ᄑ ph | ||||
.group ᄉ // ㅅ | .group ᄉ // ㅅ | ||||
ᄉ s | |||||
ᄉ |s | |||||
L01) ᄉ s- | L01) ᄉ s- | ||||
.group ᄊ // ㅆ | .group ᄊ // ㅆ | ||||
L03) ᄌ tSh; | L03) ᄌ tSh; | ||||
.group ᄍ // ㅉ | .group ᄍ // ㅉ | ||||
ᄍ tS;- // TODO: phoneme | |||||
ᄍ 'tS;- // TODO: phoneme | |||||
.group ᄎ // ㅊ | .group ᄎ // ㅊ | ||||
ᄎ tSh; // TODO: phoneme | |||||
ᄎ tSh- // TODO: phoneme | |||||
.group ᄂ // ㄴ | .group ᄂ // ㄴ | ||||
ᄂ n | |||||
ᄂ ;n | |||||
.group ᄆ // ㅁ | .group ᄆ // ㅁ | ||||
ᄆ m | |||||
ᄆ ;m | |||||
.group ᄅ // ㄹ | .group ᄅ // ㄹ | ||||
ᄅ * // TODO: alveolar flap [ɾ] | ᄅ * // TODO: alveolar flap [ɾ] | ||||
ᄒ h // TODO: [ɦ] | ᄒ h // TODO: [ɦ] | ||||
_) ᄒ h | _) ᄒ h | ||||
// Medials | |||||
// Medials or vowels | |||||
.group ᅡ // ㅏ | .group ᅡ // ㅏ | ||||
ᅡ a | ᅡ a | ||||
// Order: ㄱㄳㄲㅋ ㄷㅌ ㅂㅍ ㅅㅆㅈㅊ ㄴㅁ ㅇㅎ ㄹ | // Order: ㄱㄳㄲㅋ ㄷㅌ ㅂㅍ ㅅㅆㅈㅊ ㄴㅁ ㅇㅎ ㄹ | ||||
.group ᆨ // ㄱ | .group ᆨ // ㄱ | ||||
ᆨ k // TODO: final stops | |||||
ᆨ q // It is actually q, as using k adds unnecessary sound. | |||||
ᆨᄒ kh | ᆨᄒ kh | ||||
.group ᆪ // ㄳ | .group ᆪ // ㄳ | ||||
ᆿ (A kh | ᆿ (A kh | ||||
.group ᆮ // ㄷ | .group ᆮ // ㄷ | ||||
ᆮ t | |||||
ᆮ d- // Actually a soft D. | |||||
ᆮᄂ nn | ᆮᄂ nn | ||||
ᆮᄆ mm | ᆮᄆ mm | ||||
ᆮᄒ th | ᆮᄒ th | ||||
ᆮ (L02 dZ; | ᆮ (L02 dZ; | ||||
.group ᇀ // ㅌ | .group ᇀ // ㅌ | ||||
ᇀ t | |||||
ᇀ t- | |||||
ᇀᄂ nn | ᇀᄂ nn | ||||
ᇀᄆ mm | ᇀᄆ mm | ||||
ᇀ (A th | ᇀ (A th | ||||
ᇁ (A ph | ᇁ (A ph | ||||
.group ᆺ // ㅅ | .group ᆺ // ㅅ | ||||
ᆺ t | |||||
ᆺ t- | |||||
ᆺᄂ nn | ᆺᄂ nn | ||||
ᆺᄆ mm | ᆺᄆ mm | ||||
ᆺ (A s | ᆺ (A s | ||||
ᆺᄒ s- | ᆺᄒ s- | ||||
.group ᆻ // ㅆ | .group ᆻ // ㅆ | ||||
ᆻ t | |||||
ᆻ t- | |||||
ᆻᄂ nn | ᆻᄂ nn | ||||
ᆻᄆ mm | ᆻᄆ mm | ||||
ᆻ (A s- | ᆻ (A s- | ||||
ᆷ m | ᆷ m | ||||
.group ᆼ // ㅇ | .group ᆼ // ㅇ | ||||
ᆼ ng | |||||
ᆼ nN | |||||
.group ᇂ // ㅎ | .group ᇂ // ㅎ | ||||
ᇂ t | |||||
ᇂ t- | |||||
ᇂ (A | ᇂ (A | ||||
.group ᆯ // ㄹ | .group ᆯ // ㄹ | ||||
ᆯ l | |||||
ᆯ rr | |||||
ᆯᄅ l | ᆯᄅ l | ||||
ᆯ (A * | ᆯ (A * | ||||
// $alt changes stressed [e] or [o] phoneme to open [E] or [O] | // $alt changes stressed [e] or [o] phoneme to open [E] or [O] | ||||
// $alt2 changes stressed [E] or [O] phoneme to close [e] or [o] | // $alt2 changes stressed [E] or [O] phoneme to close [e] or [o] | ||||
aborto $alt $verb | |||||
acerto $alt2 $noun | acerto $alt2 $noun | ||||
adereço $alt2 | adereço $alt2 | ||||
adore $alt | adore $alt | ||||
amores $alt2 | amores $alt2 | ||||
anoiteça $alt2 | anoiteça $alt2 | ||||
anoiteço $alt2 | anoiteço $alt2 | ||||
apego $alt2 | |||||
apreço $alt2 | apreço $alt2 | ||||
aperto $alt2 $noun | aperto $alt2 $noun | ||||
apoio $alt $verb | apoio $alt $verb | ||||
aprendeste $alt2 | aprendeste $alt2 | ||||
arremesso $alt2 $noun | |||||
assembleia $alt | assembleia $alt | ||||
atrozes $alt | atrozes $alt | ||||
austera $alt | austera $alt | ||||
bolo $alt2 | bolo $alt2 | ||||
borboleta $alt2 | borboleta $alt2 | ||||
bordo $alt | bordo $alt | ||||
bromelha $alt | |||||
cabeça $alt2 | cabeça $alt2 | ||||
cacete $alt2 | cacete $alt2 | ||||
cachorra $alt2 | cachorra $alt2 | ||||
camiseta $alt2 | camiseta $alt2 | ||||
cantora $alt2 | cantora $alt2 | ||||
caractere $alt | |||||
casebre $alt | casebre $alt | ||||
catorze $alt2 | catorze $alt2 | ||||
cefaleia $alt | cefaleia $alt | ||||
cresce $alt | cresce $alt | ||||
crescem $alt | crescem $alt | ||||
der $alt | der $alt | ||||
desapego $alt2 $noun | |||||
desce $alt | desce $alt | ||||
descem $alt | descem $alt | ||||
descordo $alt | |||||
descova $alt2 | descova $alt2 | ||||
desespero $alt2 $noun | |||||
desfecho $alt2 | desfecho $alt2 | ||||
desprezo $alt $verb | desprezo $alt $verb | ||||
deva $alt2 | deva $alt2 | ||||
dobro $alt2 $noun | dobro $alt2 $noun | ||||
doce $alt2 | doce $alt2 | ||||
droga $alt | droga $alt | ||||
emprego $alt2 $noun | |||||
endereço $alt2 | endereço $alt2 | ||||
enumerem $alt | enumerem $alt | ||||
enredo $alt $verb | |||||
enterro $alt2 $noun | |||||
enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
epopeia $alt | epopeia $alt | ||||
eritreia $alt | eritreia $alt | ||||
esperma $alt | esperma $alt | ||||
espeto $alt2 $noun | espeto $alt2 $noun | ||||
espiroqueta $alt2 | espiroqueta $alt2 | ||||
enterro $alt2 $noun | |||||
esqueleto $alt2 | |||||
estiverdes $alt | estiverdes $alt | ||||
estiveres $alt | estiveres $alt | ||||
estrofe $alt | estrofe $alt | ||||
expeço $alt2 | expeço $alt2 | ||||
farofa $alt | farofa $alt | ||||
febre $alt | febre $alt | ||||
fera $alt | |||||
fere $alt | fere $alt | ||||
ferem $alt | ferem $alt | ||||
fezes $alt | fezes $alt | ||||
fizerem $alt | fizerem $alt | ||||
fizerdes $alt | fizerdes $alt | ||||
fizeres $alt | fizeres $alt | ||||
folga $alt | |||||
fogos $alt | fogos $alt | ||||
fores $alt2 | fores $alt2 | ||||
forro $alt $verb | forro $alt $verb | ||||
fossem $alt2 | fossem $alt2 | ||||
foste $alt2 | foste $alt2 | ||||
frevo $alt2 | frevo $alt2 | ||||
galera $alt | |||||
gameta $alt2 | gameta $alt2 | ||||
geleia $alt | geleia $alt | ||||
gelo $alt $verb | gelo $alt $verb | ||||
poxa p'oS& | poxa p'oS& | ||||
preta $alt2 | preta $alt2 | ||||
preto $alt2 | preto $alt2 | ||||
primavera $alt | |||||
profere $alt | profere $alt | ||||
proferem $alt | proferem $alt | ||||
puder $alt | puder $alt | ||||
puserdes $alt | puserdes $alt | ||||
recomeço $alt2 $noun | |||||
recordo $alt | recordo $alt | ||||
recorto $alt | recorto $alt | ||||
rede $alt2 | rede $alt2 | ||||
sobe $alt | sobe $alt | ||||
sobem $alt | sobem $alt | ||||
soco $alt2 | soco $alt2 | ||||
soco $alt $verb | |||||
sofrem $alt | sofrem $alt | ||||
sofre $alt | sofre $alt | ||||
sofreste $alt2 | sofreste $alt2 | ||||
sogra $alt | |||||
sopre $alt | sopre $alt | ||||
soprem $alt | soprem $alt | ||||
sopro $alt $verb | |||||
sorvete $alt2 | sorvete $alt2 | ||||
sossego $alt2 $noun | sossego $alt2 $noun | ||||
souber $alt | souber $alt | ||||
sugerem $alt | sugerem $alt | ||||
suor swOr | suor swOr | ||||
tapete $alt2 | tapete $alt2 | ||||
tempero $alt $verb | |||||
teta $alt2 | teta $alt2 | ||||
tiver $alt | tiver $alt | ||||
tiveres $alt | tiveres $alt |
// endings | // endings | ||||
.L01 a am o | .L01 a am o | ||||
.L02 a am e em o | |||||
.L02 a am e em o ue uem | |||||
.L03 a am | .L03 a am | ||||
.group a | .group a | ||||
_desapar) e (çL01_ e | _desapar) e (çL01_ e | ||||
_esclar) e (çL01_ e | _esclar) e (çL01_ e | ||||
_reapar) e (çL01_ e | _reapar) e (çL01_ e | ||||
_sol) e (trL01_ E | |||||
_acont) e (çL03_ e | |||||
_envaid) e (çL01_ e | |||||
_ofer) e (çL01_ e | |||||
_enriqu) e (çL01_ e | |||||
_descr) e (vL01_ e | |||||
_enfraqu) e (çL01_ e | |||||
//endsort | //endsort | ||||
.group é | .group é | ||||
?1 f) o (rmulá u // eg: formulário, formulários. | ?1 f) o (rmulá u // eg: formulário, formulários. | ||||
?1 v) o (lt O | ?1 v) o (lt O | ||||
//sort | |||||
_m) o (lhL02_ O | _m) o (lhL02_ O | ||||
_ref) o (gL02_ O | |||||
c) o (rrL03_ o // escorra, incorra, corra, recorra | c) o (rrL03_ o // escorra, incorra, corra, recorra | ||||
_m) o (rrL03_ o | _m) o (rrL03_ o | ||||
_ap) oi (L03_ OI | _ap) oi (L03_ OI | ||||
p) ostos (_ Ost=Us# // dispostos etc. | p) ostos (_ Ost=Us# // dispostos etc. | ||||
//endsort | |||||
.group ô | .group ô | ||||
ô ''o | ô ''o |
щ SS;A | щ SS;A | ||||
ъ kAlVnl,Vqbilges'e | ъ kAlVnl,Vqbilges'e | ||||
ы V: | ы V: | ||||
ь neS;kal,ekbilges'e | |||||
э e: | |||||
ь neS;k&l,ekbilges'e | |||||
э e|: | |||||
ю ju | ю ju | ||||
я jA | я jA | ||||
_5X ill'e | _5X ill'e | ||||
_6X Altm'VS | _6X Altm'VS | ||||
_7X Z;itm'eS | _7X Z;itm'eS | ||||
_8X siks'an | |||||
_8X siks'&n | |||||
_9X tuks'An | _9X tuks'An | ||||
_0C j'Wz | _0C j'Wz | ||||
_0M1 m'eN | _0M1 m'eN | ||||
_0M4 billi'on | _0M4 billi'on | ||||
_1M4 billi'on | _1M4 billi'on | ||||
_dpt bWt,en | |||||
_dpt _bWt,en |
а A | а A | ||||
.group ә | .group ә | ||||
ә a | |||||
ә & | |||||
әе e: // 'әнкәен' | |||||
.group б | .group б | ||||
б b | б b | ||||
в w // [v] in Russian words | в w // [v] in Russian words | ||||
.group г | .group г | ||||
г g // may be [Q] or [r"] ?? | |||||
г g // changes to [Q] or [Q"] | |||||
.group д | .group д | ||||
д d | д d | ||||
.group е | .group е | ||||
_) е je2 // may be [je] [jV] | |||||
_) е je2 // changes to [je] or [jV] | |||||
е e | е e | ||||
.group ё | .group ё | ||||
.group и | .group и | ||||
и i | и i | ||||
A) и j | |||||
.group й | .group й | ||||
й j | й j | ||||
.group н | .group н | ||||
н n | н n | ||||
н (к N | |||||
// н (к N | |||||
н (г N | н (г N | ||||
н (х N | н (х N | ||||
.group у | .group у | ||||
у u // or w | у u // or w | ||||
A) у w | |||||
.group ү | .group ү | ||||
ү y // or w | ү y // or w | ||||
A) ү w | |||||
.group ф | .group ф | ||||
ф f | ф f | ||||
э e | э e | ||||
.group ю | .group ю | ||||
ю ju2 // or jy | |||||
ю ju2 // changes to ju or jy | |||||
.group я | .group я | ||||
я jA2 // or ja | |||||
я ja // changes to jA or j& | |||||
.group | .group | ||||
$ dolAR | $ dolAR |
83 phoneme tables | 83 phoneme tables | ||||
new total | new total | ||||
base 107 107 | |||||
consonants 10 116 | |||||
base2 26 123 | |||||
en 53 153 | |||||
en-n 33 153 | |||||
en-us 41 154 | |||||
en-sc 40 155 | |||||
en-rp 34 153 | |||||
en-wm 31 153 | |||||
en-wi 30 153 | |||||
af 39 136 | |||||
cy 29 132 | |||||
de 41 139 | |||||
eo 13 114 | |||||
jbo 2 114 | |||||
nci 3 123 | |||||
fi 41 133 | |||||
et 40 133 | |||||
fr 64 144 | |||||
fr-ca 11 144 | |||||
hi 57 148 | |||||
ta 23 152 | |||||
kn 17 148 | |||||
ml 21 151 | |||||
hu 25 122 | |||||
lt 44 137 | |||||
lv 29 125 | |||||
nl 35 128 | |||||
pl 22 120 | |||||
sk 28 135 | |||||
cs 7 135 | |||||
hr 25 140 | |||||
mk 3 141 | |||||
sr 14 142 | |||||
ru 49 137 | |||||
bg 14 123 | |||||
it 19 127 | |||||
la 21 124 | |||||
es 15 123 | |||||
es-la 1 123 | |||||
ca 11 125 | |||||
pt 29 138 | |||||
pt-pt 20 138 | |||||
ro 36 146 | |||||
el 10 123 | |||||
grc 12 127 | |||||
sv 22 127 | |||||
no 28 132 | |||||
is 42 139 | |||||
vi 41 139 | |||||
zhy 41 136 | |||||
zh 64 153 | |||||
sw 9 108 | |||||
tr 19 126 | |||||
ku 18 127 | |||||
id 15 125 | |||||
sq 33 126 | |||||
hy 23 117 | |||||
da 27 120 | |||||
ka 19 112 | |||||
rw 15 130 | |||||
ne 18 156 | |||||
pa 15 150 | |||||
prs 8 111 | |||||
sl 10 135 | |||||
gd 6 107 | |||||
nso 12 111 | |||||
ht 11 144 | |||||
az 10 127 | |||||
ak 8 109 | |||||
am 15 112 | |||||
wo 18 118 | |||||
dv 14 148 | |||||
te 16 148 | |||||
si 24 154 | |||||
tn 27 119 | |||||
mt 32 127 | |||||
bo 10 152 | |||||
kk 20 117 | |||||
fa 9 110 | |||||
ga 21 125 | |||||
tt 18 116 | |||||
ko 15 114 | |||||
base 109 109 | |||||
consonants 10 118 | |||||
base2 26 125 | |||||
en 53 155 | |||||
en-n 33 155 | |||||
en-us 41 156 | |||||
en-sc 40 157 | |||||
en-rp 34 155 | |||||
en-wm 31 155 | |||||
en-wi 30 155 | |||||
af 39 138 | |||||
cy 29 134 | |||||
de 41 141 | |||||
eo 13 116 | |||||
jbo 2 116 | |||||
nci 3 125 | |||||
fi 41 135 | |||||
et 40 135 | |||||
fr 64 146 | |||||
fr-ca 11 146 | |||||
hi 57 150 | |||||
ta 23 154 | |||||
kn 17 150 | |||||
ml 21 153 | |||||
hu 25 124 | |||||
lt 44 139 | |||||
lv 29 127 | |||||
nl 35 130 | |||||
pl 22 122 | |||||
sk 28 137 | |||||
cs 7 137 | |||||
hr 25 142 | |||||
mk 3 143 | |||||
sr 14 144 | |||||
ru 49 139 | |||||
bg 14 124 | |||||
it 19 129 | |||||
la 21 126 | |||||
es 15 125 | |||||
es-la 1 125 | |||||
ca 11 127 | |||||
pt 29 140 | |||||
pt-pt 20 140 | |||||
ro 36 148 | |||||
el 10 125 | |||||
grc 12 129 | |||||
sv 22 129 | |||||
no 28 134 | |||||
is 42 141 | |||||
vi 41 141 | |||||
zhy 41 138 | |||||
zh 64 155 | |||||
sw 9 110 | |||||
tr 19 128 | |||||
ku 18 129 | |||||
id 15 127 | |||||
sq 33 127 | |||||
hy 23 119 | |||||
da 27 122 | |||||
ka 19 114 | |||||
rw 15 132 | |||||
ne 18 158 | |||||
pa 15 152 | |||||
prs 8 113 | |||||
sl 10 137 | |||||
gd 6 109 | |||||
nso 12 113 | |||||
ht 11 146 | |||||
az 10 129 | |||||
ak 8 111 | |||||
am 15 114 | |||||
wo 18 120 | |||||
dv 14 150 | |||||
te 16 150 | |||||
si 24 156 | |||||
tn 27 121 | |||||
mt 32 129 | |||||
bo 10 154 | |||||
kk 20 118 | |||||
fa 9 112 | |||||
ga 21 127 | |||||
tt 23 120 | |||||
ko 15 116 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [hæu] base | |||||
l/l@ [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [hæu] base | |||||
l/la [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] tn | [K] tn | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [hæu] base | |||||
l/le [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [hæu] base | |||||
l/li [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_i [l/3] base | l/l_i [l/3] base | ||||
[l/] fr | [l/] fr | ||||
[i] sq | [i] sq | ||||
ll/ll [L] bg | |||||
ll/_ll [L] bg | |||||
ll/ll [L] base | |||||
ll/_ll [L] base | |||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [hæu] base | |||||
l/lo [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[l;] lt | [l;] lt | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [hæu] base | |||||
l/lu [h1ø] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_u [l/3] base | l/l_u [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l_vi [l] vi | l/l_vi [l] vi | ||||
ll/xll [L] bg | |||||
ll/xll [L] base | |||||
l/l_y [l/] fr | l/l_y [l/] fr | ||||
l/tl [l] base | l/tl [l] base | ||||
[l] fr | [l] fr | ||||
[@] sq | [@] sq | ||||
[V] sq | [V] sq | ||||
[@/] sq | [@/] sq | ||||
vowel/&_2 [a] tt | |||||
[V] tt | |||||
vowel/@_3 [@#] en | vowel/@_3 [@#] en | ||||
[@] en-sc | [@] en-sc | ||||
[I] en-sc | [I] en-sc | ||||
[aa] zhy | [aa] zhy | ||||
[a] hy | [a] hy | ||||
[a] az | [a] az | ||||
[A] tt | |||||
vowel/aa# [O] en-us | vowel/aa# [O] en-us | ||||
[0] en-wi | [0] en-wi | ||||
[a2] fi | [a2] fi | ||||
[A1] et | [A1] et | ||||
[A] nl | [A] nl | ||||
[a:] is | [a:] is | ||||
[A] tt | |||||
[a] ko | [a] ko | ||||
vowel/aa_9 [a] fi | vowel/aa_9 [a] fi | ||||
[a] et | [a] et | ||||
vowel/e_5 [i] en-sc | vowel/e_5 [i] en-sc | ||||
vowel/e_6 [e] ht | vowel/e_6 [e] ht | ||||
[e] ak | [e] ak | ||||
[e:] tt | |||||
vowel/e_7 [e:] et | vowel/e_7 [e:] et | ||||
vowel/e_8 [E:] de | vowel/e_8 [E:] de | ||||
[e] fr | [e] fr | ||||
vowel/ee [E] en-n | vowel/ee [E] en-n | ||||
[E] sv | [E] sv | ||||
[e] ka | [e] ka | ||||
[&] tt | |||||
vowel/e_e [E] en-sc | vowel/e_e [E] en-sc | ||||
[E:] is | [E:] is | ||||
vowel/ee# [E#] pl | vowel/ee# [E#] pl | ||||
vowel/o_3 [oU] en-sc | vowel/o_3 [oU] en-sc | ||||
[o] kk | [o] kk | ||||
vowel/o-_3 [U] en-rp | vowel/o-_3 [U] en-rp | ||||
[V] tt | |||||
vowel/o-_4 [o] ro | vowel/o-_4 [o] ro | ||||
[o] am | [o] am | ||||
vowel/o_5 [O] da | vowel/o_5 [O] da |
endphoneme | endphoneme | ||||
phoneme L // velar L | phoneme L // velar L | ||||
liquid | |||||
lengthmod 7 | |||||
IF nextPh(isNotVowel) THEN | |||||
ChangePhoneme(l/2) // use 'dark' [l] after a vowel | |||||
ENDIF | |||||
VowelEnding(ll/xll, -40) | |||||
IF prevPh(isPause) THEN | |||||
FMT(ll/_ll) | |||||
ENDIF | |||||
FMT(ll/ll) | |||||
import_phoneme base/L | |||||
endphoneme | endphoneme | ||||
liquid | liquid | ||||
lengthmod 7 | lengthmod 7 | ||||
IF nextPhW(isVowel) THEN | |||||
ELSE | |||||
IF NOT nextPhW(isVowel) THEN | |||||
IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN | IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN | ||||
ChangePhoneme(l/2) | ChangePhoneme(l/2) | ||||
ELSE | ELSE | ||||
InsertPhoneme(I2) | InsertPhoneme(I2) | ||||
ENDIF | ENDIF | ||||
IF prevPh(isVoiced) THEN | |||||
ELSE | |||||
IF NOT prevPh(isVoiced) THEN | |||||
ChangePhoneme(s) | ChangePhoneme(s) | ||||
ENDIF | ENDIF | ||||
ChangePhoneme(z) | ChangePhoneme(z) |
// use 'flag1' for front vowels | |||||
// use 'flag1' for front vowels, 'flag2' for back vowels | |||||
phoneme i | phoneme i | ||||
vowel flag1 starttype #i endtype #i | vowel flag1 starttype #i endtype #i | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | |||||
vowel flag2 starttype #u endtype #u | |||||
length 180 | length 180 | ||||
FMT(vowel/u) | FMT(vowel/u) | ||||
endphoneme | endphoneme | ||||
phoneme u2 // letter 'ю' | |||||
vowel starttype #u endtype #u | |||||
length 180 | |||||
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN | |||||
ChangePhoneme(y) | |||||
ELSE | |||||
ChangePhoneme(u) | |||||
ENDIF | |||||
endphoneme | |||||
phoneme e | phoneme e | ||||
vowel flag1 starttype #@ endtype #@ | vowel flag1 starttype #@ endtype #@ | ||||
length 100 | |||||
length 110 | |||||
FMT(vowel/ii#) | FMT(vowel/ii#) | ||||
endphoneme | endphoneme | ||||
phoneme e2 // 'e' at start of word | |||||
vowel starttype #@ endtype #@ | |||||
length 100 | |||||
IF nextVowel(isFlag1) THEN | |||||
ChangePhoneme(e) | |||||
ENDIF | |||||
ChangePhoneme(V) | |||||
endphoneme | |||||
phoneme W | phoneme W | ||||
vowel flag1 starttype #@ endtype #@ | vowel flag1 starttype #@ endtype #@ | ||||
length 100 | |||||
length 110 | |||||
FMT(vowel/oe) | FMT(vowel/oe) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | |||||
length 100 | |||||
vowel flag2 starttype #o endtype #o | |||||
length 110 | |||||
FMT(vowel/o_mid) | FMT(vowel/o_mid) | ||||
endphoneme | endphoneme | ||||
phoneme V | phoneme V | ||||
vowel starttype #@ endtype #@ | |||||
length 100 | |||||
FMT(vowel/o-_3) | |||||
vowel flag2 starttype #@ endtype #@ | |||||
length 110 | |||||
ipa ɯ | |||||
FMT(vowel/@_2) | |||||
endphoneme | endphoneme | ||||
phoneme a | |||||
vowel flag1 starttype #a endtype #a | |||||
phoneme & | |||||
vowel flag1 starttype #e endtype #e | |||||
length 180 | length 180 | ||||
FMT(vowel/&_2) | |||||
FMT(vowel/ee) | |||||
endphoneme | endphoneme | ||||
phoneme A | phoneme A | ||||
vowel starttype #a endtype #a | |||||
vowel flag2 starttype #a endtype #a | |||||
length 180 | length 180 | ||||
IF thisPh(isFirstVowel) THEN | |||||
ChangePhoneme(0) | |||||
ENDIF | |||||
IF prevVowel(0) THEN | |||||
ChangePhoneme(0) | |||||
IF NOT nextPhW(w) AND NOT thisPh(isTranslationGiven) THEN | |||||
IF thisPh(isFirstVowel) THEN | |||||
ChangePhoneme(0) | |||||
ENDIF | |||||
IF prevVowel(0) AND thisPh(isSecondVowel) THEN | |||||
ChangePhoneme(0) | |||||
ENDIF | |||||
ENDIF | ENDIF | ||||
FMT(vowel/aa) | |||||
FMT(vowel/aa_8) | |||||
endphoneme | |||||
phoneme 0 | |||||
vowel flag2 starttype #o endtype #o | |||||
length 180 | |||||
FMT(vowel/0_3) | |||||
endphoneme | |||||
phoneme e: | |||||
vowel flag1 starttype #e endtype #e | |||||
length 240 | |||||
FMT(vowel/e_6) | |||||
endphoneme | |||||
phoneme I | |||||
vowel flag1 starttype #i endtype #i | |||||
length 110 | |||||
FMT(vowel/ii) | |||||
endphoneme | endphoneme | ||||
phoneme A2 // letter 'я' | |||||
phoneme a // letter 'я' | |||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 180 | length 180 | ||||
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN | |||||
ChangePhoneme(a) | |||||
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN // front vowels | |||||
ChangePhoneme(&) | |||||
ENDIF | ENDIF | ||||
ChangePhoneme(A) | ChangePhoneme(A) | ||||
endphoneme | endphoneme | ||||
phoneme 0 | |||||
vowel starttype #o endtype #o | |||||
phoneme u2 // letter 'ю' | |||||
vowel starttype #u endtype #u | |||||
length 180 | length 180 | ||||
FMT(vowel/0_3) | |||||
IF prevVowel(isFlag1) OR nextVowel(isFlag1) THEN | |||||
ChangePhoneme(y) | |||||
ELSE | |||||
ChangePhoneme(u) | |||||
ENDIF | |||||
endphoneme | endphoneme | ||||
phoneme I | |||||
vowel flag1 starttype #i endtype #i | |||||
phoneme e2 // 'e' at start of word | |||||
vowel starttype #@ endtype #@ | |||||
length 100 | length 100 | ||||
FMT(vowel/ii) | |||||
IF nextVowel(isFlag2) THEN | |||||
ChangePhoneme(V) | |||||
ELSE | |||||
ChangePhoneme(e) | |||||
ENDIF | |||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme t | phoneme t | ||||
import_phoneme base/t[ | |||||
import_phoneme base2/t | |||||
endphoneme | endphoneme | ||||
phoneme d | phoneme d | ||||
import_phoneme base/d[ | import_phoneme base/d[ | ||||
endphoneme | endphoneme | ||||
phoneme k | |||||
vls vel stop | |||||
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN // back vowels | |||||
ChangePhoneme(q) | |||||
ENDIF | |||||
CALL base/k | |||||
endphoneme | |||||
phoneme G | |||||
import_phoneme base/Q" | |||||
endphoneme | |||||
phoneme g | |||||
vcd vel frc | |||||
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN | |||||
ChangePhoneme(G) | |||||
ELSE | |||||
ChangePhoneme(Q) | |||||
ENDIF | |||||
endphoneme | |||||
phoneme l | |||||
liquid | |||||
IF prevVowel(isFlag2) OR nextVowel(isFlag2) THEN | |||||
ChangePhoneme(L) | |||||
ENDIF | |||||
CALL base/l | |||||
endphoneme |
endphoneme | endphoneme | ||||
phoneme L/ | |||||
import_phoneme base/l/2 | |||||
endphoneme | |||||
phoneme L // velar L | |||||
liquid | |||||
lengthmod 7 | |||||
IF nextPh(isNotVowel) THEN | |||||
ChangePhoneme(L/) // use 'dark' [l] after a vowel | |||||
ENDIF | |||||
VowelEnding(ll/xll, -40) | |||||
IF prevPh(isPause) THEN | |||||
FMT(ll/_ll) | |||||
ENDIF | |||||
FMT(ll/ll) | |||||
endphoneme | |||||
phoneme w | phoneme w | ||||
liquid | liquid |
#define k_AND 1 | #define k_AND 1 | ||||
#define k_OR 2 | #define k_OR 2 | ||||
#define k_THEN 3 | #define k_THEN 3 | ||||
#define k_NOT 4 | |||||
#define kTHISSTRESS 0x800 | #define kTHISSTRESS 0x800 | ||||
{"AND", 0, k_AND}, | {"AND", 0, k_AND}, | ||||
{"OR", 0, k_OR}, | {"OR", 0, k_OR}, | ||||
{"THEN", 0, k_THEN}, | {"THEN", 0, k_THEN}, | ||||
{"NOT", 0, k_NOT}, | |||||
{"prevPh", tWHICH_PHONEME, 0}, | {"prevPh", tWHICH_PHONEME, 0}, | ||||
{"prevPhW", tWHICH_PHONEME, 5}, | {"prevPhW", tWHICH_PHONEME, 5}, | ||||
{"thisPh", tWHICH_PHONEME, 1}, | {"thisPh", tWHICH_PHONEME, 1}, | ||||
int key; | int key; | ||||
int finish = 0; | int finish = 0; | ||||
int word = 0; | int word = 0; | ||||
int word2 = 0; | |||||
int word2; | |||||
int data; | int data; | ||||
int bitmap; | int bitmap; | ||||
int brackets; | int brackets; | ||||
int not_flag; | |||||
USHORT *prog_last_if = NULL; | USHORT *prog_last_if = NULL; | ||||
then_count = 2; | then_count = 2; | ||||
while(!finish) | while(!finish) | ||||
{ | { | ||||
not_flag = 0; | |||||
word2 = 0; | |||||
if(prog_out >= prog_out_max) | if(prog_out >= prog_out_max) | ||||
{ | { | ||||
error("Phoneme program too large", NULL); | error("Phoneme program too large", NULL); | ||||
if((key = NextItem(tCONDITION)) < 0) | if((key = NextItem(tCONDITION)) < 0) | ||||
error("Expected a condition, not '%s'",item_string); | error("Expected a condition, not '%s'",item_string); | ||||
if((item_type == 0) && (key == k_NOT)) | |||||
{ | |||||
not_flag = 1; | |||||
if((key = NextItem(tCONDITION)) < 0) | |||||
error("Expected a condition, not '%s'",item_string); | |||||
} | |||||
if(item_type == tWHICH_PHONEME) | if(item_type == tWHICH_PHONEME) | ||||
{ | { | ||||
// prevPh(), thisPh(), nextPh(), next2Ph() etc | // prevPh(), thisPh(), nextPh(), next2Ph() etc | ||||
*prog_out++ = word | i_CONDITION; | *prog_out++ = word | i_CONDITION; | ||||
if(word2 != 0) | if(word2 != 0) | ||||
*prog_out++ = word2; | |||||
*prog_out++ = word2; | |||||
if(not_flag) | |||||
*prog_out++ = i_NOT; | |||||
// expect AND, OR, THEN | // expect AND, OR, THEN | ||||
switch(NextItem(tCONDITION)) | switch(NextItem(tCONDITION)) |
unsigned short ipa1[96] = { | unsigned short ipa1[96] = { | ||||
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | 0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | ||||
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | 0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | ||||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x4c,0x271,0x14b,0x254, | |||||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, | |||||
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | 0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | ||||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | ||||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.46.24 11.Sep.12"; | |||||
const char *version_string = "1.46.25 14.Sep.12"; | |||||
const int version_phdata = 0x014624; | const int version_phdata = 0x014624; | ||||
int option_device_number = -1; | int option_device_number = -1; | ||||
int instn2; | int instn2; | ||||
int or_flag; | int or_flag; | ||||
bool truth; | bool truth; | ||||
bool truth2; | |||||
int data; | int data; | ||||
int end_flag; | int end_flag; | ||||
int ix; | int ix; | ||||
while((instn & 0xe000) == 0x2000) | while((instn & 0xe000) == 0x2000) | ||||
{ | { | ||||
// process a sequence of conditions, using boolean accumulator | // process a sequence of conditions, using boolean accumulator | ||||
truth2 = InterpretCondition(tr, control, plist, prog, worddata); | |||||
prog += NumInstnWords(prog); | |||||
if(*prog == i_NOT) | |||||
{ | |||||
truth2 = truth2 ^ 1; | |||||
prog++; | |||||
} | |||||
if(or_flag) | if(or_flag) | ||||
truth = (truth || InterpretCondition(tr, control, plist, prog, worddata)); | |||||
truth = truth || truth2; | |||||
else | else | ||||
truth = (truth && InterpretCondition(tr, control, plist, prog, worddata)); | |||||
truth = truth && truth2; | |||||
or_flag = instn & 0x1000; | or_flag = instn & 0x1000; | ||||
prog += NumInstnWords(prog); | |||||
instn = *prog; | instn = *prog; | ||||
// instn = *(++prog); | |||||
} | } | ||||
if(truth == false) | if(truth == false) |
#define i_RETURN 0x0001 | #define i_RETURN 0x0001 | ||||
#define i_CONTINUE 0x0002 | #define i_CONTINUE 0x0002 | ||||
#define i_NOT 0x0003 | |||||
// Group 0 instrcutions with 8 bit operand. These values go into bits 8-15 of the instruction | // Group 0 instrcutions with 8 bit operand. These values go into bits 8-15 of the instruction | ||||
#define i_CHANGE_PHONEME 0x01 | #define i_CHANGE_PHONEME 0x01 |
tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable | tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | ||||
tr->langopts.break_numbers = 0x9999998; | |||||
tr->langopts.max_digits = 20; | |||||
} | } | ||||
break; | break; | ||||
break; | break; | ||||
*pn++ = c; | *pn++ = c; | ||||
if((--nx > 0) && (tr->langopts.break_numbers & (1 << nx))) | |||||
nx--; | |||||
if((nx > 0) && (tr->langopts.break_numbers & (1 << nx))) | |||||
{ | { | ||||
memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers | memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers | ||||