espeak_Char(32) can speak "space" by adding an entry for _#32 in *_list file. Similarly for Tab. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@61 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -1,4 +1,4 @@ | |||
//maintainer: Willem van der Walt | |||
//maintainer: Willem van der Walt | |||
// email: [email protected] | |||
// tel: +27 12 8413996 | |||
// Meraka Institute, CSIR | |||
@@ -541,6 +541,7 @@ rukkerig rWk@r@x2 | |||
samelewing sA:m@l,e@v@N | |||
sedert se@d@rt | |||
sektore $2 | |||
sinteties $2 | |||
skepsele skEps@l@ | |||
s'n s'@n | |||
sobere s'o@b@r@ |
@@ -16,6 +16,7 @@ | |||
a (C a | |||
C) a (Csier %a // (ge)finansier/kassier | |||
j) a (pan %a //japan first a sound and stress | |||
C) abie 'A:bi | |||
abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie | |||
_) a (bC %a // abdy/ablatief/ablusie/abstrak, etdc. | |||
@@ -37,6 +38,11 @@ | |||
_) aka a%k@ //akademie etc. | |||
akkedis a%k@d'Is //akkedis and compounds | |||
ae A: //should be A:@ but sounds wrong | |||
konst) abel A:b@l //exception for konstabel in compounds | |||
t) abel %ab'&l //tabelopskrif temperatuurtabel etc. | |||
t) abell %ab'&l //tabelle fix double l | |||
w) a (tering A: //watering exception to the rest | |||
C) a (tering %a //short unstressed a before tering formatering etc. except watering | |||
ai aI | |||
adres %adrEs // fix last e sound of adres as last part of compounds | |||
_) alle (C al@ // alledaags/e/allerhande | |||
@@ -734,7 +740,8 @@ | |||
CoeC) e (C @ //fix e in boetedoening, boedelbelasting and many others | |||
orr) e (l @ //fix e in borrel, orrel, korrel in compounds | |||
intell) e (k %E //intellek, and friends | |||
p) e (ring 'e@ //imansipering and others e sound and stress | |||
roep) e (ring 'e@ //groepering e sound and stress | |||
eval (u %iv%al // evaluasie/evalueer/evaluering | |||
CAt) e (gn & //fix e in mikrotegnologie and others | |||
ei) e @ //eiewys and others | |||
@@ -924,6 +931,7 @@ | |||
iber (i@ %ibe@r // Liberië/Siberië/Liberiese/Siberiese/Iberiese | |||
ie i | |||
h) i (dro i //hidro in compounds | |||
_) in (a@ In_ //inasem inagneming etc. | |||
_) iese (C ,is@ // iesegrimmig and derivitives | |||
ieus i'Y@s // this ending always takes stress | |||
C) i (g @// figuur/figure/stoksielsaligalleenA | |||
@@ -1320,7 +1328,6 @@ | |||
minder (jar m@n@r // move default stress: minderjarig and derivitives | |||
miner (A m@n@r // mineraal and many compounds | |||
mi (neur m%i // move default stress: mineur and compounds | |||
minnares (_ m@n%arEs // fix stress and e sound: minnares/medeminnares and similar | |||
mikr (o mikr | |||
ministers m@n'Ist@rs | |||
mise (ra m@s // fix stress and drop e: miserabel/-e/-s/-ste | |||
@@ -1449,6 +1456,7 @@ | |||
_) na (skeer n''A: // restore default stress: naskeermiddel/-room | |||
_) na (tC na // many compounds beginning with nat | |||
na (tuur n%a // natuur and compounds and derivitives | |||
navig n%av%ix2 //navigasie, navigeer etc. | |||
@) na (_ na // shorten final na, except for: | |||
r) na (_ nA: // daarna/hierna/waarna | |||
nadruklik nA:dr'Wkl@k // nadruklik/e | |||
@@ -2176,12 +2184,15 @@ | |||
te (oo t@ // geboorteoorskot/kosteoorweging/siekteoorsaak/terroristeoorlog | |||
_) teraarde t%&r?A:rd@ // move default stress and fix e sounds: teraardebestelling/-s | |||
n) terie t@r'i // galanterie/infanterie and compounds | |||
wa) te (ring t@ //water exception to rest | |||
Ca) te (ring t'e@ //opdatering formatering etc. | |||
_) tering te@r@N // tering and compounds | |||
tesou (rie t%Es%u //tesourie and compounds | |||
moles) tering te@r@N // molestering/kindermolestering | |||
_) ter (l t@r // move default stress: terloops/-e | |||
@) term (_ t&r@ // correct pronunciation of e | |||
@) terme (_ t&rm@ // correct pronunciation of 1st e | |||
sin) te (ti te@ //sintetiseer, compounds and derivitives | |||
tern (K t'&:r@-n //lantern ekstern etc. | |||
tern (e_ t'&rn // interne/eksterne | |||
_) ter (nA t@r // terneergedruk/ternouernood | |||
@@ -2302,6 +2313,7 @@ | |||
ven (ster fe~n // nasalise | |||
ven (yn f@n // venyn/venynig | |||
ver f@r | |||
virtu v@rtS%y //virtueel virtuose etc. fix v and t sounds and assure lack of stress | |||
_) ver (@P3 f@r | |||
verant (w f@r%ant // (on)verantwoordelik/-heid/verantwoording | |||
verende f'e@r@nd@ | |||
@@ -2459,7 +2471,7 @@ | |||
woe (styn v%u // move default stress: woestyn and compounds | |||
wolke vOlk@ // nimbuswolke/wolkekrabber | |||
woorde vo@rd@ | |||
w (yser v //padwyser and many others with wyser in compounds | |||
nt) w (A v | |||
.group x | |||
@@ -2515,7 +2527,7 @@ | |||
** | |||
**) * (_ _:: | |||
+ plus | |||
+ pl'Ws | |||
_) ++ (_ pluspl'us | |||
\+\+\+) + // ignore + after the first 3 | |||
@@ -307,9 +307,9 @@ y Y yI yU | |||
* *; b b; c C d d; | |||
dZ f f; g h j k l | |||
l; m m; n N n; p p; | |||
r s S s; S; t t; tS | |||
ts ts; v v; w z Z z; | |||
Z; | |||
r s S S; t T t; tS | |||
ts ts; v v; w w2 x z | |||
Z z; Z; | |||
Dictionary is_dict |
@@ -54,6 +54,8 @@ z zEd | |||
_cap k,ap@-t@L | |||
_?A lEt3 | |||
_?? sImb@L | |||
_#9 tab | |||
_#32 speIs | |||
_! Ekskl@m'eIS@n | |||
_" kwoUts | |||
@@ -135,6 +137,7 @@ _0M3 b'Ili@n | |||
_0and @n | |||
?3 _0and | |||
_dpt pOInt | |||
_roman roUm@n_ | |||
// ABBREVIATIONS | |||
@@ -187,10 +190,6 @@ u.s ju:'Es | |||
wwii dVb@Lju:dVb@Lju:t'u: | |||
xy $abbrev | |||
ii tu: $abbrev // roman numerals | |||
iii Tri: $abbrev | |||
iv fo@ $abbrev | |||
nd $only | |||
rd $only |
@@ -3,43 +3,45 @@ | |||
// numbers | |||
_0 TE*o | |||
_1 'uno | |||
_2 d'os | |||
_3 t@-*'es | |||
_4 kw'at@-*o | |||
_5 T'inko | |||
_6 s'eIs | |||
_7 sj'Ete | |||
_8 'otSo | |||
_9 nw'Eve | |||
_1X dj'ET | |||
_11 'onTe | |||
_12 d'oTe | |||
_13 t@-*'ETe | |||
_14 kat'oRTe | |||
_15 k'inTe | |||
_20 v'eInte | |||
_2X v'eInt | |||
_3X t@-*'eInta | |||
_4X kwa*'Enta | |||
_5X Tinkw'Enta | |||
_6X sEs'Enta | |||
_7X sEt'Enta | |||
_8X otS'Enta | |||
_9X nov'Enta | |||
_0C T'ientos | |||
_1C0 T'ien // exactly one hundred | |||
_1C T'iento | |||
_5C kinj'Entos | |||
_0M1 m'il | |||
_1M1 m'il // no '1' before thousand | |||
_0M2 mil^'ones | |||
_1M2 'unmil^'on | |||
_0M4 _bil^'ones | |||
_1M4 'unbil^'on | |||
_0and i | |||
_dpt koma | |||
_0 TE*o | |||
_1 'uno | |||
_2 d'os | |||
_3 t@-*'es | |||
_4 kw'at@-*o | |||
_5 T'inko | |||
_6 s'eIs | |||
_7 sj'Ete | |||
_8 'otSo | |||
_9 nw'Eve | |||
_1X dj'ET | |||
_11 'onTe | |||
_12 d'oTe | |||
_13 t@-*'ETe | |||
_14 kat'oRTe | |||
_15 k'inTe | |||
_20 v'eInte | |||
_2X v'eInt | |||
_3X t@-*'eInta | |||
_4X kwa*'Enta | |||
_5X Tinkw'Enta | |||
_6X sEs'Enta | |||
_7X sEt'Enta | |||
_8X otS'Enta | |||
_9X nov'Enta | |||
_0C T'ientos | |||
_1C0 T'ien // exactly one hundred | |||
_1C T'iento | |||
_5C kinj'Entos | |||
_7C s,EtETj'Entos | |||
_9C n,ovETj'Entos | |||
_0M1 m'il | |||
_1M1 m'il // no '1' before thousand | |||
_0M2 mil^'ones | |||
_1M2 'unmil^'on | |||
_0M4 _bil^'ones | |||
_1M4 'unbil^'on | |||
_0and i | |||
_dpt koma | |||
@@ -101,7 +103,7 @@ os $u+ | |||
// possessives | |||
mi $u+ | |||
mi mi $u+ | |||
mis $u+ | |||
tu $u+ | |||
tus $u+ |
@@ -1,12 +1,16 @@ | |||
// translation rules | |||
// translation rules for Spanish | |||
// This file is UTF-8 encoded | |||
// Conditional rules | |||
// ?1 Castilian | |||
// ?2 Latin America | |||
.group a | |||
_) a (_ a | |||
a a | |||
ai aI | |||
ay aI | |||
ay (K aI | |||
ay (_ 'aI | |||
@@ -39,7 +43,7 @@ | |||
e E | |||
e (_ e | |||
ei eI | |||
ey eI | |||
ey (K eI | |||
ey (_ 'eI | |||
_) eu eU | |||
@@ -153,7 +157,7 @@ | |||
.group v | |||
_) v (_ ve | |||
_) v (_ uve | |||
v v | |||
_) v v | |||
m) v v | |||
@@ -161,7 +165,7 @@ | |||
.group w | |||
_) w (_ d'oBle,u | |||
_) w (_ ,uve||d'oBle | |||
w w | |||
@@ -155,37 +155,7 @@ _0M4 b'ilijUna | |||
_1M4 b'ilijUn | |||
_dpt _:z'a*Ez_ | |||
// Roman numerals | |||
ii $abbrev | |||
iii $abbrev | |||
iv $abbrev | |||
vii $abbrev | |||
viii $abbrev | |||
ix $abbrev | |||
xi $abbrev | |||
xii $abbrev | |||
xiii $abbrev | |||
xiv $abbrev | |||
xvi $abbrev | |||
xvii $abbrev | |||
xviii $abbrev | |||
xix $abbrev | |||
xxi $abbrev | |||
xxii $abbrev | |||
xxiii $abbrev | |||
xxiv $abbrev | |||
xxvi $abbrev | |||
xxvii $abbrev | |||
xxviii $abbrev | |||
xxix $abbrev | |||
xxxi $abbrev | |||
xxxii $abbrev | |||
xxxiii $abbrev | |||
xxxiv $abbrev | |||
xxxvi $abbrev | |||
xxxvii $abbrev | |||
xxxviii $abbrev | |||
xxxix $abbrev | |||
// Abbreviations | |||
aaa $abbrev |
@@ -63,34 +63,7 @@ u.n u:JnEvEzEt: $dot | |||
ú.n u:JnEvEzEt: $dot | |||
vö v'EZd||_'Yss2E | |||
?1 i EJ $abbrev | |||
ii kEttY: $abbrev | |||
iii ha:R2om $abbrev | |||
iv ne:J $abbrev | |||
vi hAt $abbrev | |||
vii he:t $abbrev | |||
viii n^olts $abbrev | |||
ix kilEnts $abbrev | |||
xi tizEnEJ $abbrev | |||
xii tizEnkEttY: $abbrev | |||
xiii tizEnha:Rom $abbrev | |||
xiv tizEnne:J $abbrev | |||
xv tizEnYt $abbrev | |||
xvi tizEnhAt $abbrev | |||
xvii tizEnhe:t $abbrev | |||
xviii tizEnn^olts $abbrev | |||
xix tizEnkilEnts $abbrev | |||
xx hu:s $abbrev | |||
xxi husonEJ $abbrev | |||
xxii husonkEttY: $abbrev | |||
xxiii husonha:Rom $abbrev | |||
xxiv husonne:J $abbrev | |||
xxv husonYt $abbrev | |||
xxvi husonhAt $abbrev | |||
xxvii husonhe:t $abbrev | |||
xxviii husonn^olts $abbrev | |||
xxix husonkilEnts $abbrev | |||
xxx hARmints $abbrev | |||
?1 i EJ $abbrev // option for Roman number | |||
// Articles | |||
@@ -135,6 +108,8 @@ noha $u $pause // even thought | |||
nem $alt2 $strend | |||
ne $u+ | |||
e $u // "-e" question | |||
e $atend // stressed at end of sentence | |||
// Unstressed adverbs prepositions etc. | |||
néhány $u+ | |||
@@ -189,6 +164,8 @@ ről $u | |||
on $u // on | |||
en $u | |||
ön $u | |||
an $u // so many persons | |||
ón $u | |||
szor $u // times | |||
szer $u | |||
ször $u | |||
@@ -241,6 +218,9 @@ egyaránt $u // alike | |||
minden $u // all | |||
részben $u // partly | |||
egyik $u // one of | |||
másik $u // the other | |||
// word pairs | |||
@@ -341,5 +321,7 @@ $ dolla:R2 | |||
// Main Exceptions List | |||
//===================== | |||
nato na:to: | |||
@@ -6,14 +6,12 @@ | |||
a A | |||
_) a (_ %A | |||
!_n) ato a:to: // NATO | |||
.group á | |||
á a: | |||
.group b | |||
b b | |||
bb b: | |||
// bb b: | |||
biz (A b'iz, // bizalmas etc. | |||
biedermeier bi:dER2ma:jER2 | |||
@@ -59,7 +57,7 @@ hierar) ch (i C | |||
.group d | |||
d d | |||
dd d: | |||
// dd d: | |||
dz dz | |||
A) dz (A d:z | |||
dzs dZ | |||
@@ -82,7 +80,6 @@ hierar) ch (i C | |||
.group e | |||
e E | |||
D_-_) es (_ %ES | |||
.group é | |||
@@ -97,7 +94,7 @@ hierar) ch (i C | |||
.group g | |||
g g | |||
gg g: | |||
// gg g: | |||
gy J | |||
ggy J: | |||
@@ -109,7 +106,8 @@ hierar) ch (i C | |||
A) gyj (A J: | |||
_e) gy (es J: | |||
_e) gy (et J: | |||
_e) gy (et_ J: | |||
_e) gy (etlen J: | |||
_e) gy (ik J: | |||
_e) gy (üt J: | |||
_minde) gy (ik J: | |||
@@ -135,6 +133,7 @@ _minde) gy (ik J: | |||
.group k | |||
k k | |||
kk k: | |||
kk (C kk | |||
_) köz kYz | |||
.group l | |||
@@ -186,6 +185,7 @@ szamue) ly lli | |||
.group p | |||
p p | |||
pp p: | |||
pp (C pp | |||
p (v p_ | |||
_) potsdam potsda:m | |||
@@ -199,6 +199,7 @@ szamue) ly lli | |||
r R2 | |||
rr RR | |||
rm R2_m | |||
r (cc R | |||
_) richa (rd R2iCa: | |||
_) richá (rd R2iCa: | |||
@@ -232,6 +233,7 @@ _munká) s S | |||
-) t (_ t | |||
t t | |||
tt t: | |||
tt (C tt | |||
ty c | |||
// s) ty c: // | |||
// z) ty c: // keztyű |
@@ -118,8 +118,8 @@ mi $u+ | |||
ti $u+ | |||
si $u+ | |||
ci $u+ | |||
vi $u+ | |||
li $u+ | |||
vi vi $u+ | |||
li li $u+ | |||
// words that double the following consonant |
@@ -259,118 +259,44 @@ estote $u | |||
sunto $u | |||
// numerals 1-100 | |||
// numerals | |||
ii II // word, not numeric | |||
vi wI // word, not numeric | |||
i 'u:nUs $capital | |||
ii d'UO $capital | |||
iii t@-*,e:s | |||
iv kw'at:UOR | |||
v kw'i:NkwE | |||
vi s,Eks $capital | |||
vii s'EptEm | |||
viii 'Okto: | |||
ix n'OwEm | |||
x d'EkEm | |||
xi 'u:ndEkIm | |||
xii dU'OdEkIm | |||
xiii t@-*,e:d'EkIm | |||
xiv kwat:w'ORdEkIm | |||
xv kw,i:nd'EkIm | |||
xvi s'EdEkIm | |||
xvii sEpt'EndEkIm | |||
xviii dUOdEwIg'IntI | |||
xix u:ndEwIg'IntI | |||
xx wi:g'Inti: | |||
xxi wi:g'Inti:||'u:nUs | |||
xxii wi:g'Inti:||d'UO | |||
xxiii wi:g'Inti:||t@-*,e:s | |||
xxiv wi:g'Inti:||kw'at:UOR | |||
xxv wi:g'Inti:||kw'i:NkwE | |||
xxvi wi:g'Inti:||s,Eks | |||
xxvii wi:g'Inti:||s'EptEm | |||
xxviii wi:g'Inti:||'Okto: | |||
xxix wi:g'Inti:||n'OwEm | |||
xxx t@-*i:g'Inta: | |||
xxxi t@-*i:g'Inta:||'u:nUs | |||
xxxii t@-*i:g'Inta:||d'UO | |||
xxxiii t@-*i:g'Inta:||t@-*,e:s | |||
xxxiv t@-*i:g'Inta:||kw'at:UOR | |||
xxxv t@-*i:g'Inta:||kw'i:NkwE | |||
xxxvi t@-*i:g'Inta:||s,Eks | |||
xxxvii t@-*i:g'Inta:||s'EptEm | |||
xxxviii t@-*i:g'Inta:||'Okto: | |||
xxxix t@-*i:g'Inta:||n'OwEm | |||
xl kwad@-*a:g'Inta: | |||
xli kwad@-*a:g'Inta:||'u:nUs | |||
xlii kwad@-*a:g'Inta:||d'UO | |||
xliii kwad@-*a:g'Inta:||t@-*,e:s | |||
xliv kwad@-*a:g'Inta:||kw'at:UOR | |||
xlv kwad@-*a:g'Inta:||kw'i:NkwE | |||
xlvi kwad@-*a:g'Inta:||s,Eks | |||
xlvii kwad@-*a:g'Inta:||s'EptEm | |||
xlviii kwad@-*a:g'Inta:||'Okto: | |||
xlix kwad@-*a:g'Inta:||n'OwEm | |||
l kwi:Nkwa:g'Inta: | |||
li kwi:Nkwa:g'Inta:||'u:nUs $capital | |||
lii kwi:Nkwa:g'Inta:||d'UO | |||
liii kwi:Nkwa:g'Inta:||t@-*,e:s | |||
liv kwi:Nkwa:g'Inta:||kw'at:UOR | |||
lv kwi:Nkwa:g'Inta:||kw'i:NkwE | |||
lvi kwi:Nkwa:g'Inta:||s,Eks | |||
lvii kwi:Nkwa:g'Inta:||s'EptEm | |||
lviii kwi:Nkwa:g'Inta:||'Okto: | |||
lix kwi:Nkwa:g'Inta:||n'OwEm | |||
lx sEksa:g'Inta: | |||
lxi sEksa:g'Inta:||'u:nUs | |||
lxii sEksa:g'Inta:||d'UO | |||
lxiii sEksa:g'Inta:||t@-*,e:s | |||
lxiv sEksa:g'Inta:||kw'at:UOR | |||
lxv sEksa:g'Inta:||kw'i:NkwE | |||
lxvi sEksa:g'Inta:||s,Eks | |||
lxvii sEksa:g'Inta:||s'EptEm | |||
lxviii sEksa:g'Inta:||'Okto: | |||
lxix sEksa:g'Inta:||n'OwEm | |||
lxx sEptUa:g'Inta: $capital | |||
lxxi sEptUa:g'Inta:||'u:nUs | |||
lxxii sEptUa:g'Inta:||d'UO | |||
lxxiii sEptUa:g'Inta:||t@-*,e:s | |||
lxxiv sEptUa:g'Inta:||kw'at:UOR | |||
lxxv sEptUa:g'Inta:||kw'i:NkwE | |||
lxxvi sEptUa:g'Inta:||s,Eks | |||
lxxvii sEptUa:g'Inta:||s'EptEm | |||
lxxviii sEptUa:g'Inta:||'Okto: | |||
lxxix sEptUa:g'Inta:||n'OwEm | |||
lxxx Okto:g'Inta: | |||
lxxxi Okto:g'Inta:||'u:nUs | |||
lxxxii Okto:g'Inta:||d'UO | |||
lxxxiii Okto:g'Inta:||t@-*,e:s | |||
lxxxiv Okto:g'Inta:||kw'at:UOR | |||
lxxxv Okto:g'Inta:||kw'i:NkwE | |||
lxxxvi Okto:g'Inta:||s,Eks | |||
lxxxvii Okto:g'Inta:||s'EptEm | |||
lxxxviii Okto:g'Inta:||'Okto: | |||
lxxxix Okto:g'Inta:||n'OwEm | |||
xc no:na:g'Inta: | |||
xci no:na:g'Inta:||'u:nUs | |||
xcii no:na:g'Inta:||d'UO | |||
xciii no:na:g'Inta:||t@-*,e:s | |||
xciv no:na:g'Inta:||kw'at:UOR | |||
xcv no:na:g'Inta:||kw'i:NkwE | |||
xcvi no:na:g'Inta:||s,Eks | |||
xcvii no:na:g'Inta:||s'EptEm | |||
xcviii no:na:g'Inta:||'Okto: | |||
xcix no:na:g'Inta:||n'OwEm | |||
c k'EntUm | |||
// This list could be expanded further, however programming | |||
// the pronunciation would be more efficient. | |||
_0 n'Ulla | |||
_1 'u:nUs | |||
_2 d'UO | |||
_3 t@-*,e:s | |||
_4 kw'at:UOR | |||
_5 kw'i:NkwE | |||
_6 s,Eks | |||
_7 s'EptEm | |||
_8 'Okto: | |||
_9 n'OwEm | |||
_10 d'EkEm | |||
_11 'u:ndEkIm | |||
_12 dU'OdEkIm | |||
_13 t@-*,e:d'EkIm | |||
_14 kwat:w'ORdEkIm | |||
_15 kw,i:nd'EkIm | |||
_16 s'EdEkIm | |||
_17 sEpt'EndEkIm | |||
_18 dUOdEwIg'IntI | |||
_19 u:ndEwIg'IntI | |||
_2X wi:g'Inti: | |||
_3X t@-*i:g'Inta: | |||
_4X kwad@-*a:g'Inta: | |||
_5X kwi:Nkwa:g'Inta: | |||
_6X sEksa:g'Inta: | |||
_7X sEptUa:g'Inta: | |||
_8X Okto:g'Inta: | |||
_9X no:na:g'Inta: | |||
_0C k'EntUm | |||
_0M1 m'IllE |
@@ -28,6 +28,11 @@ _õ ,otS'iU | |||
_ú ,u&g'udU | |||
_ü ,utR'em& | |||
i i // speak i v x as letters, not Roman numbers | |||
v ve | |||
x Sis# | |||
_cap maI'uskulU | |||
_?A l'etR& | |||
_?? s'imbolU | |||
@@ -80,23 +85,23 @@ _" 'abRi;'asp&||d'upl&s# | |||
// numeric | |||
//******** | |||
?1_0 z'Eru | |||
?2_0 z'E*U | |||
?1_1 'um | |||
?2_1 'uN | |||
_2 d'oIs# | |||
?1 _0 z'Eru | |||
?2 _0 z'E*U | |||
?1 _1 'um | |||
?2 _1 'uN | |||
_2 d'oIs# | |||
?1 _3 tr'es# | |||
?2 _3 tR'es# | |||
?1 _4 kw'atru | |||
?2 _4 kw'atRu | |||
_5 s'iNku | |||
_6 s'eIs# | |||
?1_7 s'Ety | |||
?2_7 s'EtSi | |||
_8 'oItu | |||
?1_9 n'Ovy | |||
?2_9 n'Ovi | |||
10 d'Es# | |||
_5 s'iNku | |||
_6 s'eIs# | |||
?1 _7 s'Ety | |||
?2 _7 s'EtSi | |||
_8 'oItu | |||
?1 _9 n'Ovy | |||
?2 _9 n'Ovi | |||
_10 d'Es# | |||
?1_11 'oNzy | |||
?2_11 'oNzi | |||
@@ -200,20 +205,15 @@ ue $abbrev | |||
unts $abbrev | |||
usb $abbrev | |||
// roman numerals | |||
?1 ii d'oIs# $abbrev | |||
?1 iii tr'es# $abbrev | |||
?1 iv kw'atru $abbrev | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
prof pr'Of $dot | |||
sr $dot | |||
?1 sra ,Es;'Errj'a $dot | |||
?2 sra $dot | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
prof pr'Of $dot | |||
sr $dot | |||
?1 sra ,Es;'Errj'a $dot | |||
?2 sra $dot | |||
// articles | |||
o $u+ |
@@ -603,7 +603,6 @@ | |||
únh ''u~n^ | |||
.group v | |||
_) v (_ ve | |||
v v | |||
v (v | |||
@@ -616,7 +615,6 @@ | |||
.group x | |||
_) x (_ Sis# | |||
x (A S | |||
A) x (A ks | |||
_e) x (A z |
@@ -1,8 +1,10 @@ | |||
// translation rules for Romanian | |||
// This file is UTF-8 encoded | |||
.group a | |||
a a | |||
ai aI | |||
@@ -11,52 +13,58 @@ | |||
au (_ 'aU | |||
a (AAA a | |||
&) a (_S1q a | |||
gi) a (_S1q 'a | |||
V@) a (_ 'a | |||
V@) a (N_ 'a | |||
ăi) a (_ 'a | |||
@) abil (_ 'abil | |||
_) anti (@P4 anti | |||
@) ale (_ 'ale | |||
@ion) a (_ 'a | |||
.group ă | |||
ă @ | |||
ăi @I | |||
ăi (_ @I | |||
ău @U // ?? only at end of word ?? | |||
ău (_ @U | |||
ăi (m_ @'i | |||
ăi (t_ @'i | |||
ăi (ţi_ @'i | |||
ăi (te @'i | |||
ăi (n_ @'i | |||
ăi (na_ @'i | |||
ăi (ni_ @'i | |||
ăi (ne_ @'i | |||
ău (_ '@U | |||
@) ăte (_S3t @te | |||
@) ătă (_S3t @t@ | |||
@) ătul (_S4t @tul | |||
@) ătele (_S5t @tele | |||
@) ătului (_S6t @tuluI | |||
@) ătelor (_S6t @telor | |||
&) ă (_S1 @ | |||
&ec) ă (_ @ | |||
@ăC) ă (_ @ | |||
@er) ă (_ @ | |||
@iţ) ă (_ @ | |||
@) ă (Că_ =@ | |||
ări (A_ @*'i | |||
ării (_ @*'iI | |||
ări (AA_ @*'i | |||
@) ăt (_S2t @t | |||
@) ătă (_S3t @t@ | |||
@) ătul (_S4t @tul | |||
@) ătele (_S5t @tele | |||
@) ătului (_S6t @tuluI | |||
@) ătelor (_S6t @telor | |||
@) ăie (_ =@Ie | |||
.group â | |||
â y | |||
âi yI | |||
âu yU | |||
@) âie (_ =yIe | |||
.group b | |||
b b | |||
@) b (i_ b; | |||
bb b | |||
@) b (i_ b; | |||
@) b (il_ =b | |||
@) b (ila_ =b | |||
@) b (ili_ =b | |||
@) b (ilii_ =b | |||
@) b (ilului_ =b | |||
@) b (ililor_ =b | |||
@) b (ilile_ =b | |||
mo) bil (_ b'il | |||
@@ -70,55 +78,70 @@ | |||
@@) col (_ =kol | |||
@@) coli (_S1t =I^ | |||
@@) cole (_S1t e | |||
@) cni (_ kn'i | |||
@) cnea (_ kne'a | |||
.group d | |||
d d | |||
dd d | |||
@) d (i_ d; | |||
.group e | |||
e e | |||
ei eI | |||
// eu eU // only at end of word ?? | |||
// eu e[u // ?? | |||
_) ei eI | |||
ei (_ eI | |||
// eu eU // only at end of word ?? | |||
// eu e[u // ?? | |||
eu (_ 'eU | |||
ea ea | |||
&) ea (_S2q ea | |||
&) eSi eaj | |||
eau eaw | |||
eo eo | |||
eoa eO'a | |||
e (AAA e | |||
@) eş (_ =eS | |||
@) eşul (_ =eSul | |||
@) eşi (_ =eSI^ | |||
@) eşului (_ =eSuluI | |||
@) eşilor (_ =eSilor | |||
@) ec (a_ =ek | |||
@) ec (ă_ =ek | |||
@) ec (ii_ =ek | |||
@) ec (ile_ =ek | |||
@) ec (ilor_ =ek | |||
@At) ec (i@_ etS | |||
@At) ec (A_ ek | |||
@At) ec (ii_ eTtS | |||
// &) es (_S1q e | |||
&C) e (re_ %e | |||
_ac) ee (a eI | |||
r) ei (er_ 'eI | |||
@) e (re_ =e | |||
@) e (ri_ =e | |||
@) e (rea_ =e | |||
@) e (rii_ =e | |||
i) e (re_ e | |||
i) e (ri_ e | |||
i) e (rii_ e | |||
i) e (rea_ e | |||
_ac) ee (a eI | |||
r) ei (er_ 'eI | |||
@) eş (_ =eS | |||
@) eşul (_ =eSul | |||
@) eşi (_ =eSI^ | |||
@) eşului (_ =eSuluI | |||
@) eşilor (_ =eSilor | |||
// &) es (_S1q e | |||
@) e (ra_ =e | |||
@) e (ră_ =e | |||
@f) e (ra_ e | |||
@f) e (ra_ e | |||
i) e (ră_ e | |||
i) e (ra_ e | |||
eoa eO'a | |||
.group f | |||
f f | |||
ff f | |||
@) f (i_ f; | |||
@@ -138,22 +161,48 @@ | |||
.group i | |||
i i | |||
i (A j | |||
@) i (e_ j | |||
&C) i (_N$1q i/ | |||
&) i (_N$1q i | |||
&) i (-N$1q i // don't reduce to [I^] if a hyphen follows | |||
ţ) i (-Că i | |||
ţ) i (-Ci i | |||
ţ) i (-l i | |||
ţ) i (-ne i | |||
&') i (_ i | |||
ţi-) i (_ _ // combined with previous word as [iI] | |||
Cr) i (_ i | |||
V&) i (_ 'i // verb | |||
V&) i (N_ 'i // verb | |||
ăC) ia (_ 'ia | |||
âC) ia (_ 'ia | |||
ăC) ie (_ 'ie | |||
âC) ie (_ 'ie | |||
@) ie (_S1q ie | |||
g) i (ne_ =i | |||
g) i (nea_ =i | |||
c) i (uC | |||
cţ) ie (_ =ie | |||
cţ) iei (_ =ieI | |||
cţ) ia (_ =ja | |||
graf) ie (_ 'ie | |||
graf) ia (_ 'ia | |||
graf) iei (_ 'ieI | |||
graf) ii (_ 'iI | |||
scop) ie (_ 'ie | |||
scop) ia (_ 'ia | |||
scop) iei (_ ieI | |||
scop) ii (_ 'iI | |||
er) ia (_ 'ia | |||
er) iei (_ 'ieI | |||
on) ie (_ 'ie | |||
on) ia (_ 'ia | |||
on) iei (_ 'ieI | |||
uş) ie (_ 'ie | |||
uş) ia (_ 'ia | |||
uş) iei (_ 'ieI | |||
// @) ie (_S1q ie | |||
iei (_ 'ieI | |||
ii iI | |||
@@ -163,15 +212,26 @@ | |||
iu ju | |||
&) ic (_ =ik | |||
&) ica (_ =ika | |||
&) ice (_ =itSe | |||
&) icile (_ =itSile | |||
&) icile (_ =itSile | |||
&) icilor (_ =itSilor | |||
@) icii (_ =itSiI | |||
scr) i (e 'i | |||
&) ing (_ %iNg // foreign words | |||
i (t_ 'i | |||
ioa iO'a | |||
ioa iO'a | |||
@) işte (_ =iSte | |||
@) iştea (_ =iStea | |||
@) i (ţă_++++++++ =i | |||
@) i (ţe_ =i | |||
@) i (ţei_ =i | |||
@) i (ţelor_ =i | |||
-) i (_ j | |||
@) i (ţele_ =i | |||
.group î | |||
@@ -190,6 +250,7 @@ | |||
.group l | |||
l l | |||
ll l | |||
@) l (i_ l; | |||
_) l (_ le | |||
-) l (_ l // -l | |||
@@ -205,6 +266,7 @@ | |||
.group m | |||
_) m (_ me | |||
m m | |||
mm m | |||
@) m (i_ m; | |||
_) m (-a m | |||
@@ -220,69 +282,75 @@ | |||
@) n (tic_ =n | |||
@) n (ic_ =n | |||
_) n (-a n | |||
-) n (_ n | |||
-) n (_ n | |||
@itudi) ne (_S2t ne | |||
@itudi) nea (_S3t nea | |||
@itudi) nii (_S3t niI | |||
@itudi) ni (_S2t ni | |||
@itudi) nile (_S4t nile | |||
@itudi) nilor (_S5t nilor | |||
.group o | |||
o o | |||
oa Oa | |||
oai Oaj | |||
oi oI | |||
_) oi oI | |||
oi (_ 'oI | |||
ou oU | |||
ou (_ 'oU | |||
o (AAA o | |||
@) oi (t_ o'i | |||
@) oi (tă_ o'i | |||
@) oi (ţi_ o'i | |||
@) oi (te_ o'i | |||
.group p | |||
p p | |||
pp p | |||
@) p (i_ p; | |||
.group q | |||
q k | |||
qu kw | |||
.group r | |||
r r | |||
A) r (A * | |||
C) r (A @-* | |||
rr *r | |||
A) r (i_ *; | |||
_) re (@P2v re | |||
_) re (gul re | |||
@u) ri (_NS2t rI^ | |||
r r | |||
rr r | |||
A) r (A * | |||
C) r (A @-* | |||
rr *r | |||
A) r (i_ *; | |||
_) re (@P2T re | |||
_) re (gul re | |||
@u) ri (_NS2t rI^ | |||
C) ri (_ @-*i | |||
@u) rii (_S3t riI | |||
@u) rile (_S4t rile | |||
@) rilor (_S5t rilor | |||
@u) rilor (_S5t rilor | |||
C) ri (_ @-*i | |||
@) răm (_S1t m | |||
@) răţi (_S4t *@tsI^ | |||
@u) re (_S2t *e | |||
.group s | |||
_) s (_ se | |||
_) s (-a s | |||
s s | |||
@) s (i_ s; | |||
-) s (_ s | |||
sh S | |||
ss s | |||
&) sprezece (_S8t sp@-*ez,etSe | |||
@) sem (_S1t m | |||
@) seră (_S2t *@ | |||
@) serăm (_S3t *@m | |||
@) serăm (_S3t *@m | |||
@) serăţi (_S4t *@tsI^ | |||
@) seşi (_S2t SI^ | |||
@) sni (_ sn'i | |||
@) sni (_ sn'i | |||
.group ş | |||
@@ -298,6 +366,10 @@ | |||
tt (_ t | |||
@) t (i_ t; | |||
ts ts | |||
tz ts | |||
tt t | |||
.group ţ | |||
ţ ts | |||
@@ -314,19 +386,34 @@ | |||
.group u | |||
u u | |||
u (A w | |||
ui uI | |||
_) ui uI | |||
ui (_ uI | |||
ui (e wi | |||
V&) ui (_ u'i | |||
ui (m_ u'i | |||
ui (t_ u'i | |||
ui (ţi_ u'i | |||
ui (se_ u'i | |||
&) ul (_S2t ul | |||
@ic) ul (_S2 ul | |||
@ic) uri (_S3 urI^ | |||
V&) ui (_N u'i | |||
&) ul (_S2t ul | |||
@ic) ul (_S2t ul | |||
@ic) ule (_S3t ule | |||
@ic) ului (_S4t uluI | |||
@ic) uri (_S3 urI^ | |||
@ic) urile (_S5 urile | |||
&) ului (_S4t uluI | |||
@) us (_S2t us | |||
@) usul (_S4t usul | |||
@) usuri (_S5t usuri | |||
@) usului (_S6t usuluI | |||
@) usurile (_SS´7t usurile | |||
@) usurilor (_S8t usurilor | |||
@ăC) u (N_ 'u | |||
@) um (_S2t um | |||
@) umul (_S4t umul | |||
@) umului (_S6t umuluI | |||
@) umuri (_S5t umuri | |||
@) umurile (_S7t umurile | |||
@) umurilor (_S8t umurilor | |||
c) um (_ um | |||
@) uie (_ =wie | |||
.group v | |||
@@ -342,10 +429,17 @@ | |||
x ks | |||
A) x (A gz | |||
ma) x (i ks | |||
e) x (e ks | |||
cone) x (iu ks | |||
i) x (e ks | |||
o) x (e ks // boxele | |||
u) x (a ks | |||
a) x (a ks | |||
a) x (ă ks | |||
a) x (e ks | |||
i) x (a ks | |||
o) x (a ks | |||
A) x (â ks | |||
@) x (ibil ks | |||
o) x (i ks // oxigen | |||
a) x (ia ks // axial | |||
ale) x ks | |||
@@ -359,15 +453,22 @@ | |||
.group z | |||
z z | |||
zz z | |||
@) z (i_ z; | |||
.group | |||
ö Y | |||
% protSent | |||
D_) % la_sut@ | |||
% p@-*otSent | |||
$ dolar | |||
+ plus | |||
& ampersand | |||
© k'apiraIt | |||
@ a*'ond | |||
/ sleS | |||
€ 'eU*o | |||
° g@-*ade | |||
, (D v'irgul@ | |||
@@ -384,3 +485,5 @@ | |||
*) * (* | |||
** | |||
**) * (_ _:: | |||
@@ -6,24 +6,26 @@ | |||
0 r/ NULL 0 r | |||
0 r- NULL 0 r | |||
0 g- NULL 0 NULL | |||
0 w/ NULL 0 w | |||
0 w NULL 0 u | |||
0 w/ NULL 0 u | |||
0 * NULL 0 r | |||
0 ; NULL 0 NULL | |||
0 a e 15 a _ | |||
0 a NULL 0 a | |||
0 @- NULL 0 NULL | |||
0 j/ NULL 0 j | |||
0 I^ _ 0 I | |||
0 I^ NULL 20 I _ | |||
0 @U NULL 60 @ w | |||
0 aU NULL 60 a w | |||
0 eU NULL 60 e w | |||
0 eU NULL 80 e u | |||
0 iU NULL 60 i w | |||
0 yU NULL 60 l w | |||
0 yU NULL 60 1 w | |||
0 oU NULL 60 o w | |||
0 @I NULL 60 @ j | |||
0 iI NULL 60 i j | |||
0 aI NULL 60 a j | |||
0 eI NULL 60 e j | |||
0 eI NULL 100 e i | |||
0 oI NULL 60 o j | |||
0 uI NULL 60 u j | |||
0 yI NULL 60 1 j |
@@ -154,7 +154,7 @@ phoneme 3: | |||
vowel starttype (@) endtype (@) | |||
length 230 | |||
formants vwl_en_us/3_us | |||
reduceto @ 0 | |||
// reduceto @ 0 | |||
linkout r- | |||
endphoneme | |||
@@ -51,13 +51,18 @@ int Translator::TranslateLetter(char *word, char *phonemes, int control) | |||
char capital[20]; | |||
char ph_buf[30]; | |||
char ph_buf2[50]; | |||
static char single_letter[8] = {0}; | |||
static char single_letter[10] = {0,0}; | |||
ph_buf[0] = 0; | |||
capital[0] = 0; | |||
n_bytes = utf8_in(&letter,word,0); | |||
if((letter & 0xfff00) == 0x0e000) | |||
{ | |||
letter &= 0xff; // uncode private usage area | |||
} | |||
if(control > 2) | |||
{ | |||
// include CAPITAL information | |||
@@ -68,8 +73,17 @@ int Translator::TranslateLetter(char *word, char *phonemes, int control) | |||
} | |||
letter = towlower(letter); | |||
if((letter <= 32) || iswspace(letter)) | |||
{ | |||
// lookup space as _&32 etc. | |||
sprintf(&single_letter[1],"_#%d ",letter); | |||
Lookup(&single_letter[1],ph_buf); | |||
strcat(phonemes,ph_buf); | |||
return(n_bytes); | |||
} | |||
len = utf8_out(letter,&single_letter[2]); | |||
single_letter[2+len] = ' '; | |||
single_letter[len+2] = ' '; | |||
next = RULE_SPELLING; | |||
if(word[n_bytes] == ' ') | |||
@@ -186,6 +200,67 @@ void Translator::SetSpellingStress(char *phonemes, int control) | |||
int Translator::TranslateRoman(char *word, char *ph_out) | |||
{//===================================================== | |||
int c; | |||
char *p; | |||
int acc; | |||
int prev; | |||
int value; | |||
int subtract; | |||
unsigned int flags; | |||
char number_chars[N_WORD_BYTES]; | |||
static char *roman_numbers = "ixcmvld"; | |||
static int roman_values[] = {1,10,100,1000,5,50,500}; | |||
if((langopts.numbers & NUM_ROMAN) == 0) | |||
return(0); | |||
acc = 0; | |||
prev = 0; | |||
subtract = 0x7fff; | |||
while((c = *word++) != ' ') | |||
{ | |||
if((p = strchr(roman_numbers,c)) == NULL) | |||
return(0); | |||
value = roman_values[p - roman_numbers]; | |||
if((prev==5) || (prev==50) || (prev==500)) | |||
{ | |||
if(value >= prev) | |||
return(0); | |||
} | |||
if((prev != 0) && (prev < value)) | |||
{ | |||
if(((acc % 10) != 0) || ((prev*10) < value)) | |||
return(0); | |||
subtract = prev; | |||
value -= subtract; | |||
} | |||
else | |||
if(value >= subtract) | |||
return(0); | |||
else | |||
acc += prev; | |||
prev = value; | |||
} | |||
acc += prev; | |||
if(acc < 2) | |||
return(0); | |||
if(acc > langopts.max_roman) | |||
return(0); | |||
Lookup("_roman",ph_out); // precede by "roman" if _rom is defined in *_list | |||
p = &ph_out[strlen(ph_out)]; | |||
sprintf(number_chars," %d ",acc); | |||
TranslateNumber(&number_chars[1],p,&flags,0); | |||
return(1); | |||
} // end of TranslateRoman | |||
int Translator::LookupNum2(int value, int control, char *ph_out) | |||
@@ -589,7 +664,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags, | |||
{ | |||
if((thousandplex > 0) && (value < 1000)) | |||
{ | |||
if(langopts.numbers & 0x40000) | |||
if(langopts.numbers2 & 0x100) | |||
{ | |||
if((thousandplex == 1) && (value >= 100)) | |||
{ |
@@ -1546,6 +1546,10 @@ f_input = f_in; // for GetC etc | |||
c1 = j; | |||
} | |||
} | |||
if((sayas_mode == 0x14) && (c1 <= 0x20)) | |||
{ | |||
c1 += 0xe000; // move into unicode private usage area | |||
} | |||
} | |||
else | |||
if(c1 == '<') |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.27.05 05.Jul.07"; | |||
const char *version_string = "1.27.06 07.Jul.07"; | |||
const int version_phdata = 0x012701; | |||
int option_device_number = -1; |
@@ -44,8 +44,7 @@ Translator_English::Translator_English() : Translator() | |||
langopts.stress_rule = 0; | |||
langopts.word_gap = 0; | |||
langopts.numbers = 0x41; | |||
langopts.numbers = 0x41 + NUM_ROMAN; | |||
} | |||
@@ -122,7 +122,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_PREFIXES] = 1; | |||
memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); | |||
tr->langopts.numbers = 0x11c19; | |||
tr->langopts.numbers = 0x11c19 + NUM_ROMAN; | |||
SetLetterVowel(tr,'y'); | |||
} | |||
break; | |||
@@ -213,7 +213,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.unstressed_wd2 = 2; | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
tr->langopts.numbers = 0x529; | |||
tr->langopts.numbers = 0x529 + NUM_ROMAN; | |||
} | |||
break; | |||
@@ -271,7 +271,8 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_rule = 6; // stress on last heaviest syllable | |||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||
tr->langopts.numbers = 0x811 + 0x40000; | |||
tr->langopts.numbers = 0x811; | |||
tr->langopts.numbers2 = 0x100; | |||
tr->letter_bits_offset = OFFSET_DEVANAGARI; | |||
tr->langopts.replace_chars = replace_chars_hi; | |||
tr->langopts.replacement_chars = replacement_chars_hi; | |||
@@ -302,7 +303,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.max_initial_consonants = 5; | |||
tr->langopts.spelling_stress = 1; | |||
tr->langopts.numbers = 0x1c0d + 0x4000; | |||
tr->langopts.numbers = 0x1c0d + 0x4000 + NUM_ROMAN; | |||
tr->langopts.numbers2 = 0x4a; // variant numbers before thousands,milliards | |||
tr->langopts.replace_chars = replace_cyrillic; | |||
tr->langopts.replacement_chars = replace_cyrillic_latin; | |||
@@ -336,7 +337,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word | |||
tr->langopts.long_stop = 130; | |||
tr->langopts.numbers = 0x1809; | |||
tr->langopts.numbers = 0x1809 + NUM_ROMAN; | |||
SetLetterVowel(tr,'y'); | |||
tr->langopts.spelling_stress = 1; | |||
//SetLengthMods(tr,3); // all equal | |||
@@ -384,7 +385,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_IT_DOUBLING] = 2; // double the first consonant if the previous word ends in a stressed vowel | |||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
tr->langopts.param[LOPT_REDUCE] = 1; // reduce vowels even if phonemes are specified in it_list | |||
tr->langopts.numbers = 0x2709 + 0x800; | |||
tr->langopts.numbers = 0x2709 + 0x800 + NUM_ROMAN; | |||
} | |||
break; | |||
@@ -397,6 +398,8 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.unstressed_wd1 = 0; | |||
tr->langopts.unstressed_wd2 = 2; | |||
tr->langopts.param[LOPT_DIERESES] = 1; | |||
tr->langopts.numbers = 0x1 + NUM_ROMAN; | |||
tr->langopts.max_roman = 5000; | |||
} | |||
break; | |||
@@ -483,7 +486,7 @@ Translator *SelectTranslator(const char *name) | |||
// tr->langopts.vowel_pause = 1; | |||
tr->langopts.stress_rule = 3; // stress on final syllable | |||
tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000; | |||
tr->langopts.numbers = 0xa69 + 0x2000; | |||
tr->langopts.numbers = 0xa69 + 0x2000 + NUM_ROMAN; | |||
tr->punct_to_tone[0][3] = 2; // use exclamation intonation | |||
SetLetterVowel(tr,'y'); | |||
} | |||
@@ -505,7 +508,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
tr->langopts.replace_chars = replace_chars_ro; | |||
tr->langopts.replacement_chars = replacement_chars_ro; | |||
tr->langopts.numbers = 0x1829+0x6000; | |||
tr->langopts.numbers = 0x1829+0x6000 + NUM_ROMAN; | |||
tr->langopts.numbers2 = 0x1e; // variant numbers before all thousandplex | |||
} | |||
break; | |||
@@ -576,7 +579,8 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_rule = 2; | |||
tr->langopts.stress_flags = 0x6 | 0x10; | |||
tr->langopts.numbers = 0x408e1; | |||
tr->langopts.numbers = 0x8e1; | |||
tr->langopts.numbers2 = 0x100; | |||
} | |||
break; | |||
@@ -942,7 +946,7 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator() | |||
langopts.param[LOPT_PREFIXES] = 1; | |||
SetLetterVowel(this,'y'); // add 'y' to vowels | |||
langopts.numbers = 0x0d1; | |||
langopts.numbers = 0x0d1 + NUM_ROMAN; | |||
memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths)); | |||
} | |||
@@ -438,6 +438,7 @@ Translator::Translator() | |||
langopts.length_mods0 = length_mods_en0; | |||
langopts.long_stop = 100; | |||
langopts.max_roman = 49; | |||
langopts.thousands_sep = ','; | |||
langopts.decimal_sep = '.'; | |||
@@ -667,7 +668,13 @@ if((wmark > 0) && (wmark < 8)) | |||
found = TranslateNumber(word,phonemes,&dictionary_flags,wflags); | |||
} | |||
if((wflags & FLAG_ALL_UPPER) && (clause_upper_count <= clause_lower_count) && | |||
if(!found & ((word_flags & FLAG_UPPERS) != FLAG_FIRST_UPPER)) | |||
{ | |||
// either all upper or all lower case | |||
found = TranslateRoman(word,phonemes); | |||
} | |||
if(!found && (wflags & FLAG_ALL_UPPER) && (clause_upper_count <= clause_lower_count) && | |||
!(dictionary_flags & (FLAG_ABBREV | FLAG_SKIPWORDS)) && (word_length>1) && (word_length<4) && iswalpha(first_char)) | |||
{ | |||
// An upper case word in a lower case clause. This could be an abbreviation. | |||
@@ -1635,6 +1642,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
int phoneme_mode = 0; | |||
int dict_flags; // returned from dictionary lookup | |||
int word_flags; // set here | |||
int next_word_flags; | |||
int embedded_count = 0; | |||
int letter_count = 0; | |||
char *word; | |||
@@ -1715,6 +1723,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
word_count = 0; | |||
single_quoted = 0; | |||
word_flags = 0; | |||
next_word_flags = 0; | |||
expect_verb=0; | |||
expect_past=0; | |||
expect_verb_s=0; | |||
@@ -1827,7 +1836,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
} | |||
} | |||
else | |||
if((option_sayas2 & 0xf0) != 1) | |||
if((option_sayas2 & 0xf0) != 0x10) | |||
{ | |||
if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out)) | |||
{ | |||
@@ -1937,6 +1946,7 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) | |||
c = ' '; // change from upper to lower case, start new word at the last uppercase | |||
prev_in2 = c; | |||
source_index = prev_source_index; // unget | |||
next_word_flags |= FLAG_NOSPACE; | |||
} | |||
//#endif | |||
} | |||
@@ -2116,7 +2126,8 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) | |||
for(k=j; charix[k]!=0; k++); | |||
words[word_count].length = k-j; | |||
word_flags = 0; | |||
word_flags = next_word_flags; | |||
next_word_flags = 0; | |||
pre_pause = 0; | |||
word_mark = 0; | |||
all_upper_case = FLAG_ALL_UPPER; |
@@ -69,12 +69,14 @@ | |||
// wordflags, flags in source word | |||
#define FLAG_ALL_UPPER 0x1 /* no lower case letters in the word */ | |||
#define FLAG_FIRST_UPPER 0x2 /* first letter is upper case */ | |||
#define FLAG_UPPERS 0x3 // FLAG_ALL_UPPER | FLAG_FIRST_UPPER | |||
#define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */ | |||
#define FLAG_PHONEMES 0x8 /* word is phonemes */ | |||
#define FLAG_LAST_WORD 0x10 /* last word in clause */ | |||
#define FLAG_STRESSED_WORD 0x20 /* this word has explicit stress */ | |||
#define FLAG_EMBEDDED 0x40 /* word is preceded by embedded commands */ | |||
#define FLAG_HYPHEN 0x80 | |||
#define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space | |||
#define FLAG_DONT_SWITCH_TRANSLATOR 0x1000 | |||
#define FLAG_SUFFIX_REMOVED 0x2000 | |||
#define FLAG_HYPHEN_AFTER 0x4000 | |||
@@ -275,6 +277,7 @@ typedef struct { | |||
unsigned char *length_mods; | |||
unsigned char *length_mods0; | |||
#define NUM_ROMAN 0x20000 | |||
// bits0-1=which numbers routine to use. | |||
// bit2= thousands separator must be space | |||
// bit3= , decimal separator, not . | |||
@@ -289,15 +292,16 @@ typedef struct { | |||
// bit12=allow space as thousands separator (in addition to langopts.thousands_sep) | |||
// bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro) | |||
// bit16=dot after number indicates ordinal | |||
// bit18=special word for 100,000s LANG=sw | |||
// bit17=recognize roman numbers | |||
int numbers; | |||
// bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
// bit6=(LANG=pl) two forms of plural, M or MA | |||
// bit7=(LANG-ru) use MB for 1 thousand, million, etc | |||
// bit8=(LANG=sw) special word for 100,000s | |||
int numbers2; | |||
int max_roman; | |||
int thousands_sep; | |||
int decimal_sep; | |||
int intonation; // 1=tone language | |||
@@ -388,6 +392,7 @@ private: | |||
int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands); | |||
int LookupThousands(int value, int thousandplex, char *ph_out); | |||
int TranslateNumber_1(char *word1, char *ph_out, unsigned int *flags, int wflags); | |||
int TranslateRoman(char *word, char *ph_out); | |||
void InitGroups(void); | |||
void AppendPhonemes(char *string, int size, const char *ph); |