diff --git a/dictsource/af_list b/dictsource/af_list index 9ba45a08..09bcaf4a 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -196,26 +196,29 @@ _dpt 'pWnt _roman rum'eIns@ // ordinal numbers -_ord d@ // default suffix -_ord20 st@ // for 20,30,etc -_1o _'e@rst@ -_2o tw'e@d@ -_3o d'&:rd@ -_7o s'e@v@nd@ -_8o _'ax2st@ -_9o ne@x2@nd@ +_0de d@ +_0ste st@ +_1o _'e@r +_2o tw'e@ +_3o d'&:r +_7o s'e@v@n +_8o _'ax2 +_9o ne@x2@n _0Co h'On@rtst@ - // Place names +acapulco akap'ulk@U afganistan afg'anistan alaska al'aska +albanië alb'A:ne@:@- algerië alx2'e@re@:@- +amanzimtoti $4 antwerpen antv&rp@n babilon babilOn bangladesj baNglad'ES +barkly _^_EN bellevue b&lvju: bermuda $2 bethlehem bEt_liEm @@ -235,6 +238,7 @@ ceylon s@lOn chicago _^_EN china S'ina clanwilliam kl&:nw'ili@m +clifton _^_EN colenso kul'E:ns@U colesberg ko@lsb&rx2 constantia $2 @@ -247,12 +251,13 @@ ermelo &rm@lo@ franschhoek frA~nsh'uk gadara x2@dA:ra galilea x2al@l'i:a -gariep x2ar'ip germiston _^_EN getsémané x2Ets'e@mani +gonubie g@nu:bi goudini $2 gordonsbaai gO:rd@nsb'AI (graaff reinet) x2rA:f||r@n'Et +grahamstad x2rA:mstat griekeland x2rik@lant groblersdal x2rObl@rsd'al havana hav'ana @@ -260,6 +265,7 @@ hermon $1 hirosjima hiruS'ima israel IsraI:l italië it'A:li;@ +jeffreysbaai dZEfrisb'AI kalafong kalaf'ON kanada kanad%a kanaän kA:nA:an @@ -272,6 +278,9 @@ kongo kONgu knysna neIsna kuruman kuruman kwa kwa $u $only // KwaZulu, etc. +lady _^_EN // Lady Grey/Lady Smith +ladybrand leIdibr'ant +laingsburg leInsbWrx2 lesotho l@sutu limpopo l@mpo@po@ (los angeles) lOs_'andZ@li:z @@ -283,10 +292,10 @@ maputo map'u:tu mauritius mOr'iSjWs milaan $2 mesopotamië mEsuput'A:mi@ +mpumalanga mpu:mal'aNga montagu mOnt@ky moreletapark mOr@l,Etap'ark moorreesburg mur'e@sbWrx2 -mosambiek mo@samb'ik (thaba nchu) tab'A:||ntSu europa Y@r'o@pa nigel _^_EN @@ -314,6 +323,7 @@ tunisië $2 turkye $2 ulundi ul'undi upington apiNt@n +vanrhynsdorp fanr'eInsdOrp vesuvius v@su:viWs viëtnam vj'Etnam wallonië val'o@ni@ @@ -333,14 +343,20 @@ adam adam adriaan A:drijan adrie A:dri albertus alb'&rtWs +alfred _^_EN allah %alA: +amelia am'i:lija +annalet anal'Et André 'andreI annette an'Et antoinette antun'Et barbara bA:b@ra +basson $2 bea bi:ja +benade b@nA:di benjamin bEndZ@m@n bennett bEn@t +bertha b&rta bester b'Est@r beyers beI@rs blignault blIx2n@Ut @@ -350,7 +366,7 @@ bouwer b@U@r brian _^_EN bredenkamp bre@d@nkamp breytenbach breIt@nbax2 -brouwer bruw'&:r +bruwer bruw'&:r caesar siz@r carl kA:r@L casanova kasan'o@va @@ -375,6 +391,7 @@ cindy sIndi coetzee kuts'e@ cronjé krOnj'e@ cynthia _^_EN +dalene dal'e@n darwin _^_EN david _^_EN (da vinci) da||v'intSi @@ -390,16 +407,20 @@ donaldson _^_EN du $u (du pisanie) du||pis'A:ni (du plessis) du||pl@s'i +(du plooy) d@||ploI (du preez) d@||pr'e@ (du toit) d@||toI +duvenage dyv@nA:x2@ eksteen $1 eldorado &ldOr'A:d@U elisabeth il'isabEt elize il'i:z elmien $2 +elsabe &ls@bi elsabé &ls@bi emmarentia Emar'e~nSja erasmus $2 +ernest _^_EN eségiël is'e@x2i_@l estelle %ist&l etienne Eti@n @@ -418,15 +439,18 @@ george _^_EN georgina dZO:dZ'ina gerhard x2&rart gerhardus $2 +gertruida $2 gloria glO:ria grange x2rA:nsi gustav gustaf guy _^_EN +hamlet _^_EN harry _^_EN havenga hA:f@Nx2a haydn hAId@n helen _^_EN helena hil'e@na +helene hi:l'i:n helloïse hEluw'i:z henry _^_EN herklaas $1 @@ -436,10 +460,12 @@ ilse 'ilz@ ingrid iNgr@d isabel is@b&l iskariot isk'ariOt +jaco jaku jacques ZA:k james _^_EN jane _^_EN Jean ZA~n $capital +jesebel je@s@b&l jimmy _^_EN joan _^_EN joey dZ@Ui @@ -452,14 +478,17 @@ kelvin _^_EN kim _^_EN $capital krige krix2@ labuschagne labWsk'ax2ni +lafras $2 langenhoven laN@nho@f@n lasarus lA:s@r%Ws lategan lA:t@x2an le l@ $only leandra li'andra +leipoldt lAIpOlt leonardo liu:n'ardu +leonie li'o@ni levi le@fi - +liesbet lisbEt louis luI louise luw'i:z mackintosh _^_EN @@ -467,6 +496,8 @@ mbeki mbE:ki magdalena $3 malan mal'an malherbe mal'&rb@ +mantovani mantOv'A:ni +mara mA:ra marelie mar@li margaret _^_EN margaretha marx2ar'e@ta @@ -478,8 +509,11 @@ marlise marl'i:s martha marta martin m'A:rt@n mary _^_EN +mathilda mat'Ilda matteus mat'i:Ws +matthee mat'e@ matthéüs mat'i:Ws +maureen _^_EN mefistofeles mEfist'o@f@l@s melanie m@lA:ni meraai m@rAI @@ -491,6 +525,7 @@ michiel $2 mike _^_EN miriam mIri@m mohammed muh'am@t +morkel mOrk@l morné mOrn'eI mostert m'Ost@rt mouton mut'On @@ -516,10 +551,12 @@ rebekka r@bEka reinette r@nEt renette r@nEt renée r@neI +retha re@ta retief r@tif rhodes _^_EN robert _^_EN ronel run'&l +rossouw r@s@U rousseau r@s@U ruda ruda rupert rup@rt @@ -554,6 +591,7 @@ toerien $2 totius to@SiWs trudie trudi versfeld f&rsf< +veronica _^_EN victoria _^_EN viljoen $2 villiers vIli@rs @@ -574,8 +612,11 @@ schalkwyk skalkveIk schreiner SraIn@r tony t@Uni trichardt trix2A:rt +vera ve@ra +verwey f@rveI vivaldi viv'aldi viviers v@v@je@ +wilhelm v@lh&l@-m khumalo kum'A:lu zuma zu:ma @@ -589,6 +630,11 @@ citroên s@trun ferrari f@rA:ri martini mart'i:ni naspers nasp&rs +peugeot pW:Z@U +(pick n pay) p,ik||@n||p'eI +port pOrt $1 +rover _^_EN +sotho su:tu toyota $2 venda vEnda volvo vOlvu @@ -665,7 +711,7 @@ hoekom $pause hoeveel $pause wat $pause watter $pause - +ás as '!as // prepositions aan $u $strend2 @@ -717,9 +763,10 @@ dis $u // phrase with words spoken together -(nie waar nie) n,i||v,A:r||n'i (à la carte) a||la||k'art - +(carpe diem) karpE||di:Em +(nie waar nie) n,i||v,A:r||n'i +(sy aan sy) s,eI||an||s'eI // main word list @@ -735,6 +782,7 @@ agamemnon ax2am'EmnOn aggressie $2 agterstevoor $4 agterweë $3 +aha A:h'!A: algaande $2 alge alx2@ algehele alx2@h,e@l@ @@ -743,8 +791,10 @@ almiskie $3 alom al_'Om alreeds $2 alternatiewe $4 +amelee am@le@ amen A:mEn anale an'A:l@ +as't as@t $u asof asOf asook %as_o@k aspris $2 @@ -762,6 +812,7 @@ beswil bEsv@l besnedene b@sne@d@n@ bestes bEst@s beta be@ta $only +betlehemster bEtli:Emst&r bewe be@v@ bewend be@v@nt bewering b@ve@rIN @@ -779,6 +830,9 @@ capita kapita casino kas'i:n@U cedille s@dIl@ charisma kar'Isma +cliché kliS'eI: + +clichés kliS'eI:s crescendo kr@SEndu dadelik dA:d@lIk @@ -832,6 +886,7 @@ geldelike x2&ld@l@k@ genade $2 genesis x2e@n@s@s //gesamentlik x2@sA:m@ntl@k +gladiator x2ladi'A:tOr globale x2lo@b'A:l@ gooi x2OI gomorra x2@mOra @@ -840,6 +895,7 @@ gratis x2r'A:t@s grondys x2rO:nt_eIs hallo h'Il,@U +handtertjie hant&:rci hanou hA:n@U hardop hart?Op heeltemal he@lt@mal @@ -896,7 +952,9 @@ kulture $2 kunsmatige kWnsm'A:t@x2@ kwansuis $2 +lasagne las'anj@ libido l@bidu +lokaas lOk_A:s londense lOnd@ns@ lord _^_EN @@ -910,7 +968,9 @@ meegee me@x2e@ memorabilia mEmOrab'ilija memoriam mEm'o@riam mercedes $2 +meregebied me@r@x2@bit merlot m&rl'o@ +miaau mi'aU: midwinter mIdv@nt@r militêre mIl@t'&:r@ minister m@nIst@r @@ -997,6 +1057,7 @@ pandemonium pand@m'o@niWm parate par'A:t@ parke park@ parkie $1 +parte $1 patos pA:tOs patriotisme patri|ut'Ism@ penorent pEno@rEnt @@ -1056,6 +1117,7 @@ suburbia sWb'Wrbija tanga taNga tango taNx2u tenminste $2 +tequila t@ki:la terdeë $2 terug t@-rWx2 tesaam t@sA:m diff --git a/dictsource/af_rules b/dictsource/af_rules index 0fe6ebfd..f556b846 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -23,6 +23,7 @@ &b) a (_ %a // short final a: mamba and compounds/marimba/hamba &d) a (_ %a // short, unstressed a after d at end of word: soda/padda... and compounds i) a (_ %a // a short and unstressed in words ending in ia: laboratoria/millennia + &rm) a (_ %a // shorten a sound: Irma/karma/firma and compounds &r) a (_ %a // short final a in words ending in -ra: infra/mantra/sentra, etc. Cbr) a (_ A: // long a: blommetjies-/kantbra &dr) a (_ A: // exceptwrds ending in -dra: ingedra/oorgedra, etc. @@ -36,7 +37,7 @@ 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 + _) abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie _) a (bC %a // abdy/ablatief/ablusie/abstrak, etc. _) a (bba a // restore default stress: (ge)abba/abbamandjie, etc. abse (s %apsE // fix stress and e sound: abses/-se @@ -257,6 +258,7 @@ arre (stA %ar@ // arrestasie/arresteer arro (g %ar%u // arrogant/-e/arrogansie ar (seen %ar + arte (fak %art@ // move default stress: artefak/-te ar (tikel %ar // stress: artikel and compounds artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer @C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc. @@ -290,6 +292,7 @@ C) a (xA+ a // shorten a before x: taxi and compounds/praxi/saxofoon ay (_ _^_EN // words ending in ay are English ays (_ _^_EN // words ending in ays are English + aë (robi %aI // move default stress: aërobies/-e .group aa @@ -365,6 +368,8 @@ _) ann (a@ %an // move default stress: annaal/annale g) an (_ _^_EN //if it ends in gan it is English C) anette (_ %anEt // Janette/Sanette + ano (rak an%u // fix stress and vowel sounds: anorak/-ke + ano (reksi %an%u // fix stress and o sound: anoreksie(leier...) ansjovi anS''o@f@ // fix stress and o sound: ansjovis/-se/-smeer an (tjie aIN _) ana (C ,ana // words starting with ana starts destressed @@ -470,6 +475,7 @@ balsem bals@m // correct e sound in derivatives like balseming bara (k bar'a bar (bA b%ar // barbaar/barbare and derivatives/barbier and compounds + basi (lisk b%as@ // fix vowel sounds: basilisk/-e and compounds bastion bastiOn // -tion not English: bastion/-s and compounds _) bate b''A:t@ // fix stress and e sound: batefinansiering/-portefeulje and many others batte (ry b%at@ // move default stress: battery/-e and compounds: batterysuur... @@ -528,7 +534,7 @@ bybel beIb@l // to correct pronunc. of e in compounds byder (C@ b%eId@r // byderhand/-s/byderwets by (een b%eI_ // move default stress: byeen/byeenkoms/-te, etc. - byge (low b%eIx2@ // move default stress: bygelowig/-e/-heid + byge (lowi b%eIx2@ // move default stress: bygelowig/-e/-heid _) by (telP2 b'eI // fix e sound: bytel/-ling/-lery by (voorb b%eI// move default stress bywoordeli b%eIvo@rd@l@ // move default stressa: bywoordelik/-e @@ -553,21 +559,19 @@ C) be (rsie b'&: //kombersie etc. bene (r be@n@ //benerig/e be (C%+ bE // beffie/bessie/bennie/bettie/blombeddings + bek (d b&k // fix e sound: eendbekdier/kortbekdolfyn/rooibekduifie/skinderbekdorp re) be (lK+ b& // fix e sounds: rebel/-le/-lie _) be (Cy b@ // bely/beny/betyds bes (ie_ be@s //sonbesie duinebesie etc. bes (ies_ be@s //sonbesies duinebesies etc. son) be (sie be@ // fix e sound in compounds with sonbesie: sonbesiebos, etc. beste (k b@st& // fix e sound: bestekopname and many compounds of bestek - bed (h bEt // fix stress, e sound and d sound: bedhoek/bedhok, etc. + bed (C bEt bedjie bE:ici // (ge)bedjie/-s/bababedjie - bed (k bEt // bedkassie/bedkaartjie/bedkatel/bedkussing - bed (l bEt // bedlamp/bedliggie/dubbelbedlaken - bed (m bEt // bedmaats/bedmatjie, etc. - bed (p bEt // fix e sound: bedpan/-ne/-poot, etc. bed (rand bEt // fix e and first d sounds - bed (s bEt // bedsitkamer/bedsprei/gebedsdag + be (dr@ b@ // bedremmeld/bedrewe/bedrywig, etc. bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd + bedw (@ b@dw // bedwing and similar @) bed (_ bEt // bruidsbed/dubbelbed; many compounds ending in bed be (de_ be@ // bede/gebede bedes (_ be@d@s // bedes/seënbedes, etc. @@ -733,6 +737,7 @@ deto (nA d%Et%u // fix e and o sounds and stress: detonasie/detoneer/detonering deur (aar d%y@r_ // move default stress: deuraar/-de deur (bo d%Y@r // move default stress: deurboor/deurborende + deur (dag d%Y@r // move default stress: (on)deurdag/-te/-theid deur (drenk d%y@r // move default stress: deurdrenk/-te deur (dring@ d%y@r // move default stress: deurdringend/-e deur (grond d%y@r // move default stress: (on)deurgrond/-elik/-e/-heid @@ -862,6 +867,7 @@ du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc. @n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm + dw (erg dw // fix d sound: tuindwerg/-e/-ie @) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e @) dwese tve@s@ // leedwese/vakbondwese @) dwillig tv'Il@x2 // d sound and stress: kwaadwillig/bereidwillig @@ -875,11 +881,13 @@ e (C E CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette + blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese juwel) e (C @ // fix e sound: juwelekissie and similar compounds fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc. kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc. ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar + skew) e (C @ // fix e sound: skewekop/-mond trol) e (C@ @ // fix e sound in compounds: kontrolebank/-doeleindes/-kamer/-lys/-maatreël/-rekening... voorrad) e (C @ // fix e sound: voorradedepot/-konvooi and similar @C) e (aCC @_ // fix e sound: doodseise-/manne-/ongevalle-/troepeafdeling/slakkeafval/handearbeid @@ -890,6 +898,7 @@ CAC) e (rr @ // fix e sound: koperring/-rooi/nederryn/somerreën/-rok/superrealis/syferrekenaar... @C) e (reekK @ // fix e sound: duine-/rotsereeks aai) e (C @ // fix e sound: baaierd/waaierstert/paaiement/compounds starting with baaiers- + lat) eres @r@s //lateres fp) ers (_ &rs // fix e sound: dof-/gif-/olyf-/tydskrifpers, etc. bloup) ers &:rs // fix e sound: bloupers treil) e (rC @ // fix e sound: (vis)treilerkaptein/-wrak and similar compounds @@ -931,6 +940,7 @@ ies) e (b @ // fix e sound: dinamiesebinding/ekonomiesebemagtiging &At) e (bA@ @ // fix e sound: batebestuur/sekuriteitebeurs/soldatebbaadjie/geslotebaan, etc. Aw) e (bA @ // fix e sound: briewebesteller/diewebende/newebedoeling/skewebek/stywebeen + @d) e (bl @ // fix e sound: huldeblyk/-e/lindeblom/maagdebloeisel @C) e (bo @ // compounds with boek/boer/boog/boom/bol/bord/borsel/bos/ grondbonebotter/kamdebo... @C) e (bu @ // briewebus/ereburger/novellebundel/urinebuis/woedebui @C) e (by @ // fix e sound: statebybel/-s @@ -1422,6 +1432,7 @@ fari (seër f%ar%i // fix stress and a sound: Fariseër/-s farma (seut f%arm%a // move default stress: farmaseut/-e/-ies/-ika fasade f%asA:d@ // fix stress and 1st a sound: fasade/-s and compounds + fase (tK f%asE // fasili f%as@l%i // fasiliteit/e/aftrekorderfasiliteit fa (ta@ f%a //fix stress and 1st a sound: fatale/fatalis/-me/-te/-ties fat (soen f%at // move default stress: (on)fatsoen(lik) @@ -1443,6 +1454,7 @@ fi (siek f@ // correct 1st i sound and move default stress: fili (ppA f@l@ // fix stress and i sounds: Filippyne/-pynse/filippien filistyn f@l@st'eIn // filistyn/e + fille (t f@lE // fix stress and e sound: (bees)fillet/-te and similar _) fi (na@ f%i // finaal/finale/finansies mor) fine (@ fin@_ // fix e sound in compounds: morfineafhanklikheid/-beswyming/-dosis/-tablet fi (skA f@ // move default stress: fiskaal/fiskale/konfiskeer @@ -1456,8 +1468,10 @@ flu (we fl%y // move default stress: fluweel/fluwele and compounds _) fok (o fOk_ // fix o sound, insert short break: fokop/fokof folio fo@li_u // fix o sounds: folio and compounds + fondue f%Ondy // fix stress and ue sound: fondue and compounds @) fonie fun'i // kakofonie/simfonieorkes/telefonie @) fonies f'o@nis // fix stress: simfoniese/polifonies/telefonies + @) fonie (s@@ fun'i // fix stress: simfonieseisoen and similar fon (tein f%On // move default stress: fontein/fonteinwater, etc. _) for (C f%Or // formeel/formele/forseer/fortuin fore (l f%ur& // fix stress and e sound: forel/-e and compounds @@ -1472,6 +1486,7 @@ fo (togra fo@ // move default stress: fotograaf and similar fra (giel fr%a // fix stress and a sound: fragiel/-e _) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca + frangi (pani fr%aN%i // fix stress: frangipani and compounds fre (kwen fr%i // fix stress and 1st e sound: frekwensie/-s and compounds freud frOId // Freud/Freudiaans/-e front (A@ fr%Ont // fix stress and e sound: konfronterend/-e/konfrontering @@ -1494,10 +1509,14 @@ gal (joen x2%al // move default stress: galjoen/-e and compounds gamie (_ x2am'i // bi-/mono-/poligamie, etc. gamies x2'A:mis // bi-/mono-/poligamies/-e + ga (riep x2%a // fix stress and a sound: Gariep(dam) gar (n x2%ar // move default stress: garnaal/garnale/garneer/garnering and compounds garni (soen x2%arn%i // fix stress: garnisoen and compounds @C) garye x2%ar'eI@ // Fix stress: Bulgarye/Hongarye - gas (aan x2as_ // fix stress: gasaanleg/-aansteker and similar comp9ounds + _) gas (A x2''as_ // fix stress: gasaanleg/-aansteker/-installasie/-ontploffing + gas (erig x2A:s // long a and no pause: gaserig/-e/-heid + gas (ie x2A:s // long a and no pause: gasie/-s and compounds + gas (ig x2A:s // long a and no pause: gasig/-e/-heid gauteng x2%aUtEN //Gauteng and compounds _) gh g gh (_ k @@ -1739,6 +1758,7 @@ heid (_S4 heIt herinner h&r'In@r // herinner/-ing/-e|s hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc. + hex (C hEks // prevent English translation: Hex(rivier)vallei hia (sint h%ij%a // fix stress: hiasint/-e and compounds _) hi (bis h%i // move default stress: hibiskus/-se and compounds higië (nA h%ix2%ie@ @@ -1757,6 +1777,7 @@ hiër (argie h%i@r // stress on 1st a: hiërargies/-e hiëro (glie h%i@r%u // fix stress and vowel sounds: hiëroglief/-gliewe A) hle (_ =LE // Nguni words and names ending in -hle: Enhlalakahle/Hlalanikahle/malahle/Phahle + _) hobo ho@bu // fix o sound in compounds: hobokonsert/-musiek/-solo/-sonata/-speler hoeve (r h%uf& // fix stress and e sounds: hoever(re) hoeveelh (e h%ufe@lh // move default stress: hoeveelheid/-hede hof (A hOf_ // fix o, pause: hofaansoek/-amptenaar/-etiket/-interdik/-ordonnans/-uitspraak/-ure... @@ -1785,6 +1806,7 @@ ie i tr) ie (_ 'i //stress on trie at word end ieë (K i:@ // knieë/vlieë/spieël/-tjie + ie (uu i // split ie/uu, eu not diphthong: drieuur and similar ss) ief (_ 'if // move default stress: aggressief/massief/obsessief/progressief, etc. ss) iewe (_ 'iv@ // move default stress: aggressiewe/massiewe/obsessiewe/progressiewe ns) iewe (K 'iv@ // fix stress and e sound: intensiewesorg(eenheid) and similar @@ -1827,6 +1849,7 @@ _) immi (grA @m@ // fix stress and i sounds: immigrant/-e and compounds _) i (mmu %i // fix stress and i sound: immuun/immune/immuniteit _) inder (C @nd@r // inderdaad/inderhaas/indertyd + _) indel (C Ind&l // fix e sound: indelf/indelwe/indelwing indi (a@ @nd%i // fix stress: Indiaan/Indiane in (dien @n //indienstreding/indiensopleiding/indiensplasing indis (kr @nd@s // stress: indiskreet/-e/indiskresie/-s @@ -1939,6 +1962,8 @@ irriter (@ ir@t'e@r // irriterend/e/irritering iles (_ _^_EN // words and names ending in -iles are English + ipe (kon %ip@ // Fix stress and e sound: ipekonders and compounds + _) ira (C %ira // fix stress: Irak/Iran/Iranees/-nese/Iraki ity (_N _^_EN @) igering ix2'e@r@N instruks @nstr'Wks // instruksie/s (stress) @@ -1978,6 +2003,7 @@ @) iseur is'Y@r // adviseur/narkotiseur @) i (sering i C) isie 'isi // ambisie/ammunisie/komposisie/ammunisiekis + @@@C) isie isi // restore default stress in compounds like kragkompetisie... C) isieus isi'Y@s // ambisieus/suspisieuse C) isk (_ 'Isk // asterisk/tamarisk C) isk (e_ 'Isk // asteriske/tamariske @@ -2074,6 +2100,7 @@ _) kilo kil%u // fix o sound in compounds: kilogram/-liter/-meter kker (A k@r // swakkerig/blikkerig/flikkerend/flikkering klaarblyklik klA:rbl'eIkl@k // klaarblyklik/e + kla (kous klA: // fix stress and long a sound: klakous/-e klande (sti kl%and@ // move default stress: klandestien/-e _) kla (sA@@ kla // klasaantekeninge/klasonderwyser and other compounds kla (ssiek kl%a // move default stress: klassiek/-e @@ -2103,7 +2130,7 @@ kleure klY@r@ // fix e sound: kleurebeeld/-gloed/-kaart/-kontras/-mengeling/-prag/-sin... kli (maat kl@ // move default stress: klimaat and compounds kli (mop klI // fix i sound: klimop(plant) - klim (u klIm_ // fix i sound in compounds like bergklimuitstappie + berg) klim (A klIm_ // fix i sound in compounds like bergklimuitstappie/-ekspedisie kli (niek kl@ // fix stress and i sound: kliniek and compounds klip (A klIp_ // fix i sound: klipalbaster/-altaar/--uil/leiklipolie klou (sule kl%@U // move default stress: klousule/-s @@ -2209,6 +2236,8 @@ _) kar (b k%ar // move default stress: karba/karbol/karbonkel and their compounds kar (be kar // restore default stress: karbestuurder/-s/-besitter, etc. kar (does k%ar // move default stress: kardoes and compounds + _) ka (rien k%a // fix stress and a sound: Karien/Karientjie/Kariena + karika (tu k%ar%ik%a // fix stress and a sounds: karikatuur/karikature karme (naadj k%arm@ // fix stress and e sound: karmenaadjie and compounds karmosyn k%arm%useIn // fix stress and o sound: karmosyn and compounds karna (val k%arn%a // fix stress and 2nd a sound: karnaval and compounds @@ -2224,13 +2253,14 @@ kar (wei k%ar // move default stress: karwei and derivatives ka (sarm k%a // move default stress: kasarm and compounds kaserne k%as&rn@ // move default stress, fix 1st e sound: kaserne and compounds + kaske (nade k%ask@ // fix stress and e sound: kaskenade/-s and compounds _) ka (sta k%a // move default stress: kastaiing and compounds _) ka (ste@ k%a // move default stress: kasteel/kastele and compounds ka (sty k%a // move default stress: kasty/-der/-ding kasse (t k%asE // fix stress and e sound: kasset/-te and compounds ka (strol k%a // move default stress: kastrol/-le and compounds _) kata ,kata - katalo (gus k%atalu // fix stress and vowel sounds: katalogus and compounds + katalo (gA k%atal%u // fix stress and vowel sounds: katalogus and compounds/katalogi/katalogisering kate (dr k%at@ // katedraal/katedrale and compounds kate (gA k%at@ // fix stress and vowel sounds: kategis/-te/kategismus and compounds/kategese/kategeet kategorie k,at@x2ur'i // to also handle plural @@ -2238,6 +2268,7 @@ kategories k,at@x2'o@ris // to move stress K) katel kA:t@l // fix e sound of compounds: katelknop/-styl, etc. katjie (pie k%aIc%i // move default stress: katjiepiering and compounds + katki (sA k%atk@ // fix i sound: katkiseer/katkisasie, etc. _) ka (to k%a // fix stress and a sound: katode and compounds/katoliek/katots _) ka (tr k%a // move default stress: Katrina/katrol and compounds @@ -2311,10 +2342,12 @@ konkel kONk@l // restore default stress and fix [N] sound: konkelaar/konkelwerk, etc. konsen (tr k%Ons@n // fix stress and e sound: konsentreer/konsentrerend/konsentrasie konsen (trie k%Ons''En // fix stress and e sound: konsentries/-e + konsep (A k%OnsEp_ // fix e sound, pause: konsepooreenkoms and similar compounds konsertina k%Ons@rtin%a // fix stress and vowel sounds: konsertina/-musiek and similar konside (rA k%Ons@d@ // fix vowel sounds: konsiderasie/konsidereer konsist k%Ons@st // konsistorie and compounds/konsistensie konstabel k%OnstA:b@l // (hof/hoof/verkeers)konstabel/-s, etc. + konsti (tusi k%Onst@ // fix stress and i sound: konstitusie and compounds konsul (A k%Ons%Wl // konsulaat/konsulate/konsulêr kon (sul kOn // restore default stress: konsul and compounds konsul (tant k%Ons%Wl // fix stress: konsultant/-e and compounds @@ -2322,6 +2355,7 @@ _) kontra (KP6 k'Ontra // kontra is prefix kontra (diks k%Ontr%a // move default stress: kontradiksie/-s _) kontrak k%Ontrak // move default stress: kontraksie/kontrak and compounds + kontrap (sie k%Ontrap // fix stress: kontrapsie/-s _) kontras k%Ontras // move default stress: kontras/-te/kontrasteer kontrasep k%Ontr%asEp // fix stress and e sound: kontrasepsie and derivatives kontrover (s k%Ontr%uv&r // o and v sounds: kontroversie/kontroversieel @@ -2341,7 +2375,7 @@ kos (tu k%Os // move default stress: kostuum and compounds kouka (sië k%ukA: // fix stress and vowel sounds: Koukasiër/-s kou (sa@ k%@U // move default stress: kousaal/-ale - koö k%o@O // koördinasie/koöpsie, etc. + ko (ö k%u // koördinasie/koöpsie/koöperasie/-atief, etc. @@ -2354,9 +2388,11 @@ lagune l%ax2yn@ // move default stress: lagune and compounds _) la (kon l%a // lakoniek/lakonies/lakonisme lamfer lA~mf@r // fix e sound: lamferdoek/-vlae, etc. (variant) + lampe (t l%ampE // move default stress: lampet/-te/lampetbeker/-s lanfer lA~mf@r // fix e sound: lanferdoek/-vlae, etc. lam (len l%am // move default stress: lamlendeling/lamlendig/-e/-heid lande (ry l%and@ // move default stress: landerye/compounds of landery- + _) land (_rover _^_EN _) lang (d@@ l%aN // langdradig/langdurig and their derivitivs  _) lange (CA laN@ // e sound: langelaas/Langeberge lang (werp l%aN // move default stress: langwerpig/-e/-heid @@ -2379,6 +2415,7 @@ legende l@x2End@ // move default stress; fix e sounds legen (da l@x2@n // move default stress and fix e sounds legi (oen l%Ex2%i // fix stress and e sound: legioen/-e and compounds + le (kker l& // fix e sound: luilekker/-dae/-lewe, etc leli (k le@l@ // fix e sound and stress: lelik and derivatives _) lende lEnd@ // lendelam/lendene/compounds of lende lening le@n@N // banklening/sorgverlening/hulpverlening... @@ -2474,6 +2511,7 @@ majestu m%A:j@st%y // fix stress: majestueus/-e makaber m%akA:b@r // fix stress and vowel sounds: makaber/-e/-heid maka (paan m%ak%a // fix stress and a sounds: Makapaan/-s/-grot and compounds + ma (kassar m%a // fix stress and 1st a sound: (anti)makassar/-s @) makie (sie mak'i // fix a sound and stress: bol(le)makiesie/-slanery ma (kietie m%a // fix stress and a sound: makietie and compounds: verjaardagmakietie/-s @) makranka makr'anka // fix stress and vowel sounds: koek(e)makranka/-s @@ -2605,6 +2643,7 @@ morf (otomie m%Orf // move default stress: morfotomie _) morr (i mOr // restore default stress: morrig/morrie/-doring _) mors (@ mOrs // restore default stress: morsaf/morsdood/morsig + mosam (biek m%o@s%am // move default stress: Mosambiek/-er/-se mosa (ïek m%o@s%a // move default stress: mosaïek and compounds mo (skee m%O // move default stress: moskee/-s and compounds motor mo@t@r // motorfiets/motorkar/vragmotor @@ -2627,7 +2666,7 @@ mede (doë m%e@d@ // move default stress: mededoë/-nd _) mede (ly m%e@d@// move stress mede (plig m%e@d@ // move stress: medepligtige - media mi:dia // compounds of media + media mi:di:ja, // compounds of media medisi (na@ m%Ed@s%i // fix stress and vowel sounds: medisinaal/-nale medi (tA m%Ed%i // fix e sound: mediteer/meditering/meditasie medite (rre m%Ed%it@ // fix stress and vowel sounds: mediterreens/-e @@ -2657,7 +2696,7 @@ mentee (C mEnt'e@ // argumenteer/dokumenteer/fragmenteer stress related mentele (K mEnt'e@l@ // stress always on penultimate slb of words ending in ntele/-r - + men (tasie m%En // fix stress: argumentasie/dokumentasie and similar mentering mEnt'e@r@N mekaar m@k'A:r mekaarge m@k'A:rx2@ @@ -2706,10 +2745,12 @@ eu) n (g n // dreungeluid/kreungeluid/steungeluid/steungewend oo) n (g n // hoongelag/loongeld/telefoongesprek/woongeriewe and similar Cui) n (g n // basuingeskal/bruingebrand/bruingeel/tuingereedskap/tuingewas/tuingrond + we) n (g@++ n // split n/g: opwengrammofoon/wengereg/-gedagtes y) n (g n // fyngoud/hooflyngesprek/langtermyngroei/kaplyngrens ë) n (g n // split -ng-: reëngeluid/-geur/-gogga/-gordel/seëngebed aa) n (gas n // split n/g: metaangas and compounds and similar &) n (gat n // split "ng": mangat/-e/woongat/-e/opwengat/-e + spi) n (ge n // split n/g: spingehalte/-geluid, etc. ng (eeR Nx2 // diftongeer/gedistingeerde/rangeer and compounds ngees nx2e@s // split n/g: leuen-/span-/sportman-/wengees n (_g N @@ -2720,6 +2761,8 @@ _) na (C_ n'a //three-letter words starting with na na (boots nA: // long a in compounds: klank-/vlugnabootser, etc. na (burig n%A: // move default stress: naburig/-e/-heid + na (byge n%A: // move default stress: nabygeleë and derivatives + nabyh (e n%A:beIh // move default stress: nabyheid/-hede na (ï n%a_ // naïef/naïewe/naïwiteit @) na (lis n%a // shorten a sound: joernalis/-te/-tiek nami (bi n%amI // Namibië/Namibiese @@ -2767,6 +2810,7 @@ neo (li n%i%u // fix stress and vowel sounds: neolities/-e/neolitikum ner (veu n%&r // move default stress: nerveus/-e @C) nes (_ nEs // fix final e sound: doringnes/aasvoëlnes/kalkoennes/hamerkopnes/reiernes/kiewietnes + bye) nes nEs // fix e sound: byenes and compounds by) nes nEs // fix e sound: (perde)bynes/te net (agtig nEt_ // fix e sound: (vis)netagtig/-e _) net (o nEt_ // fix o sound: netonderrok/-klere @@ -2812,7 +2856,7 @@ no (stalgie n%O // stress on 2nd slb.: nostalgies note (b no@t@ // fix e sound: notebalk/-e/-bank/-beurs notule (K n%utyl@ // fix stress and vowel sounds: notule and compounds - no (velle n%u // move default stress and fix o sound + novelle n%uf&l@ // move default stress and fix o sound: novelle/-s and compounds november n%o@fEmb@r // fix 1st e sound and stress: November and compounds ntere (ss ntr@' // interessant/interesseer/geïnteresseerd n (tjie N // breintjie/fonteintjie/kleintjie @@ -2857,7 +2901,7 @@ _) ok (tA %Ok // move default stress: Oktober and compounds: Oktobermaand, etc./oktaaf/oktawe ole (ander %o@l%i // fix stress and e sound: oleander and compounds C) o (lia o@ // fix o sound: Goliat/magnolia - oliek (_ ul'ik // koliek/mankoliek/simboliek + K) oliek ul'ik // koliek/mankoliek/simboliek/koliekbaba oliek (e_ ul'ik // mankolieke/katolieke oliekig ul'ik@x2 // mankoliekig/-e/-heid o (lien %u // fix stress and o sound: olien/-hout, etc. @@ -2929,6 +2973,7 @@ oloog ul'o@x2 // bioloog/kardioloog and similar oloë ul'u@ // bioloë/kardioloë and similar omega %o@me@x2a // omega/-s + omele (t %Om@lE // fix stress and vowel sounds: omelet/-te and compounds ometrie ume@tr'i // geometrie/psigometrie ometries um'e@tris // geometries/psigometriese w) o (rs O: //lengthen o sound in wors compounds @@ -2991,6 +3036,7 @@ opper Op@r // oppergesag/wese/vlak/man opper (vlakki %Op@r // move default stress: oppervlakkig/-e/-heid/-ste opsetlik %OpsEtl@k // move default stress: opsetlik/-e/-heid + op (sione@ %Op // fix stress vowel and s sounds: opsioneel/-nele optel Opt&l _) op (@P2 'Op // opeet/opeis/optredes/opoffering open (+ o@p@n // open/opening/e/s @@ -3328,6 +3374,7 @@ peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici peri (sCA p%Er@ // fix stress and vowel sounds: peristalties/-e/peristaltiek/periskoop/-skopies @) perke (_ p&rk@ // fix e sound in some words ending in -perke: menseperke + @) perker (K p&rk@r // fix e sound: words like spoedbeperker/-s @) perking p&rk@N // fix e sound in some words containing -perking per (kussie p@r // fix stress and e sound: perkussie and compounds perle (moe p%&rl@ // move default stress: perlemoen/perlemoer and compounds/reperkussie/-s @@ -3343,6 +3390,8 @@ pers (om p&rs_ // fix e sound, pause: persombudsman/-ne and compounds perso (neel p%&rs%u // personeel and compounds pervers p@rf&rs // pervers/perversie + pervert p@rf&rt // fix stress and e sounds: pervert/-e and compounds + runder) pes pEs // fix e sound: runderpes and compounds pe (tieter p@ // fix stress and 1st e sound: petieterig/-e/-heid pe (tisi p@ // fix stress and e sound: petisie/petisionaris and compounds _) pe (trA_ pe@ // lengthen e sound: Petro/Petra @@ -3352,10 +3401,12 @@ ph (_ f // fix ph sound: Rudolph/Joseph phi (lip fI phi (lippA_ f@ // fix stress and 1st i sound: Philippa/Philippi + _) pieter (sA@ p%it@r // move default stress: pieters(i)elie and compounds pig (meA p@x2 // move default stress: pigmee/pigmeë pi (kant p%i // move default stress: pikant/-e, etc. pikke (wyn p@k@ // move default stress: pikkewyn and compounds _) pi (la p%i // move default stress: pilaar/pilare/pilatus + pio (n p%ijO // fix stress: pion/-ne and compounds of pion pio (nier p%i%u // fix stress and vowel sounds: pionier and compounds pira (mi p%ir%a // move default stress: piramide/-s/piramiedvormig pi (sto p@ // pistool/pistole and compounds @@ -3452,8 +3503,9 @@ promisku pr%Om@sky // fix stress and o sound: promisku/-e/-íteit promulg (e pr%Om%Wlx2 // fix stress and vowel sounds: promulgeer/-gering proposi pr%Op@zi // stress, o and s sounds: (besigheids)proposisie/-si, etc. - prosa pr'o@sa //prosa and compounds + prosa pro@s%a //prosa and compounds prosa (ïe pr%o@sA: // fix stress and vowel sounds: prosaïes/-e + @) prose (_ pro@s@ // fix o sound: klap-/klip-/knop-/popr ose proses pr%usEs // proses/versoeningsproses/strafproseswet projek pr%ujEk @@ -3519,6 +3571,7 @@ rasse ras@ // e sound of compounds starting with rasse ribbe (tj r'Ibi riete rit@ // fix e sound: merietelys/rietedak, etc. + rinkh (als rINk // drop h: rinkhals and compounds rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der _) ri (o r%i // move default stress: riool and compounds/riolering ris (kant r@s // move default stress: riskant/-e @@ -3551,6 +3604,7 @@ rugby rWgbi ru (dolC ru // fix u sound: rudolf _) rug (A@ r''Wx2_ // fix u sound, pause: rugoefeninge/-operasie and similar + ruma (tiek r%Wm@ // fix stress and vowel sounds: rumatiek(vingers and similar) ru (moer r%W // fix stress and u sound: rumoer/-ig/-heid rusper (C rWsp@r // fix e sound: rusperband/-tjie/-trekker and similar ru (ïn r%y_ // move default stress: ruïne/-s @@ -3631,9 +3685,11 @@ o) rene r@n@ // eersgeborene/uitverkorenes re (geer r@ // regeer/geregeer; stress to end reger (A r@x2e@r // regering/regerende + repertoire r%Ep@rtwA:r // repertoire and compounds re (sensA r@ // resensie/-s/resenseer/resensent reser (v r@s@r // fix stress and e sounds: (ge)reserveer/reservering re (sessie r@ // fix stress and e sound: resessie/-s and compounds + resi (tA r@s@ // fix vowel sounds: resitasie and compounds/resiteer respek r@spEk respek (teer r@sp%Ek // stress to end &) rele (_ r'e@l@ @@ -3693,6 +3749,7 @@ _) sebra se@bra // fix vowel sounds: sebra/-strepe; variant of zebra se (ggA s& // fix e sound: niksseggend/-e @) seko (no@ s_%Ek%u // fix e sound; default stress; insert short pause: bedryfs-landsekonomie/-s/-ekonoom + @) seks (_ sEks // fix final e sound: kinder-/kuber-/oumens-/selfoon-/tienerseks seks (tant s%Eks // move default stress: sekstant and compounds sekste (t s%EkstE // fix stress and 2nd e sound: sekstet/-te selek (CA s@lEk //seleksie selekteer etc. @@ -3700,6 +3757,7 @@ sen (sorie s%En // move default stress: sensories/-e senter sEnt@r // fix e sound: binne-/buite-/Springboksenter @C) se (re_ se@ // fix penultimate e sound: bed-/brand-/keel-/kop-/kruip-/maag-/mond-/pitsere + se (roet s@ // fix stress and e sound: seroet and compounds seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.) sitrus s'itr%Ws_ //i sound and stress in compounds @@ -3733,6 +3791,7 @@ sa (tanie s%A: sa (tir s%a // move default stress: satire/satiries/-e sa (turnu s%a // fix stress and a sound: saturnus and compounds + sauna sO:na // fix au sound: sauna(bad and similar compounds) sav (annA s%av // fix stress and v sound: savanna/-s/savanne _) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher _) sedan s@dan // fix stress and e sound: sedan/-s/sedanmotor, etc. @@ -3814,6 +3873,7 @@ skerpi (oen sk%&rp%i // move default stress: skerpioen/-e and compounds skilder (y sk@ld@r // move stress to y: skildery and compounds like skilderymuseum skisofr (e sk%is%ufr // fix stress and o sound: skisofreen/skisofrene + _) skok (AP4 sk''Ok_ // fix o sound and stress: skokaankondiging/-effek/-insluiting/-onthulling... skole sko@l@ // fix e sound in compounds: skolebeheerliggaam/-koor/-rugby/-wedstryd/-wet sko (lier sk%o@ // move default stress: skolier/-e skoppel (maa sk%Op@l // move default stress: skoppelmaai/-e/-er/-s @@ -3821,7 +3881,7 @@ skrif (A skrIf_ // i sound: (hand)skrifontleder/skrifuitleg/tydskrifadvertensie/-afdeling/-artikel skuld (erken skWlt_ // fix d sound: skulderkenning/-s/-erkentenis skyn (hei sk%eIn // move default stress: skynheilig/-e/-heid - _) slag sl'ax2 + _) slag sl''ax2_ // slagoffer/-instrument/-e slag (off slax2_ // short a sound, insert pause: misdaadslagoffer and similar compounds sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds sla (we slA: // fix stress and a sound: slawearbeid/-er, etc. @@ -3982,6 +4042,7 @@ standerd (@ st%and@rt // compounds starting with standerd stand (houde st%ant // move default stress: standhoudend/-e/-heid stand (vasti st%ant // move default stress: (on)standvastig/-e/-heid + _) stap (A stap_ // fix a sound, pause: stapafstand/-ekspedisie/-oord stapel stA:p@l // fix e sound: (op)stapeling/stapelaar staties st'A:tis sta (tutA st%a // fix stress and a sound: statute/statutêr @@ -4162,7 +4223,8 @@ _) trak (ta tr%ak // move default stress: traktaat/traktate _) trans (@P5 tr%ans // transatlanties/transformasie/transoranje/Transvaal, etc. _) trans (aksie tr%ans // remove small break: transaksie/-s and compounds - transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal + transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal + transistor tr%ansIst@r // trans- not prefix, fix o sound: transistor(radio, etc.) transito tr%ansit%u // trans not prefix: transitorooftog and similar transport tr%anspOrt // fix stress: transport and compounds trap (orr trap_ // shorten a sound: traporrel/-tjie/-s and compounds @@ -4269,6 +4331,7 @@ _) ter (l t@r // move default stress: terloops/-e @) term (_ t&r@m // correct pronunciation of e @) terme (_ t&rm@ // correct pronunciation of 1st e + &) termes t@rmEs // fix e sounds: bottermes and similar ter (miet t%&r // move default stress: termiet/-e and compounds _) ter (w t@r // stress and e sound: terwyl/terwille sin) te (ti te@ //sintetiseer, compounds and derivatives @@ -4299,6 +4362,7 @@ &) tel (_ t@l + ge) tel (_ t&l // fix e sound: bymekaargetel/oorgetel, etc. teleur t@lY@r // teleur/teleurstelling/teleurgesteld &) tels (_ t@ls sleu) tel t@l //sleutel in compounds @@ -4386,7 +4450,7 @@ uit (voerig %Yyt // move stress: uitvoerig/-e/-heid uit (wisba %Yyt // move default stress: (on)uitwisbaar/-bare/-baarheid _) uitge (@P5 'Yytx2@ // words beginning with uitge have stress on 1st slb - uitgewer 'Yytx2,e@v@r + uitgewer Yytx2%e@v@r uitgewerk Yytx2@v&rk // uitgewerk and derivatives; see rule: uitgewer uitgewerp Yytx2@v&rp // fix vowel sounds, see rule: uitgewer uitke (n YytkE // mix e sound: uitken @@ -4460,6 +4524,7 @@ vere (_ fe@r@ // fix e sound: vere and compounds ending in vere ve (st fE // fix e sound: huweliksbevestiger/-bevestiging _) vet (A fEt_ // fix e sound, pause: vetafskeiding/-olie/-oplossing, etc. + vete (X fe@t@ // fix stress and e sounds, remove pause: vete/-s and compounds vete (ra f%Et@ // fix stress and e sounds: veteraan/-ane and compounds veter (K fe@t@r // (skoen)veter/-s, etc. _) veto (reg fe@t%u // fix o sound: vetoreg/-te @@ -4569,6 +4634,7 @@ vol (kome f%Ol vo (llA_ fO // volle/vollê/Volla - exception to: vo (lC f%O volle (dig f%Ole@ // fix stress and e sound: (on)volledig/-e/-heid... + voll (engte fOlE vo (ller fO // exception to: vo (lC f%O volles (_ fOl@s // fix stress and e sound: volles/passievolles, etc. vol (hou_ fOl // exception to: vo (lC f%O @@ -4576,7 +4642,7 @@ vol (mane fOl // exception to: vo (lC f%O vol (prop fOl // exception to: vo (lC f%O vol (r fOl // volrond/-rooi/-ryp: exception to: vo (lC f%O - vol (sirk fOl // volsirkel: exception to: vo (lC f%O + vol (siC fOl // volsirkel/volsin/-ne: exception to: vo (lC f%O _) vol (sk fOl // restore default stress: volskaalse/-skaduwee/-skerm/-skiet, etc. vol (ste_ fOl // exception to: vo (lC f%O vol (sto fOl // volstof/volstoom/volstop/volstort; exception to: vo (lC f%O @@ -4644,6 +4710,7 @@ nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal Cod) w v // fix w sound: godwelgevallig/godweet/godwees k) w w + k) w (erC v // fix w sound: wrakwerf/-werwe volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc. k) w (And v // fix w sound: buikwand/rukwinde s) w w @@ -4886,12 +4953,14 @@ @) 'tjie %ici // foto'tjie/ma'tjie, etc. K) á (CK '!a // extra stress: kán/wás and similar áá '!A: // extra stress: dáár/dáár and similar + álle (K '!al@ // ekstra stress: álle/-s K) ék (_ '&k // fix e sound and stress: ék/gék K) é (CK '!E // extra stress: hét/nét and similar éé '!e@ // extra stress: één, etdc. ék (_ '!&k // ekstra stress: ék/plék ə @ // char.replacement for 'n _C) è (_ E // dè/nè + éú '!Y@ // stressed syllable ê e: l) êer &:@r // fix ê sound: lêer and compounds @@ -4908,6 +4977,7 @@ ï (nsp @ // geïnspireer/-de ï (nt @ // geïnteresseerd ï (nC 'I // beïndruk/beïnvloed + ïnkarn (A @Nk%arn // fix stress and nk sound: reïnkarnasie and compounds/reïnkarneer ïsol %is%ul // geïsoleer/-d K) ó (CK '!O // extra stress: óf/kón and similar óé '!u // extra stress: móét/sóék and similar @@ -4919,13 +4989,12 @@ ûe W:@ // brûe/rû ý '!eI // extra stress: jý/mý/sý and similar ñ _^_ES // words containing ñ are Spanish: senñor/-a/-ita + // punctuation ! _:eItrup_: !) ! $ dOl@r + __) - (_D minWs A_) - (_D _ C_) - (_D _ - - - diff --git a/dictsource/ca_list b/dictsource/ca_list index 20b9a83a..97052b3b 100755 --- a/dictsource/ca_list +++ b/dictsource/ca_list @@ -42,7 +42,6 @@ _< m@n'o||_:_:k@ _> ma#Z;'o||_:_:k@ _' a#p'Ost**'Uf _" kUm'Et@s -_$ dola#r - m'En^s __ b'aRR2a#||B'ajS;a# _/ ba*Ra @@ -50,8 +49,8 @@ _\ b'a*RaimbERt'iDa _` a#ks'Ent,UB'E**t _( 'ob**@||pa#**'Ent@zis _) t'anka#||pa#**'Ent@zis -_[ 'ob**@||kla#wD'at,or -_] t'anka#||kla#wD'at,or +_[ 'ob**@||kla#wD'at,o* +_] t'anka#||kla#wD'at,o* _{ 'ob**@||kl'aws _} t'anka#||kl'aws _« 'ob**@||kUm'Et@s @@ -69,7 +68,7 @@ _» t'anka#||kUm'Et@s @ a*R'oBa / ba*Ra © kopi*R'aIt -£ lliur**@s +£ lliu**@s ¶ pa#**'aQ**a#f § a#pa#**t'at // o secció? @@ -216,7 +215,7 @@ o o $atend b be c se -ç se,tr@nkaDa# +ç se,t**@nkaDa# d de f Efa# g Je diff --git a/dictsource/ca_rules b/dictsource/ca_rules index 5d7b95ca..d2f29b56 100755 --- a/dictsource/ca_rules +++ b/dictsource/ca_rules @@ -12,7 +12,7 @@ .L02 h l r s v w y z // continuants, not f .L03 f h r s v w y z // continuants, not l .L04 i í e é è // front vowels -.L08 p t k f s // sords +.L05 p t k f s // sords .L09 b d g m v l n d z r q // sonors .L10 a e o // vocals fortes .L11 i u // vocals febles @@ -116,7 +116,7 @@ m m _) m' (P2 m mp (K m - ment (_ m'Ent +// ment (_ m'En // ?? .group n @@ -126,6 +126,7 @@ e) n (_ n // except after e, i i) n (_ n nt (K n + nt (_ =n ny n^ b) n (@ m v) n (@ m @@ -137,7 +138,7 @@ .group o o o - or (_ 'or + or (_ 'o* ou Ow @@ -155,7 +156,7 @@ .group r r R - _) r RR2 + _) r *R r (_ = // final r is silent, but stress the vowel r (t ** A) r (A ** @@ -164,7 +165,7 @@ m) r (A R n) r (A R s) r (A R - rr RR2 + rr *R .group s @@ -205,8 +206,8 @@ .group x x ks - _e) x dz - _è) x dz + _A) x gz + _A) x (L05 ks K) x S; Ai) x S; Au) x S; @@ -236,4 +237,4 @@ g) ü w ñ n^ - $ dola#r + $ dola#* diff --git a/dictsource/de_list b/dictsource/de_list index b7ffde3a..21a7c5e8 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -109,7 +109,7 @@ _17 'zi:btse:n _18 '_axttse:n _19 'nOYntse:n _2X 'tsvantsIC -_3X 'd@-*aItsIC +_3X 'd@-*aIsIC _4X 'fi:*tsIC _5X 'fynftsIC _6X 'zEktsIC diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 62fcbc0a..fbccd830 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -36,9 +36,9 @@ o O u U * ** : ; b B d D dZ; f g j J J^ k l -l^ m n N n^ p Q r -R R2 s S; t T ts tS; -v v# w z Z Z; +l^ m n N n^ p Q R +R2 s S; t T ts tS; v +v# w z Z Z; Dictionary cs_dict @@ -139,8 +139,8 @@ o O oI u * ** : b B d D f g j J J^ k l m n -N n^ p Q r R R2 s -t T tS v v# w x z +N n^ p Q R R2 s t +T tS v v# w x z Dictionary fi_dict @@ -371,6 +371,18 @@ N n^ p q R s S S; t tS v w x z +Dictionary eu_dict + +a aI aU e eI eU i o +oI u Y + +* ** : ; b B c d +D f g h j J k l +l^ m n n^ p Q r R +s S t tS ts tz v w +x z + + Dictionary nl_dict 8 @ @- A a: E e: EI diff --git a/dictsource/en_list b/dictsource/en_list index e78a92e2..0f7ba8c3 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -178,8 +178,8 @@ _‼ Ekskla2m'eIS@nz _₠ jU@roU # haS $max3 -@ _at_ -& _and +@ _at_ $u+ +& _and $u+ \ bakstroUk $max3 / stroUk $max3 ?3 \ bakslaS $max3 @@ -303,12 +303,15 @@ _0M3 b'Ili@n _dpt pOInt _roman roUm@n_ +_0st st +_0nd @nd +_0rd d +_0th T _ord T // default ending -_ord20 @T // for 20,30,etc -_1o f'3:st -_2o s'Ek@nd -_3o T'3:d -_5o f'IT +_1o f'3: +_2o s'Ek +_3o T'3: +_5o f'I _0Co h'Vndr@dT @@ -429,6 +432,7 @@ accursed a2k3:sI2d ?5 accursed a2kVRsI2d achille a2kIli: aching eIkI2N +achy eIkI adam ad@m adamant ad@m@nt add ad @@ -607,6 +611,7 @@ authority a2T0rI2tI authoritative O:T'0rI2t@tIv autograph O:t@graf auto O:toU +autocracy O:t'0kr@sI automobile O:t@m@bi@l autonomous O:t'0n@m@s autopsy O:t0psI @@ -720,6 +725,7 @@ cannabis kana2bIs canoe k@nu: canoes k@nu:z canton kant0n +canvas kanv@s capitol kapIt@L caprice ka2pr'i:s caramel kar@mEl @@ -753,6 +759,8 @@ chapel tSap@L charade Sa2rA:d charismatic karIsm'atIk charit tSarIt // charitable +chic Si:k +chisel tSIz@L chocolate tS0kl@t cholera k0l@r@ cholesterol k@lEst@r0l @@ -847,6 +855,7 @@ coordinate koU'O:dI2neIt $verb copier k0pi@3 coral k0r@L coronet k0r@nEt +corollary $2 corporal kO@pr@L corporate kO@p@r@t corps kO@ $only @@ -1203,6 +1212,7 @@ hospitable h0sp'It@b@L hostage h0stI2dZ hostess hoUstEs hotel hoUt'El +hotkey h0tki: house haUz $verb however $2 howto haUtu: @@ -1582,6 +1592,7 @@ pageant padZ@nt paltry pO:ltrI panacea pana2s'i:@ panache $2 +pancreas pankri@s parabola p@rab@l@ paralysis p@ral@sIs parameter p@ramI2t3 @@ -1912,6 +1923,7 @@ shrilly SrIllI $verbf sibelius sI2beIli@s sierra sI'e@r@ signage saInI2dZ +signal sIgn@l // signaled signer saIn3 sikh si:k silhouette sI2lUw'Et @@ -2142,6 +2154,7 @@ vegan vi:g@n vengeance vEndZ@ns venus vi:n@s versus v3:sI2z +vertices v3:tIsi:z vestige vEstI2dZ vex vEks // for vexed vicar vIk3 @@ -2391,7 +2404,7 @@ Oman oUm'an Oregon 0rI2g@n Pacific pa2sIfIk Palestine pal@staIn -Palestinian pal@st'Ini:@n +Palestinia pal@st'Ini:@ Panama pan@mA: Paris parIs Peking pi:k'IN @@ -2420,7 +2433,7 @@ Seychelle seIS'El Sicily sIsI2lI Slovak sloUvak Seoul soUl -(sri lanka) sr,i:||l'anka2 +Sri sr,i: // Sri Lanka(n) Sudan su:d'an Suez su:I2z Sulawesi su:la2w'eIsI @@ -2448,6 +2461,7 @@ Wyoming waI'oUmI2N Xhosa kO:s@ zaire zaI'i@3 zimbabwe zI2mbA:bwI +zimbabwean zI2mbA:bwI@n Aaron e@r@n Abe eIb @@ -2505,6 +2519,7 @@ Gary garI Geraint gEraInt Gibbs gIbz Giles gaIlz +Gladys gladIs Glynn glIn Graeme greI@m Graham greI@m @@ -2565,6 +2580,7 @@ Mohammad moUh'amI2d Muhammad moUh'amI2d Moira mOIr@ Natalie nata2li +Natasha $2 Nathan neIT@n Neville nEvIl Nicholas nIk@l@s @@ -2887,6 +2903,7 @@ we'd %wi:d $pastf I aI $u+ $verbf $only (I am) %aIa2m +(I am) %aIam $atend he %hi: $verbsf she %Si: $only $verbsf it %It $verbsf diff --git a/dictsource/en_rules b/dictsource/en_rules index 7483dff3..6b9fbf81 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1442,7 +1442,7 @@ conva (l k0nv@ _) co (nvoy k0 _) copy k0pI - coro (lla k@r0 + coro (ll k0r0 co (rrect k@ correspo k,0rIsp'0 co (rro k@ @@ -1869,6 +1869,7 @@ @f) ed (_S2vdei t @g) ed (_S1vi d @k) ed (_S2vdei t + el) ed (_S2dv d &en) ed (_S2v d cl) ed (_S1v d @p) ed (_S2vdei t @@ -2751,6 +2752,7 @@ ie I ie (_ I ied (_S2i d // suffix + ieds (_S3i dz ie (c aI ie (ce i: ie (_ aI @@ -2875,6 +2877,7 @@ @) ingment (_S7dve I2Ng-m@nt logu) ing (_S4v I2N x) ing (_+S3v I2N + el) ing (_+S3dv I2N @@om) ing (_S3dv I2N en) ing (_S3v I2N en) ings (_S4v I2Nz @@ -3831,6 +3834,7 @@ _f) or (@ O@ _f) ore (A O@ f) or (k O@ + _f) or (s@ %O@ ch) or (d O@ l) or (d O@ _m) or O@ @@ -4083,7 +4087,7 @@ c) over Vv3 c) ov (et Vv d) ove Vv - g) ov (ern Vv + g) overn Vv3n sh) ov (+ Vv h) ov (el 0v h) ov (er 0v @@ -4106,7 +4110,7 @@ .group ow ow oU - ow (itz =oUv + ow (itz_ =oUv ow (ay_ @w kn) owle (d 0lI _) ow (l aU @@ -4183,6 +4187,7 @@ ras) p (b _) pur (su p3 put (_ pUt + s) put (_ pVt pyon pj0n _) pyro (@@P4 p,aIroU pyrom (e paIr'0m @@ -4794,6 +4799,7 @@ @) u (late =jU @) u (lar =jU @) u (lum =jU + @) uli (_ =jUlaI &) u (lous_ =jU ll) u (l ju: j) u (li u: diff --git a/dictsource/eo_list b/dictsource/eo_list index 736ebac6..c3078e8e 100644 --- a/dictsource/eo_list +++ b/dictsource/eo_list @@ -29,6 +29,16 @@ _0M3 mili'ardo _0M4 duili'ono _dpt _komo_ +// ordinal numbers +_0a a +_0aj aI +_0an an +_0ajn aIn +_0-a a +_0-aj aI +_0-an an +_0-ajn aIn + // accent names _lig ligat'uRa _acu dekst@-*ak'oRna diff --git a/dictsource/eo_rules b/dictsource/eo_rules index 21cfba29..2b439efa 100644 --- a/dictsource/eo_rules +++ b/dictsource/eo_rules @@ -17,10 +17,6 @@ a a aj aI aŭ aU - D_-_) a (_ %a //'a' after a number - D_-_) an (_ %an //'an' after a number - D_) a (_ %a //'a' after a number - D_) an (_ %an //'an' after a number .group b diff --git a/dictsource/es_list b/dictsource/es_list index 2c7fe42d..6bc23d48 100644 --- a/dictsource/es_list +++ b/dictsource/es_list @@ -63,7 +63,7 @@ _» kom'iJ^as||dE**'EtSas ^ TiRkumfl'exo € eU**o -% pOrTj'Ento $max3 +% pO**Tj'Ento $max3 & ampERs'ant @ a*R'oBa / ba*Ra diff --git a/dictsource/es_rules b/dictsource/es_rules index e63e51b9..8f0899ae 100644 --- a/dictsource/es_rules +++ b/dictsource/es_rules @@ -212,7 +212,7 @@ ü u ñ n^ - $ d'Olar + $ d'Ola* _) - (_D m'EnOs A_) - (_D _ diff --git a/dictsource/fr_list b/dictsource/fr_list index 7fa66534..b2b1074d 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2009-01-14 Michel Such +// Updated 2009-02-01 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -111,7 +111,6 @@ _# djEz _' a2postr'Of _( 'uvR@-parA~t'Ez _) f'Erm parA~t'Ez -_* asterisk: _, virgyl _- tirE _. _|pw%E~ @@ -141,11 +140,11 @@ _µ mikR'o _§ sEksj'O~ // symbols that are normally spoken when reading text -@ arobaz -% pursA~ $max3 -* asterisk: $max3 +@ _!arobaz +% pursA~ $max3 & e $u $brk _& _e_komErsj'al +* asterisk: $max3 + plys $max3 ~ tilde € @ro @@ -200,30 +199,11 @@ _4X karA~t _41 karA~te:W~ _5X sE~kA~t _51 sE~kA~te:W~ -_6X swAsA~t +_6X swAsA~t: _61 swAsA~te:W~ -_7X swAsA~t:diz3 _71 swAsA~te:O~z -_72 swAsA~t:duz -_73 swAsA~t:tREz -_74 swAsA~t:katOrz -_75 swAsA~t:kE~z -_76 swAsA~t:sEz -_77 swAsA~t:dis:Et -_78 swAsA~t:diz'w^it3 -_79 swAsA~t:diznWf -_8X katR@vE~ +_8X katR@vE~: _80 katR@vE~z2 -_9X katR@vE~diz3 -_91 katR@vE~:O~z -_92 katR@vE~:duz -_93 katR@vE~:tREz -_94 katR@vE~:katOrz -_95 katR@vE~:kE~z -_96 katR@vE~:sEz -_97 katR@vE~:dis:Et -_98 katR@vE~:dizw^it3 -_99 katR@vE~:diznWf _0C sA~ _1C0 sA~t2 _0M1 mil @@ -236,24 +216,8 @@ _dpt virgyl //some numbers have special pronunciation in Belgium and Switzerland ?2 _7X sEptA~t ?2 _71 sEptA~te:W~ -?2 _72 sEptA~t:dYz2 -?2 _73 sEptA~t:tRwAz2 -?2 _74 sEptA~t:katr -?2 _75 sEptA~t:sE~k -?2 _76 sEptA~t:siz3 -?2 _77 sEptA~t:sEt -?2 _78 sEptA~t:w^it3 -?2 _79 sEptA~t:nWf ?2 _9X no2nA~t ?2 _91 no2nA~te:W~ -?2 _92 no2nA~t:dYz2 -?2 _93 no2nA~t:tRwAz2 -?2 _94 no2nA~t:katr -?2 _95 no2nA~t:sE~k -?2 _96 no2nA~t:siz3 -?2 _97 no2nA~t:sEt -?2 _98 no2nA~t:w^it3 -?2 _99 no2nA~t:nWf (21 ème) vE~te:yniEm (31 ème) tRA~te:yniEm @@ -288,7 +252,7 @@ hz _!E2rts ibm $abbrev ide $abbrev ip $abbrev -jaws dZ'O2wz +jaws dZ'awz kde $abbrev kg kilogram khz kiloE2rts @@ -324,8 +288,9 @@ xfce iksEfse@ xy $abbrev -dr dOkt Wr $dot $capital +dr dOktWr $dot $capital prof $dot +pr professeur $text *dot $capital @@ -472,7 +437,6 @@ trop $u+ assez $u+ beaucoup $u+ peu $u+ -peu $noun très $u // negative @@ -480,7 +444,6 @@ ne $u $verbf pas $u+ pas $noun plus $u+ -plus $noun guère $u+ jamais $u+ non nO~ $u+ @@ -504,7 +467,8 @@ sommes $u+ $verb sont $u+ $verb fus $u+ $verb -fut $u+ $verb +fut fyt2 $u+ $verb +fût fyt2 $u+ $verb fûmes $u+ $verb fûtes $u+ $verb furent $u+ @@ -526,6 +490,7 @@ eues yz2 $u+ eus yz2 $u+ eut yt2 $u+ $verb +eût yt2 $u+ $verb eûmes $u+ $verb eûtes $u+ $verb eurent yrt2 $u+ @@ -627,14 +592,17 @@ malus malys mapper _^_en mars mars mieux mj'Y $u+ +mrs _^_en ours urs parangon parA~gO~ phallus falys polder pOldEr premier pr@mjer2 -(program files) pr,o2gram||f'ajlz +program _^_en +quit _^_en scanner skaner2 scanner skanWr $noun +sir _^_EN souris suri sus sys sus sy $verb @@ -733,7 +701,7 @@ from frO2m $u+ get _^_en google gu:gWl gnome gnOm -gnu gnu +gnu $abbrev hamburger hA~b@rgWr help _^_en hot _^_en @@ -819,5 +787,5 @@ wallis wAlis futuna futuna zimbabwe zimbabwe - +pest $1 diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 18bf8371..5db3e5d2 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2009-01-14 Michel Such +// Updated: 2009-02-19 Michel Such // // Letter classes: @@ -738,6 +738,7 @@ _) half _^_en _AC) ind (er_ _^_en // finder, reminder ize (X _^_en // realize dr) i (ve _^_en + ram_f) i (le _^_en .group î @@ -902,7 +903,7 @@ _) half _^_en // group o: English section oa (X _^_en // approach, load - oa (CeX _^_en + oa (CerX _^_en oach _^_en old (er_ _^_en // folder, older C) oing (_ _^_en // going @@ -1102,6 +1103,7 @@ _) t (_ te -) t (- t2 _) t' (P2v t Vn) t (_ t2 +A) t (- t2 t (_ peti) t (_ t2 _) th t // thon @@ -1292,6 +1294,8 @@ Vn) t (_ t2 .group x x ks + _) x (A gz // xylophone + xml (_S3 _!iksEmEl e) x (A gz // exagérer exemple L03e) x (A ks // annexe, vexer _ine) x (A gz diff --git a/dictsource/zhy_rules b/dictsource/zhy_rules index 754d4f4f..17e19035 100644 --- a/dictsource/zhy_rules +++ b/dictsource/zhy_rules @@ -136,6 +136,4 @@ 4 4 5 5 6 6 - 7 1 - 8 3 - 9 6 + 7 7 diff --git a/phsource/compile_report b/phsource/compile_report index 2d9d30e3..30f1bc08 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -58 phoneme tables +59 phoneme tables new total base 103 103 base2 24 122 @@ -43,7 +43,7 @@ no 28 129 is 33 129 vi 41 140 - zhy 40 136 + zhy 41 137 zh 66 154 sw 14 112 tr 18 127 @@ -58,6 +58,7 @@ ne 18 157 mr 1 149 om 25 125 + eu 6 124 Data file Used by b/b [b] base @@ -245,8 +246,8 @@ envelope/p_214 [5] vi envelope/p_512 [6] vi envelope/p_fall [2] vi [7] vi - [1] zhy [4] zhy + [7] zhy [21] zh [51] zh [22] zh @@ -255,6 +256,7 @@ envelope/p_fall [2] vi [+] rw envelope/p_fallrise [4] vi envelope/p_level [1] vi + [1] zhy [3] zhy [6] zhy [55] zh @@ -723,6 +725,8 @@ ufric/s [s] base [s] es [s#] pt [z] sq + [s] eu + [z] eu ufric/s_ [s] base [z] base [s2] fi @@ -738,6 +742,8 @@ ufric/s_ [s] base [s2] is [z] sq [s2] om + [s] eu + [z] eu ufric/s! [s] base [s2] fi [s] fr @@ -1012,6 +1018,8 @@ ustop/ts [ts] base2 [dz] sq [dz] hy [ts#] hy + [ts] eu + [tz] eu ustop/ts_ [ts] base2 [ts] de [ts] eo @@ -1024,6 +1032,8 @@ ustop/ts_ [ts] base2 [dz] sq [dz] hy [ts#] hy + [ts] eu + [tz] eu ustop/ts2 [ts] lv [ts] hy ustop/tsh [tS] base @@ -2134,6 +2144,7 @@ vowel/y# [Y:] en [8] nl [Y] ro [oe] zhy + [Y] eu vowel/y## [y#] is vowel/y_2 [y] fr [y"] fr diff --git a/phsource/ph_zh_yue b/phsource/ph_zh_yue index 0a99c8fe..98e3ec2e 100644 --- a/phsource/ph_zh_yue +++ b/phsource/ph_zh_yue @@ -6,7 +6,7 @@ phoneme 1 // tone: high level stress - tone 50 30 envelope/p_fall NULL + tone 50 50 envelope/p_level NULL endphoneme @@ -40,6 +40,12 @@ phoneme 6 // tone: low level endphoneme +phoneme 7 // tone: high fall + stress + tone 50 30 envelope/p_fall NULL +endphoneme + + //==================================================== // Consonants //==================================================== diff --git a/phsource/phonemes b/phsource/phonemes index 507d3515..c9b0b50b 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1361,3 +1361,6 @@ include ph_mathari phonemetable om base include ph_oromo + +phonemetable eu base2 +include ph_basque diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 4768ac8d..b59598e6 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1030,8 +1030,8 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress) -void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, int tonic, int prev_stress) -{//======================================================================================================== +void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress) +{//========================================================================================================= /* Guess stress pattern of word. This is language specific 'dictionary_flags' has bits 0-3 position of stressed vowel (if > 0) @@ -1109,6 +1109,13 @@ void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); + if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2)) + { + // option: don't stress monosyllables except at end-of-clause + vowel_stress[1] = 1; + dictionary_flags |= FLAG_STRESS_END; + } + // heavy or light syllables ix = 1; for(p = phonetic; *p != 0; p++) @@ -1219,8 +1226,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, else { stressed_syllable = 1; - if(stressflags & 0x1) - max_stress = 3; // don't give full stress to monosyllables } // only set the stress if it's not already marked explicitly diff --git a/src/espeak.cpp b/src/espeak.cpp index d47e754e..24884b5c 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -52,7 +52,7 @@ static const char *help_text = "\t Use voice file of this name from espeak-data/voices\n" "-w \n" "\t Write output to this WAV file, rather than speaking it directly\n" -"-b\t Input text is 8-bit encoding\n" +"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n" "-m\t Interpret SSML markup, and ignore other < > tags\n" "-q\t Quiet, don't produce any speech (may be useful with -x)\n" "-x\t Write phoneme mnemonics to stdout\n" @@ -330,6 +330,7 @@ int main (int argc, char **argv) int option_index = 0; int c; int ix; + int value; int flag_stdin = 0; int flag_compile = 0; int filesize = 0; @@ -362,7 +363,7 @@ int main (int argc, char **argv) while(true) { - c = getopt_long (argc, argv, "a:bf:g:hk:l:mp:qs:v:w:xXz", + c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz", long_options, &option_index); /* Detect the end of the options. */ @@ -372,7 +373,11 @@ int main (int argc, char **argv) switch (c) { case 'b': - synth_flags |= espeakCHARS_8BIT; + // input character encoding, 8bit, 16bit, UTF8 + if((sscanf(optarg,"%d",&value) == 1) && (value <= 4)) + synth_flags |= value; + else + synth_flags |= espeakCHARS_8BIT; break; case 'h': diff --git a/src/espeak_command.cpp b/src/espeak_command.cpp index 0abe171c..1b59333c 100644 --- a/src/espeak_command.cpp +++ b/src/espeak_command.cpp @@ -192,7 +192,7 @@ t_espeak_command* create_espeak_mark(const void *text, size_t size, const char * //> //< create_espeak_key, create_espeak_char -t_espeak_command* create_espeak_key(const char *key_name) +t_espeak_command* create_espeak_key(const char *key_name, void *user_data) { ENTER("create_espeak_key"); int a_error=1; @@ -205,7 +205,9 @@ t_espeak_command* create_espeak_key(const char *key_name) a_command->type = ET_KEY; a_command->state = CS_UNDEFINED; - a_command->u.my_key = strdup( key_name); + a_command->u.my_key.user_data = user_data; + a_command->u.my_key.unique_identifier = ++my_current_text_id; + a_command->u.my_key.key_name = strdup( key_name); a_error=0; key_error: @@ -223,7 +225,7 @@ t_espeak_command* create_espeak_key(const char *key_name) return a_command; } -t_espeak_command* create_espeak_char(wchar_t character) +t_espeak_command* create_espeak_char(wchar_t character, void* user_data) { ENTER("create_espeak_char"); int a_error=1; @@ -235,7 +237,9 @@ t_espeak_command* create_espeak_char(wchar_t character) a_command->type = ET_CHAR; a_command->state = CS_UNDEFINED; - a_command->u.my_char = character; + a_command->u.my_char.user_data = user_data; + a_command->u.my_char.unique_identifier = ++my_current_text_id; + a_command->u.my_char.character = character; a_error=0; char_error: @@ -463,9 +467,9 @@ int delete_espeak_command( t_espeak_command* the_command) break; case ET_KEY: - if (the_command->u.my_key) + if (the_command->u.my_key.key_name) { - free((void*)(the_command->u.my_key)); + free((void*)(the_command->u.my_key.key_name)); } break; @@ -562,14 +566,14 @@ void process_espeak_command( t_espeak_command* the_command) case ET_KEY: { - const char* data = the_command->u.my_key; + const char* data = the_command->u.my_key.key_name; sync_espeak_Key(data); } break; case ET_CHAR: { - const wchar_t data = the_command->u.my_char; + const wchar_t data = the_command->u.my_char.character; sync_espeak_Char( data); } break; diff --git a/src/espeak_command.h b/src/espeak_command.h index c3bf35d1..96f42b20 100644 --- a/src/espeak_command.h +++ b/src/espeak_command.h @@ -42,12 +42,28 @@ typedef struct void* user_data; } t_espeak_mark; +typedef struct +{ + unsigned int unique_identifier; + void* user_data; + wchar_t character; +} t_espeak_character; + +typedef struct +{ + unsigned int unique_identifier; + void* user_data; + const char* key_name; +} t_espeak_key; + + typedef struct { unsigned int unique_identifier; void* user_data; } t_espeak_terminated_msg; + typedef struct { espeak_PARAMETER parameter; @@ -71,8 +87,8 @@ typedef struct { t_espeak_text my_text; t_espeak_mark my_mark; - const char* my_key; - wchar_t my_char; + t_espeak_key my_key; + t_espeak_character my_char; t_espeak_parameter my_param; const wchar_t* my_punctuation_list; const char *my_voice_name; @@ -88,9 +104,9 @@ t_espeak_command* create_espeak_mark(const void *text, size_t size, const char * t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, void* user_data); -t_espeak_command* create_espeak_key(const char *key_name); +t_espeak_command* create_espeak_key(const char *key_name, void *user_data); -t_espeak_command* create_espeak_char(wchar_t character); +t_espeak_command* create_espeak_char(wchar_t character, void *user_data); t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value, int relative); diff --git a/src/numbers.cpp b/src/numbers.cpp index e1b62950..a1459960 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -747,6 +747,9 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) +// Numbers + +static char ph_ordinal2[12]; int TranslateRoman(Translator *tr, char *word, char *ph_out) {//===================================================== @@ -905,13 +908,14 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) int found_ordinal = 0; int next_phtype; char string[12]; // for looking up entries in *_list + char ph_ordinal[20]; char ph_tens[50]; char ph_digits[50]; char ph_and[12]; - char ph_ordinal[12]; // is there a special pronunciation for this 2-digit number found = 0; + ph_ordinal[0] = 0; if(control & 4) { @@ -920,6 +924,8 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) } if(control & 2) { + strcpy(ph_ordinal, ph_ordinal2); + sprintf(string,"_%do",value); if((found = Lookup(tr, string, ph_digits)) != 0) { @@ -969,6 +975,14 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) Lookup(tr, string, ph_tens); } + if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL)) + { + // tens not found, (for example) 73 is 60+13 + units = (value % 20); + sprintf(string,"_%dX",(value / 10) & 0xfe); + Lookup(tr, string, ph_tens); + } + ph_digits[0] = 0; if(units > 0) { @@ -997,8 +1011,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) } } - ph_ordinal[0] = 0; - if((control & 2) && (found_ordinal == 0)) + if((control & 2) && (found_ordinal == 0) && (ph_ordinal[0] == 0)) { if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & 0x10))) Lookup(tr, "_ord20", ph_ordinal); @@ -1196,10 +1209,6 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } // end of LookupNum3 -static const char *ordinalstr_en[] = {"th","st","nd","rd",NULL,}; -static const char *ordinalstr_af[] = {"de","ste",NULL,}; -static const char **ordinal_strings[] = {NULL, ordinalstr_en, ordinalstr_af}; - static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, int wflags) {//==================================================================================================== // Number translation with various options @@ -1208,7 +1217,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int n_digits; int value; - int ix; + unsigned int ix; unsigned char c; int suppress_null = 0; int decimal_point = 0; @@ -1221,41 +1230,57 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int decimal_count; int max_decimal_count; int decimal_mode; - int len; - const char *p; - const char **pp; - char string[12]; // for looking up entries in de_list + int hyphen; + char *p; + char string[20]; // for looking up entries in **_list char buf1[100]; char ph_append[50]; char ph_buf[200]; char ph_buf2[50]; + char suffix[20]; static const char str_pause[2] = {phonPAUSE_NOLINK,0}; + *flags = 0; + for(ix=0; isdigit(word[ix]); ix++) ; n_digits = ix; value = this_value = atoi(word); + ph_ordinal2[0] = 0; if((tr->langopts.numbers & 0x10000) && (word[ix] == '.')) { - // ordinal number + // ordinal number is indicated by dot after the number ordinal = 2; word[ix] = ' '; } else - if(tr->langopts.ordinals) { - // ordinal numbers are recognized by letters after the number + // look for an ordinal number suffix after the number ix++; - pp = ordinal_strings[tr->langopts.ordinals]; - while((p = *pp++) != NULL) + hyphen = 0; + p = suffix; + if(word[ix] == '-') { - len = strlen(p); - if((word[ix+len] == ' ') && (memcmp(&word[ix], p, len) == 0)) + *p++ = '-'; + hyphen = 1; + ix += 2; + } + while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1))) + { + *p++ = word[ix++]; + } + *p = 0; + + if(suffix[0] != 0) + { + sprintf(string,"_0%s",suffix); + if(Lookup(tr, string, ph_ordinal2)) { + // this is an ordinal suffix ordinal = 2; - memset(&word[ix], ' ', len); - break; + flags[0] |= FLAG_SKIPWORDS; + dictionary_skipwords = 1 + hyphen; } } } @@ -1462,7 +1487,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. } - *flags = FLAG_FOUND; + *flags |= FLAG_FOUND; prev_value = this_value; return(1); } // end of TranslateNumber_1 diff --git a/src/readclause.cpp b/src/readclause.cpp index a6e2a985..8685a596 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -51,7 +51,7 @@ char *namedata = NULL; static FILE *f_input = NULL; static int ungot_char2 = 0; -char *p_textinput; +unsigned char *p_textinput; wchar_t *p_wchar_input; static int ungot_char; static const char *ungot_word = NULL; @@ -373,13 +373,21 @@ int Eof(void) static int GetC_get(void) {//====================== - int c; + unsigned int c; + unsigned int c2; if(f_input != NULL) { c = fgetc(f_input); if(feof(f_input)) c = ' '; - return(c & 0xff); + + if(option_multibyte == espeakCHARS_16BIT) + { + c2 = fgetc(f_input); + if(feof(f_input)) c2 = 0; + c = c + (c2 << 8); + } + return(c); } if(option_multibyte == espeakCHARS_WCHAR) @@ -402,7 +410,15 @@ static int GetC_get(void) } if(!end_of_input) + { + if(option_multibyte == espeakCHARS_16BIT) + { + c = p_textinput[0] + (p_textinput[1] << 8); + p_textinput += 2; + return(c); + } return(*p_textinput++ & 0xff); + } } return(0); } @@ -440,7 +456,7 @@ static int GetC(void) c1 = GetC_get(); } - if(option_multibyte == espeakCHARS_WCHAR) + if((option_multibyte == espeakCHARS_WCHAR) || (option_multibyte == espeakCHARS_16BIT)) { count_characters++; return(c1); // wchar_t text @@ -1862,8 +1878,8 @@ static MNEM_TAB xml_char_mnemonics[] = { {NULL,-1}}; -int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type) -{//============================================================================================ +int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type) +{//============================================================================================================= /* Find the end of the current clause. Write the clause into buf @@ -2031,49 +2047,62 @@ f_input = f_in; // for GetC etc } } else - if((c1 == '<') && (ssml_ignore_l_angle != '<') && ((c2 == '/') || iswalpha(c2))) + if((c1 == '<') && (ssml_ignore_l_angle != '<')) { - // SSML Tag - n_xml_buf = 0; - c1 = c2; - while(!Eof() && (c1 != '>') && (n_xml_buf < N_XML_BUF)) + if(c2 == '!') { - xml_buf[n_xml_buf++] = c1; - c1 = GetC(); - } - xml_buf[n_xml_buf] = 0; - c2 = ' '; - - buf[ix++] = ' '; - - self_closing = 0; - if(xml_buf[n_xml_buf-1] == '/') - { - // a self-closing tag - xml_buf[n_xml_buf-1] = ' '; - self_closing = 1; - } - - terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing); - - if(terminator != 0) - { - buf[ix] = ' '; - buf[ix++] = 0; - - if(terminator & CLAUSE_BIT_VOICE) + // a comment, ignore until closing '<' + while(!Eof() && (c1 != '>')) { - // a change in voice, write the new voice name to the end of the buf - p = current_voice_id; - while((*p != 0) && (ix < (n_buf-1))) - { - buf[ix++] = *p++; - } - buf[ix++] = 0; + c1 = GetC(); } - return(terminator); + c2 = ' '; + } + else + if((c2 == '/') || iswalpha(c2)) + { + // SSML Tag + n_xml_buf = 0; + c1 = c2; + while(!Eof() && (c1 != '>') && (n_xml_buf < N_XML_BUF)) + { + xml_buf[n_xml_buf++] = c1; + c1 = GetC(); + } + xml_buf[n_xml_buf] = 0; + c2 = ' '; + + buf[ix++] = ' '; + + self_closing = 0; + if(xml_buf[n_xml_buf-1] == '/') + { + // a self-closing tag + xml_buf[n_xml_buf-1] = ' '; + self_closing = 1; + } + + terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing); + + if(terminator != 0) + { + buf[ix] = ' '; + buf[ix++] = 0; + + if(terminator & CLAUSE_BIT_VOICE) + { + // a change in voice, write the new voice name to the end of the buf + p = current_voice_id; + while((*p != 0) && (ix < (n_buf-1))) + { + buf[ix++] = *p++; + } + buf[ix++] = 0; + } + return(terminator); + } + continue; } - continue; } } ssml_ignore_l_angle=0; @@ -2087,6 +2116,7 @@ f_input = f_in; // for GetC etc if((punct = lookupwchar(punct_chars,c1)) == 0) { charix[ix] = count_characters - clause_start_char; + *charix_top = ix; ix += utf8_out(c1,&buf[ix]); terminator = CLAUSE_PERIOD; // line doesn't end in punctuation, assume period } @@ -2342,6 +2372,7 @@ if(option_ssml) parag=1; while(j < ix) charix[j++] = -1; // subsequent bytes of a multibyte character } + *charix_top = ix; if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2))) { diff --git a/src/speak.cpp b/src/speak.cpp index b10cd141..ef91f1fb 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -86,7 +86,7 @@ static const char *help_text = "\t Use voice file of this name from espeak-data/voices\n" "-w \n" "\t Write output to this WAV file, rather than speaking it directly\n" -"-b\t Input text is 8-bit encoding\n" +"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n" "-m\t Interpret SSML markup, and ignore other < > tags\n" "-q\t Quiet, don't produce any speech (may be useful with -x)\n" "-x\t Write phoneme mnemonics to stdout\n" @@ -568,7 +568,7 @@ int main (int argc, char **argv) #else while(true) { - c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXmz", + c = getopt_long (argc, argv, "a:b:f:g:hk:l:p:qs:v:w:xXmz", long_options, &option_index); /* Detect the end of the options. */ @@ -580,7 +580,10 @@ int main (int argc, char **argv) switch (c) { case 'b': + // input character encoding, 8bit, 16bit, UTF8 option_multibyte = espeakCHARS_8BIT; + if((sscanf(optarg2,"%d",&value) == 1) && (value <= 4)) + option_multibyte= value; break; case 'h': diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index 18a9545c..6d775ed0 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -884,7 +884,7 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key) } #ifdef USE_ASYNC - t_espeak_command* c = create_espeak_key( key); + t_espeak_command* c = create_espeak_key( key, NULL); a_error = fifo_add_command(c); if (a_error != EE_OK) { @@ -910,7 +910,7 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) return(EE_OK); } - t_espeak_command* c = create_espeak_char( character); + t_espeak_command* c = create_espeak_char( character, NULL); a_error = fifo_add_command(c); if (a_error != EE_OK) { diff --git a/src/speak_lib.h b/src/speak_lib.h index 50317b1e..2732434a 100644 --- a/src/speak_lib.h +++ b/src/speak_lib.h @@ -27,7 +27,7 @@ #include -#define ESPEAK_API_REVISION 3 +#define ESPEAK_API_REVISION 5 /* Revision 2 Added parameter "options" to eSpeakInitialize() @@ -38,6 +38,8 @@ Revision 3 Revision 4 Added flags parameter to espeak_CompileDictionary() +Revision 5 + Added espeakCHARS_16BIT */ /********************/ /* Initialization */ @@ -227,6 +229,7 @@ int UriCallback(int type, const char *uri, const char *base); #define espeakCHARS_UTF8 1 #define espeakCHARS_8BIT 2 #define espeakCHARS_WCHAR 3 +#define espeakCHARS_16BIT 4 #define espeakSSML 0x10 #define espeakPHONEMES 0x100 diff --git a/src/synthdata.cpp b/src/synthdata.cpp index aee972d6..ed22338f 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.40.07 13.Jan.09"; +const char *version_string = "1.40.09 11.Mar.09"; const int version_phdata = 0x014000; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 06fae962..0e94e2a1 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -263,7 +263,6 @@ Translator *SelectTranslator(const char *name) SetLetterVowel(tr,'y'); // add 'y' to vowels tr->langopts.numbers = 0x8d1 + NUM_ROMAN; - tr->langopts.ordinals = 2; tr->langopts.accents = 1; } break; @@ -345,7 +344,6 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_rule = 0; tr->langopts.numbers = 0x841 + NUM_ROMAN; - tr->langopts.ordinals = 1; tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word } break; @@ -446,6 +444,17 @@ Translator *SelectTranslator(const char *name) break; + case L('e','u'): // basque + { + static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress + static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 }; + SetupTranslator(tr,stress_lengths_eu,stress_amps_eu); + tr->langopts.stress_rule = 1; // ?? second syllable ?? + tr->langopts.numbers = 0x569 + NUM_VIGESIMAL; + } + break; + + case L('f','i'): // Finnish { static const unsigned char stress_amps_fi[8] = {18,16, 22,22, 20,22, 22,22 }; @@ -466,6 +475,7 @@ Translator *SelectTranslator(const char *name) } break; + case L('f','r'): // french { static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 240}; @@ -473,10 +483,10 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->langopts.stress_rule = 3; // stress on final syllable - tr->langopts.stress_flags = 0x0024; // don't use secondary stress + tr->langopts.stress_flags = 0x0024 + 0x1; // don't use secondary stress, monosyllables are unstressed tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables - tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN; + tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL; SetLetterVowel(tr,'y'); } break; @@ -958,7 +968,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_th,stress_amps_th); tr->langopts.stress_rule = 0; // stress on final syllable of a "word" - tr->langopts.stress_flags = 1; // don't automatically set diminished stress (may be set in the intonation module) + tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable // tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) @@ -1024,7 +1034,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); tr->langopts.stress_rule = 3; // stress on final syllable of a "word" - tr->langopts.stress_flags = 1; // don't automatically set diminished stress (may be set in the intonation module) + tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) tr->langopts.vowel_pause = 0; tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable diff --git a/src/translate.cpp b/src/translate.cpp index b2d6fc84..dc2559cd 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -86,7 +86,7 @@ PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes wchar_t option_punctlist[N_PUNCTLIST]={0}; char ctrl_embedded = '\001'; // to allow an alternative CTRL for embedded commands -int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar +int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar, 4=16bit // these are overridden by defaults set in the "speak" file int option_linelength = 0; @@ -1950,7 +1950,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t int finished; int single_quoted; int phoneme_mode = 0; - int dict_flags; // returned from dictionary lookup + int dict_flags = 0; // returned from dictionary lookup int word_flags; // set here int next_word_flags; int embedded_count = 0; @@ -1962,8 +1962,9 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t char *p; int j, k; int n_digits; + int charix_top; - short charix[N_TR_SOURCE+1]; + short charix[N_TR_SOURCE+4]; WORD_TAB words[N_CLAUSE_WORDS]; int word_count=0; // index into words @@ -1973,7 +1974,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t int tone; int tone2; - p_textinput = (char *)vp_input; + p_textinput = (unsigned char *)vp_input; p_wchar_input = (wchar_t *)vp_input; embedded_ix = 0; @@ -1987,9 +1988,11 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t for(ix=0; ix> 12) & 0xf; @@ -2454,18 +2457,16 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre if(IsSpace(c)) { - if(space_inserted) - { - source_index = prev_source_index; // rewind to the previous character - char_inserted = 0; - space_inserted = 0; - } - if(prev_out == ' ') { continue; // multiple spaces } + if(space_inserted) + { + words[word_count].length = source_index - words[word_count].sourceix; + } + // end of 'word' sbuf[ix++] = ' '; @@ -2516,6 +2517,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre all_upper_case = FLAG_ALL_UPPER; syllable_marked = 0; } + + if(space_inserted) + { + source_index = prev_source_index; // rewind to the previous character + char_inserted = 0; + space_inserted = 0; + } } else { @@ -2644,12 +2652,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre // include the next few characters, in case there are an ordinal indicator pn[0] = ' '; - memcpy(pn+1, pw, 5); - pn[5] = 0; + memcpy(pn+1, pw, 8); + pn[8] = 0; for(pw = &number_buf[1]; pw < pn;) { - TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 ); + dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 ); while(*pw++ != ' '); words[ix].pre_pause = 0; words[ix].flags = 0; @@ -2679,11 +2687,6 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } } - if(dict_flags & FLAG_SKIPWORDS) - { - ix += dictionary_skipwords; // dictionary indicates skip next word(s) - } - if((dict_flags & FLAG_DOT) && (ix == word_count-1) && (terminator == CLAUSE_PERIOD)) { // probably an abbreviation such as Mr. or B. rather than end of sentence @@ -2691,6 +2694,11 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre tone = 4; } } + + if(dict_flags & FLAG_SKIPWORDS) + { + ix += dictionary_skipwords; // dictionary indicates skip next word(s) + } } for(ix=0; ix<2; ix++) diff --git a/src/translate.h b/src/translate.h index 9abb17eb..2ae58d8a 100755 --- a/src/translate.h +++ b/src/translate.h @@ -301,7 +301,7 @@ typedef struct { int vowel_pause; int stress_rule; // 1=first syllable, 2=penultimate, 3=last -// bit0=don't stress monosyllables, +// bit0=don't stress monosyllables, except at end of clause // bit1=don't set diminished stress, // bit2=mark unstressed final syllables as diminished // bit4=don't allow secondary stress on last syllable @@ -328,6 +328,7 @@ typedef struct { #define NUM_ROMAN_UC 0x40000 #define NUM_NOPAUSE 0x80000 #define NUM_ROMAN_AFTER 0x200000 +#define NUM_VIGESIMAL 0x400000 // bits0-1=which numbers routine to use. // bit2= thousands separator must be space @@ -348,6 +349,7 @@ typedef struct { // bit19=don't add pause after a number // bit20='and' before hundreds // bit21= say "roman" after the number, not before + // bit22= vigesimal number, if tens are not found int numbers; #define NUM2_100000 0x800 // numbers for 100,000 and 10,000,000 @@ -364,7 +366,6 @@ typedef struct { int max_roman; int thousands_sep; int decimal_sep; - int ordinals; // bit 0, accent name before the letter name, bit 1 "capital" after letter name int accents; @@ -514,7 +515,7 @@ extern Translator *translator2; extern const unsigned short *charsets[N_CHARSETS]; extern char dictionary_name[40]; extern char ctrl_embedded; // to allow an alternative CTRL for embedded commands -extern char *p_textinput; +extern unsigned char *p_textinput; extern wchar_t *p_wchar_input; extern int dictionary_skipwords; @@ -568,11 +569,11 @@ void CalcPitches(Translator *tr, int clause_tone); int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); int Unpronouncable(Translator *tr, char *word); -void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, int tonic, int prev_stress); +void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress); int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); -int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type); +int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type); void SetVoiceStack(espeak_VOICE *v);