| @@ -127,6 +127,7 @@ _, k0m@ | |||
| _- h,aIf@n | |||
| ?3 _- daS | |||
| _. d0t | |||
| ?3_. pi@rI@d | |||
| _: koUl@n | |||
| _; sEmIk'oUl@n | |||
| _< lEsDan | |||
| @@ -3679,8 +3679,8 @@ | |||
| legged lEgId | |||
| // Ab) le @L | |||
| C) le (ton_ @L | |||
| Ab) ler (_ l@ | |||
| Ab) le (C_ l@ | |||
| Ab) ler (_ l3 | |||
| Ab) le (B_ l@ | |||
| Ab) led (_ @Ld | |||
| &) lem (ent @Lm | |||
| &p) lem (ent lIm | |||
| @@ -13,214 +13,215 @@ | |||
| .group a | |||
| _) a(_ a | |||
| a a | |||
| aj aI | |||
| aŭ aU | |||
| _) a (_ a | |||
| a a | |||
| aj aI | |||
| aŭ aU | |||
| .group b | |||
| _) b(_ bo | |||
| b b | |||
| _) b (_ bo | |||
| b b | |||
| .group c | |||
| _) c(_ tso | |||
| _) ch(_ tSo | |||
| c ts | |||
| ch (K tS // foreign words | |||
| K) ch tS // foreign words | |||
| _) c (_ tso | |||
| _) ch (_ tSo | |||
| c ts | |||
| ch (K tS // foreign words | |||
| K) ch tS // foreign words | |||
| .group d | |||
| _) d(_ do | |||
| d d | |||
| _) d (_ do | |||
| d d | |||
| _) d (-ro dokt'o | |||
| _) d (-rino d,okto | |||
| _) d (-ro dokt'o | |||
| _) d (-rino d,okto | |||
| .group e | |||
| _) e(_ e | |||
| e e | |||
| ej eI | |||
| eŭ eU | |||
| _) e (_ e | |||
| e e | |||
| ej eI | |||
| eŭ eU | |||
| .group f | |||
| _) f(_ fo | |||
| f f | |||
| _) f (_ fo | |||
| f f | |||
| _) f (-ino fR%aUl | |||
| _) f (-lo fRaU | |||
| _) f (-ino fR%aUl | |||
| _) f (-lo fRaU | |||
| .group g | |||
| _) g(_ go | |||
| g g | |||
| gh (K dZ | |||
| _) g (_ go | |||
| g g | |||
| gh (K dZ | |||
| .group h | |||
| _) h(_ ho | |||
| h h | |||
| hh x | |||
| _) h (_ ho | |||
| h h | |||
| hh x | |||
| .group i | |||
| _) i(_ i | |||
| i i | |||
| _) i (_ i | |||
| i i | |||
| .group j | |||
| _) j(_ jo | |||
| j j | |||
| jh (C Z | |||
| _) j (_ jo | |||
| j j | |||
| jh (C Z | |||
| .group k | |||
| _) k(_ ko | |||
| k k | |||
| _) k (_ ko | |||
| k k | |||
| _) k (-do kamaR'a | |||
| _) k (-dino k'amaRa | |||
| _) k (-ino k'amaRad | |||
| _) k (-do kamaR'a | |||
| _) k (-dino k'amaRa | |||
| _) k (-ino k'amaRad | |||
| .group l | |||
| _) l(_ lo | |||
| l l | |||
| ll (_ l | |||
| _) l (_ lo | |||
| l l | |||
| ll (_ l | |||
| .group m | |||
| _) m(_ mo | |||
| m m | |||
| _) m (_ mo | |||
| m m | |||
| .group n | |||
| _) n(_ no | |||
| n n | |||
| n (_S1 n | |||
| _) n (_ no | |||
| n n | |||
| n (_S1 n | |||
| _) n (-ro num'e | |||
| _) n (-ro num'e | |||
| .group o | |||
| _) o(_ o | |||
| o o | |||
| oj oI | |||
| -) o (_ %o | |||
| -) oj (_ %oI | |||
| -) on (_ %on | |||
| -X) o (_ %o // d-ro etc | |||
| -X) oj (_ %oI | |||
| -X) on (_ %on | |||
| _) o (_ o | |||
| o o | |||
| oj oI | |||
| -) o (_ %o | |||
| -) oj (_ %oI | |||
| -) on (_ %on | |||
| -X) o (_ %o // d-ro etc | |||
| -X) oj (_ %oI | |||
| -X) on (_ %on | |||
| .group p | |||
| _) p(_ po | |||
| p p | |||
| ph (K f // foreign words | |||
| K) ph f // foreign words | |||
| _) p (_ po | |||
| p p | |||
| ph (K f // foreign words | |||
| K) ph f // foreign words | |||
| .group q | |||
| _) q(_ kwo | |||
| q k | |||
| qu kv | |||
| _) q (_ kwo | |||
| q k | |||
| qu kv | |||
| .group r | |||
| _) r(_ Ro | |||
| r R | |||
| A) r (A R | |||
| K) r (A @-* | |||
| rr RR | |||
| _) r (_ Ro | |||
| r R | |||
| A) r (A R | |||
| K) r (A @-* | |||
| rr RR | |||
| .group s | |||
| _) s(_ so | |||
| _) sh(_ So | |||
| s s | |||
| sh (K S // foreign words | |||
| K) sh S // foreign words | |||
| _) s (_ so | |||
| _) sh (_ So | |||
| s s | |||
| sh (K S // foreign words | |||
| K) sh S // foreign words | |||
| _) s (-ino s,injoR | |||
| _) s (-ro sinj'o | |||
| _) s (-ino s,injoR | |||
| _) s (-ro sinj'o | |||
| _) s (-ano s'am,ide | |||
| _) s (-anino s'am,ide | |||
| _) s (-ta_ s'ank | |||
| _) s (-ano s'am,ide | |||
| _) s (-anino s'am,ide | |||
| _) s (-ta_ s'ank | |||
| .group t | |||
| _) t(_ to | |||
| t t | |||
| th (K T // foreign words | |||
| K) th T // foreign words | |||
| _) t (_ to | |||
| t t | |||
| th (K T // foreign words | |||
| K) th T // foreign words | |||
| -) ta (_ t%a // s-ta = sankta | |||
| -) ta (_ t%a // s-ta = sankta | |||
| .group u | |||
| _) u(_ u | |||
| u u | |||
| uj uI | |||
| _) u (_ u | |||
| u u | |||
| uj uI | |||
| .group v | |||
| _) v(_ vo | |||
| v v | |||
| _) v (_ vo | |||
| v v | |||
| .group w | |||
| _) w(_ du'oblav,o | |||
| w w | |||
| K) wh w // foreign words | |||
| _) w (_ du'oblav,o | |||
| w w | |||
| K) wh w // foreign words | |||
| .group x | |||
| _) x(_ ikso | |||
| x ks | |||
| _) x z // foreign words | |||
| _) x (_ ikso | |||
| x ks | |||
| _) x z // foreign words | |||
| .group y | |||
| _) y(_ ipsilono | |||
| y j | |||
| K) y (K i | |||
| _) y (_ ipsilono | |||
| y j | |||
| K) y (K i | |||
| .group z | |||
| _) z(_ zo | |||
| z z | |||
| _) z (_ zo | |||
| z z | |||
| .group | |||
| _) ĉ (_ tSo | |||
| ĉ tS | |||
| _) ĉ (_ tSo | |||
| ĉ tS | |||
| _) ĝ (_ dZo | |||
| ĝ dZ | |||
| _) ĝ (_ dZo | |||
| ĝ dZ | |||
| _) ĥ (_ xo | |||
| ĥ x | |||
| _) ĥ (_ xo | |||
| ĥ x | |||
| _) ĵ (_ Zo | |||
| ĵ Z | |||
| _) ĵ (_ Zo | |||
| ĵ Z | |||
| _) ŝ (_ So | |||
| ŝ S | |||
| _) ŝ (_ So | |||
| ŝ S | |||
| _) ŭ (_ wo | |||
| ŭ w | |||
| _) ŭ (_ wo | |||
| ŭ w | |||
| C) ' (_ = // word end in apostrophe, stress the last vowel | |||
| ' | |||
| + plus_ | |||
| _) ++ (_ plusplus | |||
| ' | |||
| + plus_ | |||
| _) ++ (_ plusplus | |||
| . punkto | |||
| . (. _: | |||
| \.) . | |||
| . punkto | |||
| . (. _: | |||
| \.) . | |||
| £ pundo | |||
| £ (_D _pundoI_: | |||
| __) - (_D minus_ | |||
| D_) - (_D st@-*ek'eto_ | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| - minus_ | |||
| - (_a | |||
| $ dolaRo | |||
| $ (_D _dolaRoI_: | |||
| £ pundo | |||
| £ (_D _pundoI_: | |||
| __) - (_D minus_ | |||
| D_) - (_D st@-*ek'eto_ | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| - minus_ | |||
| - (_a | |||
| $ dolaRo | |||
| $ (_D _dolaRoI_: | |||
| @@ -0,0 +1,245 @@ | |||
| // Irish Gaeilge dictionary | |||
| // written by Ronan McGuirk | |||
| // January 2013 | |||
| // version 2.5 | |||
| // This file is UTF8 encoded | |||
| // letters | |||
| // letter names, as they are spoken as a single character in text | |||
| // precede by _ to distinguish from pronunciation as a language word | |||
| _a eI | |||
| b bi: | |||
| c si: | |||
| d di: | |||
| e i: | |||
| f Ef | |||
| g dZi: | |||
| h eItS | |||
| _i aI | |||
| j dZeI | |||
| k keI | |||
| l El | |||
| m Em | |||
| n En | |||
| _o oU | |||
| p pi: | |||
| q kju: | |||
| r ar | |||
| s Es | |||
| t ti: | |||
| u ju: | |||
| v vi: | |||
| w d'O#b@lju: | |||
| x Eks | |||
| y waI | |||
| z zEd | |||
| _á eI||f0d[@ | |||
| _é i:||f0d[@ | |||
| _ó o:||f0d[@ | |||
| _ú ju:||f0d[@ | |||
| _#32 spA:s | |||
| // accent names | |||
| // names of symbols | |||
| ª_. pO#nk | |||
| _, k0m@ | |||
| _; semI | |||
| _: ko:l0n | |||
| _! Skre:@x | |||
| _? kESt | |||
| _' u:sx0m@ | |||
| . pO#nk | |||
| % f@i:nge:@d[ | |||
| // numbers | |||
| _0 @nA:idZ | |||
| _1 @h'e:n | |||
| _2 @d['o: | |||
| _3 @tSR'i: | |||
| _4 @k'ah@r | |||
| _5 @ku:Ig | |||
| _6 @S'e: | |||
| _7 @S0xt[ | |||
| _8 @h'0xt[ | |||
| _9 @n@@'i: | |||
| _1X @dZ'E | |||
| _11 e:@nde:@g | |||
| _12 d[o:je:@g | |||
| _13 tr'i:de:@g | |||
| _14 kah@rde:@g | |||
| _15 ku:igde:@g | |||
| _16 Se:de:@g | |||
| _17 S0xtde:@g | |||
| _18 O#xtde:@g | |||
| _19 ni:de:@g | |||
| _20 fICe | |||
| _2X fiCE | |||
| _3X trO#x@ | |||
| _31 trO#x@he:@n | |||
| _40 d[0C@d | |||
| _4X d[0C@d@ | |||
| _41 d[0C@dahe:@n | |||
| _5X k@e:@g@ | |||
| _51 k@e:@g@he:@n | |||
| _6X Sask@ | |||
| _61 Sask@he:@n | |||
| _7X S0xto: | |||
| _71 S0xt[o:he:@n | |||
| _8X O#Xto: | |||
| _81 O#xt[o:he:@n | |||
| _9X no:x@ | |||
| _91 no:x@he:@n | |||
| _0C ke:@d[ | |||
| _1C0 ke:@d[ // exactly one hundred | |||
| _1C ke:@d[ | |||
| _101 ke:@d[@he:@n | |||
| _2C ga:Ce:@d[ | |||
| _3C tri:Ce:@d[ | |||
| _4C kEr@ke:@d[ | |||
| _5C ku:igce:@d[ | |||
| _6C Se:ke:@d[ | |||
| _7C S0xtge:@d[ | |||
| _8C O#xtg'e:@d[ | |||
| _9C ni:ge:@d[ | |||
| _0M1 mi:lE | |||
| _1M1 m'i:lE | |||
| _2M1 gA:vi:lE | |||
| _2001 gA:vi:lEs@he:@n | |||
| _2002 gA:vi:lEs@d['o: | |||
| _2003 gA:vi:lEs@tr'i: | |||
| _2004 gA:vi:lEs@kah@r | |||
| _2005 gA:vi:lEs@ku:ig | |||
| _0M2 mIlu:n | |||
| _1M2 'milu:n | |||
| _2M2 d[A:vIlu:n | |||
| _3M2 tri:vilu:n | |||
| _4M2 kEr@milu:n | |||
| _0M4 _bilu:n | |||
| _1M4 'bilu:n | |||
| _2M4 gA:vilu:n | |||
| _3M4 tri:vilu:n | |||
| _4M4 kEr@vilu:n | |||
| _0and Is | |||
| _dpt pO#nk | |||
| //_roman Rom'ano | |||
| //delete | |||
| // words | |||
| a @ | |||
| abhaile @w'0l;E | |||
| ach 0x $u | |||
| ag Eg $verbf $u | |||
| anall @n'aUl | |||
| aige @g'E | |||
| air Er | |||
| acu 0k'U | |||
| ar Er $u | |||
| arsa @rs@ | |||
| agaibh 0g@Iv | |||
| agus 0g@s | |||
| amach @m'0x | |||
| amárach @m'A:r@x | |||
| amuigh @mu1'I | |||
| amháin @w'A:in | |||
| am aUm | |||
| an @n | |||
| anois @nIS | |||
| anonn @naUn | |||
| ann aUn | |||
| anseo @nS'O | |||
| aodh e: | |||
| aodha e: | |||
| aon e:@n | |||
| (ar ais) Er'aS | |||
| arís @r'i:S | |||
| as 0s | |||
| atá @t['A: $u | |||
| baill bu1'i:l | |||
| bhaill vu1'i:l | |||
| beidh bEg | |||
| bhfuil w'Il | |||
| bhuel w'El | |||
| ceithre kEr@ | |||
| cathair k'0h@r | |||
| chathair x'0h@r | |||
| clainne kl'InE | |||
| chlainne xl'InE | |||
| chun xUn $u | |||
| crainn kri:n | |||
| de dE $u+ | |||
| des dEs $u | |||
| dhaoibh ji:v | |||
| di dI $u+ | |||
| do dO# $u | |||
| domhnach d[aUn@x | |||
| domhnaigh d[aUnig | |||
| eile 'El@ | |||
| euro ju:ro: | |||
| faic f@ak | |||
| faide f@Id[E | |||
| faigh faIg | |||
| feadh fag | |||
| fear f'ar | |||
| gcathair g0h@r | |||
| gan g0n $u | |||
| gheall jaUl | |||
| (go raibh maith) g@r@m0h | |||
| (go raibh míle) g@r@mi:l@ | |||
| gur gUr $u | |||
| i I $u | |||
| in In $u | |||
| ina In@ $u | |||
| ins Ins $u | |||
| inniu Inj'u:v | |||
| irish _^_EN | |||
| is 'Is $u | |||
| (is ea) IS'a | |||
| isteach IstS'0x | |||
| iúl ju:l | |||
| laoghaire li:@r@ | |||
| le lE $u | |||
| leí le:i: | |||
| (maigh eo) mu1'i:||'o: | |||
| (muigheo) mu1'i:||'o: | |||
| mhuigh vu1'i: | |||
| (mhaigh eo) vu1'i:||'o: | |||
| maith m'0 | |||
| mhaith w'0 | |||
| mbeadh m;O#X | |||
| mo mO# $u | |||
| mura mUr@ $u | |||
| ná nA: $u | |||
| nigh ni: | |||
| níorbh ni:rv | |||
| nó nu: $u | |||
| nollag n@l@g | |||
| nolaig nO#lig | |||
| Oirghiall 'Err@X@l | |||
| orthu O#rhu | |||
| os o:s | |||
| rabh raU | |||
| raibh rEv | |||
| réamhrá r'e:@vr,a: | |||
| réidh re: | |||
| samhain saUIn | |||
| san s@n | |||
| seo S@_ | |||
| tabhair t'u:@r | |||
| (tiocfaidh ár lá) tSO#ki:|'A:r|l'A: | |||
| // temporary fix for NO#DA punctuation | |||
| dot pO#nk | |||
| comma k0m@ | |||
| dash flESki:n | |||
| tick u:@sx0m@ | |||
| space spA:s | |||
| @@ -0,0 +1,430 @@ | |||
| // translation rules for Irish Gaeilge | |||
| // This file is UTF-8 encoded | |||
| // written by Ronan McGuirk January 2013 | |||
| // Version 2.5B | |||
| .L01 e i é í // slender vowels | |||
| .L02 c ch d g gh n s // following ea gets ; sounds | |||
| .L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||
| .L04 b bh mb // for words like beag | |||
| .L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||
| .L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
| .L07 b c g ch bh gh mb | |||
| .L08 lc ll nt bhse // for words like cailc | |||
| .L09 cl cr chr f | |||
| .L10 c ch p ph gl ghl | |||
| .L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai | |||
| .L12 á é ó eo ua // when followed by i | |||
| .L13 oc omb | |||
| .L14 río dún gnío // followed with mh | |||
| .L15 c ch f m d dh g gc gh mh // aoi following | |||
| .L16 b c bh ch gr ghr // for inn word ending | |||
| .L17 l le li niste nn | |||
| .L18 n nt nte neann neadh ntear nim nfear nfinn | |||
| .L19 na nea ra rea la llea arga // word endings with silent dh | |||
| .L20 eo eoir eá eabh io iu iú // slender m | |||
| .L21 ll nn ndán nntán | |||
| .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||
| .L23 ea eo i | |||
| .L24 b mb bh g gh p ph bp m mh | |||
| .group a | |||
| a 0# | |||
| a (_ @ | |||
| adh (a aI // words like radharc | |||
| adh (C aI | |||
| abht aU#t[ | |||
| amhr aUr // words like amhras | |||
| K) amhl aUl | |||
| abhra aUr@ // words like slabhra | |||
| aghaidh aIg | |||
| t) abhair u:@r | |||
| th) abhair u:@r | |||
| t) abhar u:@r | |||
| th) abhar u:@r | |||
| _) an (sL01 @n | |||
| _) an (- 0n // an prefix | |||
| é) a @ // words like féach | |||
| X) a (nn_ aU# | |||
| X) a (ll_ aU# | |||
| abha aU@ | |||
| am (pla aUm | |||
| ama(_ aU#m@ | |||
| athair 'ah@r | |||
| _) amh aU | |||
| agha aI@ | |||
| agh (d aI | |||
| agh (s aI | |||
| _) ath 0h | |||
| ai (m_ @ | |||
| aí i: | |||
| aoi @i: | |||
| _) aoi i: | |||
| ath) aoi (r 'i:@ | |||
| r) aoi (nín 'e:@ | |||
| aoicht (_ 'i:@xt[ | |||
| C) ao (C @e:@ | |||
| _L24) ao (C w'e:@ | |||
| C) ao (th_ @e: | |||
| b) ao (++ we:@ | |||
| b) ao (th_++ we: | |||
| ao @e | |||
| _) ao e: | |||
| ae e: | |||
| amhna (_ aUn@ | |||
| .group á | |||
| á A: | |||
| @) á ,A: | |||
| ádh A: | |||
| áthair (_ A:h@r | |||
| áthar A:h@r | |||
| ái (p A: | |||
| áinig A:nIg | |||
| ái 'A:i | |||
| .group ai | |||
| ai a# | |||
| L04) ai (L17 0# | |||
| aile (_ '0l;E // words like baile | |||
| Xc) ai (l '0# | |||
| ch) ai (l '0# | |||
| m) ai (n 0# | |||
| c) ai (th 0# | |||
| ch) ai (th 0# | |||
| ai (d 0# | |||
| p) ai (l 0# | |||
| @) ai (L11_ I | |||
| ai (L08+ aI# | |||
| c) ai (l_ I | |||
| ai (msi 'aI // words like aimsir | |||
| _L04) ai (L18_++ u1'I//words like bain | |||
| c) ai (t_ u1'I | |||
| s) ai (bh E | |||
| aighre aIr@ | |||
| X) aigh 'aI | |||
| aigh aI# L04) aill (_ wi:l | |||
| aing (_ Ing | |||
| .group b | |||
| b b // broad | |||
| L01) b b; // slender | |||
| b (L22 bj //slender | |||
| bh v // broad | |||
| bh (_ vv | |||
| bh (L22 vj // slender | |||
| L01) bh v | |||
| _) bhf v /urú broad | |||
| _) bhf (L22 v; // urú slender | |||
| _) bp b //urú broad | |||
| _) bp (L01 b; // urú slender | |||
| a) bh (a U// for example cabhair | |||
| ear) bha u: // words like Cearbhall | |||
| bhfaigh v'aI | |||
| .group c | |||
| c k | |||
| c (L01 k; // slender | |||
| ch x | |||
| ch (L01 C; | |||
| ch (é+ C; | |||
| ch (ei+ x; | |||
| _) cabhr k'aUr | |||
| _) chabhr x'aUr | |||
| .group d | |||
| d d[ // broad | |||
| L01) d dZ // slender | |||
| d (L22 dZ //slender | |||
| d (L01 d; //slender | |||
| i) d (i dZ | |||
| dh Q // broad | |||
| dh (ui Q //broad | |||
| dh (ao Q //broad | |||
| dh (L01 j // slender | |||
| _) dt d[ //broad urú | |||
| _) dt (L01 dZ // slender urú | |||
| _) d' (@P2 d | |||
| i) dh (_ g | |||
| a) dh (_ X | |||
| o) dh (_ X | |||
| L19) dh (_ // silent dh at wrd end | |||
| Va) dh (_+ | |||
| deartháir dr@h'A:r | |||
| dheartháir gr@h'A:r | |||
| deirfiúr d;r@f'u:r | |||
| dheirfiúr g;r@f'u:r | |||
| .group e | |||
| e E# | |||
| eá A: | |||
| ei E | |||
| eidh (C aI | |||
| r) ei (m aI | |||
| eighea aI | |||
| eighea aI | |||
| eigh aI | |||
| eo o: | |||
| eogh o: | |||
| d) eo (ch O# | |||
| _) eo (ch O# | |||
| s) eo (_ @ | |||
| .group é | |||
| é 'e: | |||
| éi 'e: | |||
| _) éi (rig aI // words like éirigh | |||
| _) éi (rí aI // words like éirí | |||
| _) éireoidh aIro:Ig | |||
| éacs e:@ks | |||
| .group ea | |||
| ea a# | |||
| X) ea (L21_ aU | |||
| ea (ltaine aU | |||
| g) ea (ll aU | |||
| X) ea (ch 0 | |||
| _L04) ea (g @ | |||
| _L04) ea (dh_ @ | |||
| _L04) eagn @gn | |||
| L04) eaga (_ @g@ | |||
| eaghl aIl | |||
| eabhra aUr@ // words like Feabhra | |||
| eanbhean 'an@v,an | |||
| eadhb aIb | |||
| .group f | |||
| f f // broad | |||
| f (L22 f; // slender | |||
| fh //silent | |||
| fh (éin_ h | |||
| fh (L22 ; //slender | |||
| @) f (L06_ h | |||
| .group g | |||
| g g // broad | |||
| g (L01 g; // slender | |||
| _) gh Q" | |||
| _) gh (L01 Q"j | |||
| _) gc g // urú broad | |||
| _) gc (L01 g; // urú slender | |||
| i) gh (_ g | |||
| @C) gh (@ X | |||
| _) gn g@n | |||
| gh(n X@ | |||
| gheobh j'o: | |||
| gabh gaU | |||
| .group h | |||
| h h // silent | |||
| .group i | |||
| i I | |||
| _) i I | |||
| ia i@ | |||
| ia (tha i: | |||
| io O# | |||
| _) io (nadh u:// words like ionadh | |||
| _pr) io (n u: | |||
| L16) inn (_ i:n | |||
| iai i:i | |||
| impeall i:mp@l | |||
| io (s I //words like fios and liosta | |||
| L12) i i // non syllabic short i after long vowel | |||
| iú u: | |||
| m) i (d_ i: // verb ending | |||
| .group k | |||
| k k | |||
| .group l | |||
| l l // broad | |||
| L01) l ( l; // slender | |||
| l (L23 l; //slender | |||
| ll l | |||
| ll (L23 l; | |||
| l (g l@ | |||
| l (b l@ | |||
| .group m | |||
| m m // broad | |||
| m (L20 m; //slender | |||
| mh v | |||
| mh (L20 v; // slender | |||
| _) mb m //urú | |||
| _) mb (L22 m; // urú slender | |||
| _) m (n m@// words like mná | |||
| L14) mh v | |||
| _) mh (n v@ | |||
| léir) mheas vas | |||
| r) m @m // words like gorm | |||
| .group n | |||
| n n // broad | |||
| n (L01 n; // slender | |||
| _) nd n // urú | |||
| _) nd (L01 n; // urú slender | |||
| nn n | |||
| nn (L01 n; // slender | |||
| n (b n@ | |||
| n (m n@ | |||
| n (bh n@ n(ch n@ | |||
| c) n @n | |||
| ch) n @n | |||
| .group o | |||
| o O# | |||
| _) o 'O | |||
| C) o (cht_ 'O | |||
| orn (_ 'Or@n | |||
| _C) omh o: | |||
| _CC) omh o: | |||
| omha o:@ | |||
| omhai o:@ | |||
| o (ll_ aU | |||
| C) o (nn_ aU | |||
| r) o (nn_ O# | |||
| C) ogh aU | |||
| omhan(_ aU@n | |||
| omhain (_ aUIn | |||
| odha aU | |||
| opaic @pIk | |||
| C) odh (_ o: | |||
| odl (a O#l | |||
| oí i: | |||
| .group ó | |||
| ó 'o: | |||
| ómhai o:@ | |||
| .group oi | |||
| oi O | |||
| _L15) oi (+ @'I | |||
| _) oi (b I | |||
| oi (de I | |||
| h) oi (b I | |||
| _) oi (r I | |||
| r) oi I | |||
| l) oi (n I | |||
| f) oi (lC aI | |||
| l) oi (g I | |||
| fh) oi (lC aI | |||
| s) oi (ls aI# | |||
| c) oi (c aI# | |||
| oi (nnío @ | |||
| oi (mis @ | |||
| ois (++ O#S | |||
| oill w'i:l | |||
| _) oi (leá 'I | |||
| oidh aI | |||
| oir (_ 'ERR | |||
| oigh (ea aI | |||
| .group p | |||
| p p // broad | |||
| ph f //broad | |||
| p (L22 p; //slender | |||
| ph (L20 f; // slender | |||
| .group q | |||
| q k | |||
| qu k | |||
| .group r | |||
| r r // broad | |||
| L01) r R // slender | |||
| _) r (L01 R | |||
| L12i) r (e_ Z | |||
| L12i) r (t_ Z | |||
| rr R | |||
| rg r@g | |||
| L01) rg R@g // slender | |||
| r (bh r@ | |||
| ríomh ri:@v | |||
| s) r (A R | |||
| _) ramh raU | |||
| .group s | |||
| s s // broad | |||
| L01) s S // slender | |||
| s (L01 S // slender | |||
| s (cL01 S | |||
| s (CCL01 S // slender | |||
| s (pCé s // broad | |||
| sh h | |||
| sh (CL01 h | |||
| sh (L01 h; | |||
| s (lL01 S | |||
| .group t | |||
| t t[ // broad | |||
| L01) t c // slender | |||
| t (í++n tS //slender | |||
| t (eo++ tS | |||
| t (L01 c // slender | |||
| L01C) t tS //slender after consonant | |||
| t (CL01 tS // slender with following consonant before vowels | |||
| th h | |||
| th (L01 h; | |||
| L01C) th h | |||
| _) ts t[ //eclipsis broad | |||
| _) ts (L01 t; // eclipsis slender | |||
| L01) th h | |||
| taine (_ t[In%E | |||
| ao) th (_ | |||
| thne (_ h@nE | |||
| A) th (_ // silent th at word end | |||
| .group u | |||
| u U# | |||
| ua u@ | |||
| uai u@ | |||
| uai (g ui | |||
| uai (d ui | |||
| uá u:'A: | |||
| ui I | |||
| uinn (_ 'i:n | |||
| uinti U#'i:ntI | |||
| _b) uí wi: | |||
| _bh) uí wi: | |||
| g) uí wi: | |||
| umh u: | |||
| L03) ui @I | |||
| _d) u (l_ O# | |||
| g) ui (gh_ @i: | |||
| gh) ui (gh_ @i: | |||
| uí i: | |||
| uachai 'ux@ | |||
| .group ú | |||
| ú u: | |||
| únmh u:nv | |||
| úi (r u: | |||
| .group j | |||
| j dZ | |||
| .group q | |||
| q k | |||
| qu (A kw | |||
| .group v | |||
| v v | |||
| .group w | |||
| w w | |||
| .group x | |||
| x ks | |||
| _) x z | |||
| .group y | |||
| y (A j | |||
| _A) y j | |||
| y i | |||
| .group z | |||
| z z | |||
| .group | |||
| í 'i: | |||
| @@ -173,6 +173,8 @@ nyargon) c (cs ts | |||
| udvaron) c (ser ts | |||
| pere) c (cs ts | |||
| licen) ccs ts|tS | |||
| nyol) c (csat ts | |||
| pokró) c (sá ts | |||
| .group ch | |||
| anar) ch (i h | |||
| @@ -452,6 +454,11 @@ szomszé) d (sor d | |||
| herná) d (sz d | |||
| szaba) d (szent d | |||
| for) d (jános d | |||
| egye) d (szám d | |||
| shetlan) d (szige d | |||
| szaba) d (szem d | |||
| _tren) dsz (e d|s | |||
| vakon) d (sz d | |||
| .group dz | |||
| fogó) dz (kod ts | |||
| @@ -502,6 +509,7 @@ kapáló) dz z | |||
| gyűrű) dz (ik z | |||
| burkoló) dz z | |||
| .group e | |||
| e E | |||
| 000_-) el (_ REl // double R for 1000-el | |||
| @@ -630,6 +638,12 @@ szentsé) g (gy g | |||
| világossá) g (gy g | |||
| vilá) g (gy g | |||
| virá) g (gy g | |||
| csilla) g (gy g | |||
| édessé) g (gy g | |||
| ge) g (gyár g | |||
| han) g (gy g | |||
| hazugsá) g (gy g | |||
| tőze) g (gy g | |||
| .group gy | |||
| gy J | |||
| @@ -1005,7 +1019,8 @@ szivárvá) ny (játsz n^ | |||
| utá) n (nyom n | |||
| verse) ny (játék n^ | |||
| _elle) n (jav n | |||
| vagyo) n (jog n | |||
| vagyo) n (jog n | |||
| nny (elv n|n^ | |||
| .group o | |||
| o o | |||
| @@ -1064,7 +1079,7 @@ vagyo) n (jog n | |||
| s S | |||
| s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme | |||
| s-) sz //but not need spokening second sz phoneme | |||
| dns-) sz s | |||
| dns-) sz s | |||
| föld) s (ánc S | |||
| ?1 hel) s (inki z | |||
| ki) s (ebb SS | |||
| @@ -1146,6 +1161,7 @@ _tetszé) s S | |||
| ki) s (sziget S | |||
| ki) s (szőlő S | |||
| körö) s (szeg S | |||
| kolbászo) s S | |||
| .group ss | |||
| ssz ss2 | |||
| @@ -1640,9 +1656,47 @@ _kemene) ssz Ss | |||
| _szamo) ssz Ss | |||
| _szilvá) ssz Ss | |||
| _vámo) ssz Ss | |||
| keresé) ssz Ss | |||
| cipő) ssz Ss | |||
| szorongá) ssz Ss | |||
| keresé) ssz Ss | |||
| cipő) ssz Ss | |||
| szorongá) ssz Ss | |||
| alkalmazá) ssz Ss | |||
| kezdé) ssz Ss | |||
| edzé) ssz Ss | |||
| egye) ssz (ám Ss | |||
| felsorolá) ssz Ss | |||
| ssz (ürk Ss | |||
| ssz (őke Ss | |||
| formán) ssz (int Ss | |||
| hami) ssz (ín Ss | |||
| mászá) ssz (erű Ss | |||
| hárma) ssz Ss | |||
| hívá) ssz Ss | |||
| hivatkozá) ssz Ss | |||
| leve) ssz Ss | |||
| _hú) ssz (öv Ss | |||
| ismétlé) ssz Ss | |||
| járá) ssz Ss | |||
| kattintá) ssz Ss | |||
| _ki) ssz (öv Ss | |||
| közlekedé) ssz Ss | |||
| laká) ssz Ss | |||
| légzé) ssz Ss | |||
| _le) ssz (ab Ss | |||
| meglepeté) ssz Ss | |||
| nyila) ssz Ss | |||
| pszichológu) ssz Ss | |||
| ráko) ssz Ss | |||
| ritmu) ssz Ss | |||
| rúzso) ssz Ss | |||
| stílu) ssz Ss | |||
| víru) ssz Ss | |||
| szállodá) ssz Ss | |||
| taxi) ssz Ss | |||
| ugrá) ssz Ss | |||
| üstökö) ssz Ss | |||
| visszaélé) ssz Ss | |||
| esé) ssz (erű Ss | |||
| webe) ssz Ss | |||
| .group sz | |||
| sz s | |||
| @@ -1699,6 +1753,10 @@ fáklyá) sz (ene Sz | |||
| para) szts (üte st|S | |||
| para) sztsz (ag st|s | |||
| para) szts (uhan st|S | |||
| sz (avar S|z | |||
| pénze) sz (k s | |||
| ellenállá) sz (ón Sz | |||
| ré) sz (árás Sz | |||
| .group t | |||
| t t | |||
| @@ -1842,7 +1900,7 @@ szögle) t (szob t | |||
| vizi) t (szob t | |||
| zár) t (szék t | |||
| szé) t (szortír t | |||
| _robo) t (szoftve t | |||
| _robo) t (szoftve t | |||
| .group tj | |||
| C) tj c | |||
| @@ -1929,7 +1987,7 @@ természe) tj (og tj | |||
| _tisztele) tj (el tj | |||
| zené) tj (átsz tj | |||
| szen) tj (akab tj | |||
| közérze) tj (aví tj | |||
| közérze) tj (aví tj | |||
| .group ts | |||
| ts (_S2 tS //general rule with word end of ts letters | |||
| @@ -2144,8 +2202,8 @@ felira) ts (áv t|S | |||
| pö) tsz (en ts: | |||
| _á) tsz (orult t|s | |||
| leme) tsz (vén ts | |||
| _cha) tsz (ob t|s | |||
| robo) ts (of t|S | |||
| _cha) tsz (ob t|s | |||
| robo) ts (of t|S | |||
| .group tt | |||
| tt t: | |||
| @@ -2411,6 +2469,8 @@ csatlako) z (tok s | |||
| tí) z (sáv z | |||
| _tí) z (shill z | |||
| topá) z z | |||
| dör) zsz (ör Z|z | |||
| raj) z (sabl z | |||
| .group | |||
| $ dolla:R2 | |||
| @@ -139,14 +139,14 @@ | |||
| ჺ | |||
| // For cyrillic characters (U+0400 to U+04FF) use Russian voice | |||
| .group 0xd0 | |||
| 0xd0 _^_RU | |||
| .group 0xd1 | |||
| 0xd1 _^_RU | |||
| .group 0xd2 | |||
| 0xd2 _^_RU | |||
| .group 0xd3 | |||
| 0xd3 _^_RU | |||
| //.group 0xd0 | |||
| // 0xd0 _^_RU | |||
| //.group 0xd1 | |||
| // 0xd1 _^_RU | |||
| //.group 0xd2 | |||
| // 0xd2 _^_RU | |||
| //.group 0xd3 | |||
| // 0xd3 _^_RU | |||
| .group | |||
| $ dolari | |||
| @@ -651,7 +651,6 @@ antonieta $alt2 | |||
| apego $alt2 $noun | |||
| apelo $alt $verb | |||
| aposto $alt $verb | |||
| apreço $alt2 | |||
| aperto $alt2 $noun | |||
| apoio $alt $verb | |||
| aprovo $alt | |||
| @@ -713,6 +712,7 @@ choro $alt2 $noun | |||
| chovesse $alt2 | |||
| chupeta $alt2 | |||
| clamores $alt2 | |||
| clero $alt | |||
| coco $alt2 | |||
| cofre $alt | |||
| cogumelo $alt | |||
| @@ -910,6 +910,7 @@ palacete $alt2 | |||
| palheta $alt2 | |||
| panfleto $alt2 | |||
| pangeia $alt | |||
| panqueca p,&~Nk'Ek& | |||
| pantera $alt | |||
| paralelo $alt | |||
| parede $alt2 | |||
| @@ -932,7 +933,6 @@ portos $alt | |||
| pose $alt2 | |||
| povos $alt | |||
| poxa p'oS& | |||
| preço $alt2 | |||
| primavera $alt | |||
| provo $alt | |||
| quarteto $alt2 | |||
| @@ -1,4 +1,5 @@ | |||
| // translation rules Brazilian | |||
| // translation rules Brazilian | |||
| // This file is UTF-8 encoded | |||
| // Options | |||
| @@ -365,6 +366,8 @@ _compreend) e (L06_ e | |||
| _entend) e (L06_ e | |||
| _estend) e (L06_ e | |||
| respond) e (L06_ e // cor- | |||
| _enraivec) e (L07_ e | |||
| _espairec) e (L07_ e | |||
| bat) e (L07_ e // re- com- | |||
| ced) e (L07_ e // pro- con- su- | |||
| met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | |||
| @@ -416,7 +419,9 @@ entend) e (L07_ e | |||
| preend) e (L07_ e // sur- com- | |||
| respond) e (L07_ e // cor- | |||
| qu) e (brL04_ E | |||
| acel) e (rL04_ E / des- | |||
| _hosp) e (dL03_ E | |||
| _in) e (ptL03_ E | |||
| _gr) e (gL03_ e | |||
| _n) e (grL03_ e | |||
| _estr) ei (L03_ EI | |||
| @@ -449,6 +454,7 @@ respond) e (L07_ e // cor- | |||
| _bez) e (rrL03_ e | |||
| _inv) e (rtL03_ e | |||
| _f) e (rvL03_ e | |||
| _enraiv) e (çL03_ e | |||
| _p) e (sL01_ E | |||
| _d) e (scL02_ E | |||
| _cr) e (scL02_ E | |||
| @@ -485,8 +491,10 @@ _emagr) e (çL03 | |||
| conh) e (çL03_ e // re- | |||
| _esqu) e (çL03_ e | |||
| _forn) e (çL03_ e | |||
| _obed) e (çL03_ e | |||
| obed) e (çL03_ e / des- | |||
| _ofer) e (çL03_ e | |||
| pr) e (çL03_ e / a- | |||
| _espair) e (çL03_ e | |||
| abast) e (çL03_ e // re- | |||
| _aborr) e (çL03_ e | |||
| _agrad) e (çL03_ e | |||
| @@ -1015,6 +1015,7 @@ _தணிகா) ச (ல tSV | |||
| _) ச (வான tSV | |||
| _) ச (ாக்கட்டி tS | |||
| _) சாக்ப (ீL04 tSa:kp | |||
| _) சாக்லெட் tSa:klet. | |||
| _) சாக்லேட் tSa:kle:t. | |||
| _) சா (ட்டர்ஜி tSe: | |||
| _) ச (ாணக்கிய tS | |||
| @@ -1048,12 +1049,14 @@ _தணிகா) ச (ல tSV | |||
| ஆ) ச (ாரங்கள tS | |||
| ஆ) ச (ாரத் tS | |||
| ஆ) ச (ாரம tS | |||
| _சிவா) ச (ாரி tS | |||
| _ரங்கா) ச (ாரி tS | |||
| _வரதா) ச (ாரி tS | |||
| _வேதா) ச (ாரி tS | |||
| _கிருஷ்ணமா) ச (ாரி tS | |||
| _தேசிகா) ச (ாரி tS | |||
| _பட்டா) ச (ாரி tS | |||
| _மத்வா) ச (ாரி tS | |||
| அனந்தா) ச (ாரி tS | |||
| அன்னமா) ச (ாரி tS | |||
| ஆ) ச (ாரிய_ tS | |||
| @@ -2406,6 +2409,7 @@ _சி) த்ரலேக (ா trVle:k | |||
| _) ப (ட்டக்ஸ bV | |||
| _) ப (ட்டன bV | |||
| _) ப (ட்டன_ pV | |||
| _) ப (ட்டாசாரி bV | |||
| _) ப (தில bV | |||
| _) பத்த (ிரகாளி bVdd | |||
| _) பத்திரப் (_ bVttirVp | |||
| @@ -2814,6 +2818,7 @@ _விளையாடு_) ப (ாம்பே p | |||
| _) ப (ிடில f | |||
| _) ப (ிட்சு b | |||
| _) ப (ிட்டடி b | |||
| _) பிந்தி (ரன்வாலே bind | |||
| _) ப (ினாமி b | |||
| _) ப (ினிஷ f | |||
| _) ப (ின்_லேடன b | |||
| @@ -3744,6 +3749,7 @@ _ஞானப்) பிரக (ா prVk | |||
| _மL06ாப்) பி (ரப p | |||
| வீண்) பி (ரமை b | |||
| துஷ்) பி (ரயோக p | |||
| _சொற்) பி (ரயோக p | |||
| L03ந்தப்) பி (ரளய p | |||
| _சொற்) பி (ரவாக p | |||
| எக்ஸ்) பிர (ஸ pre | |||
| @@ -80,7 +80,7 @@ _24 caUb'i:s | |||
| _25 pacc'i:s | |||
| _26 chabb'i:s | |||
| _27 sat:a:'i:s | |||
| _28 stha:'i:s | |||
| _28 ,ath.a:j'i:s | |||
| _29 Unt'i:s | |||
| _30 t'i:s | |||
| _31 ikVt'i:s | |||
| @@ -167,11 +167,25 @@ _dpt _ISaRI'Ia_ | |||
| یہ jE $u | |||
| کہ kE $u | |||
| وہ wo: $u | |||
| پ $u | |||
| آپ $u | |||
| تم tUm $u | |||
| ہم Ham $u | |||
| اس Is $u | |||
| ان In $u | |||
| جس J'Is $u | |||
| جسے J'Ise: | |||
| کس k'Is | |||
| کسی k'Isi: | |||
| کسے k'Ise: | |||
| اسی 'Isi: | |||
| اسے 'Ise: | |||
| مجھ m'UJh | |||
| مجھے m'UJhe: | |||
| تجھے t'UJhe: | |||
| جن J'In | |||
| جنھیں J,InH'e:n | |||
| انھوں ,UnH'o:n | |||
| انھیں ,InH'e:n | |||
| // unstressed prepositions | |||
| کا $u | |||
| @@ -184,6 +198,111 @@ _dpt _ISaRI'Ia_ | |||
| // unstressed verbs | |||
| ہے $u | |||
| ہیں $u | |||
| تھا $u | |||
| تھی $u | |||
| تھے $u | |||
| // Pronunciation exceptions | |||
| پاکستان p'a:k'i:st'a:n | |||
| سندھ s'Indh | |||
| کچھ k'Uch | |||
| لنکس l'Ink,s | |||
| لفظ l'afz. | |||
| سرچ s'aRc | |||
| وقت v'aqt | |||
| مبصرین m,Ubas.IR'i:n | |||
| متحدہ mUt'aHIda | |||
| جبکہ J,abk'e:H | |||
| مسلح m,Usal'aH | |||
| متفق mUt'afIq | |||
| سابق s'a:bIq | |||
| برسر b,aRs'aR | |||
| اعلان e:l'a:n | |||
| سنئیے sUn'i:;e: | |||
| کلنگ k'IlIn,g | |||
| انتقال ,Intaq'a:l | |||
| انتقام ,Intaq'a:m | |||
| انتخاب ,Intax'a:b | |||
| چیف c'i:f | |||
| جسٹس J'ast.,Is | |||
| شکایت S,Ika:j'at | |||
| شکست SIk'ast | |||
| منزل m'anz,Il | |||
| شعر S'e:R | |||
| فعل f'e:l | |||
| خصوصی xUs.'u:s.i: | |||
| خصوصیت x,Us.u:s.i:;'at | |||
| دنیا dUn'i:;a: | |||
| مختلف m,Uxt'alIf | |||
| قوانین q,ava:n'i:n | |||
| ختم x'atm | |||
| بزرگ b'UzUR,g | |||
| بزرگوں b,UzURg'o:n | |||
| شامل S'a:mIl | |||
| شمولیت S,Umu:li:;'at | |||
| بہت b'aHUt | |||
| دن d'In | |||
| دنوں dIn'o:n | |||
| مصر m'Is.R | |||
| مصری m'Is.R,i: | |||
| انتظام ,IntIz.'a:m | |||
| مختصر m,Uxtas.'aR | |||
| پھر ph'IR | |||
| پھرا ph'IRa: | |||
| منتخب m,Unt'ax@b | |||
| منتقل m,Unt'aqIl | |||
| نیا n'aja: | |||
| سرخی s'URx,i: | |||
| صفحہ s.'afH,a: | |||
| خالص x'a:lIs. | |||
| باہر ba:H'aR | |||
| دیا d'i:;a: | |||
| انڈیا ,Ind.'i:;a: | |||
| مظاہرین m,Uz.a:HIR'i:n | |||
| فائرنگ f'a:jIR,Ing | |||
| ڈائریکٹر d.,a:jIR,e:kt.'aR | |||
| فرقہ f'IRqa | |||
| شدت SId'at | |||
| بالخصوص b,IlxUs.'u:s. | |||
| اردو 'URd,u: | |||
| احتجاجی 'e:Hte:J,a:Ji: | |||
| احتجاج 'e:HtIJ,a:J | |||
| بدھ b'Udh | |||
| تجزیے t,aJz'i:;e: | |||
| دوست d'o:st | |||
| زندگی z,Ind'agi: | |||
| دل d'Il | |||
| شعری S'e:Ri: | |||
| شہر S'e:HIR | |||
| اعزاز e:z'a:z | |||
| صرف s.'IRf | |||
| طبی t'Ibi: | |||
| طب t'Ib | |||
| مقرر m,UqaR'aR | |||
| تقرری taq'aRUR,i: | |||
| تقرر taq'aRUR | |||
| مناسب mUn'a:sIb | |||
| مناسبت m,Una:sIb'at | |||
| اول 'avval | |||
| جارحیت J,a:RIHi:;'at | |||
| متحد mUt'aHId | |||
| محبت m,UHab'at | |||
| محمد m,UHam'ad | |||
| مکمل m,Ukam'al | |||
| مل m'Il | |||
| ملے m'Ile: | |||
| ملی m'Ili: | |||
| گزشتہ gUz'aSta | |||
| رشتہ R'ISta | |||
| اخر 'a:xIR | |||
| آنکھ 'a:nkh | |||
| شکار SIk'a:R | |||
| جلد J'ald | |||
| مواد mav'a:d | |||
| مطابق mUt'a:bIq | |||
| حاصل H'a:s.Il | |||
| شدہ S'Ud,a | |||
| بغیر baQ'e:R | |||
| امیدوار Um'i:dva:R | |||
| لکھ l'Ikh | |||
| لکھئیے l'Ikhj,e: | |||
| @@ -51,8 +51,9 @@ | |||
| _) ا (L01 // Acts like Consonants if followed by a vowel but is silent. | |||
| _) ا a | |||
| _) او u: | |||
| _) ای i: | |||
| _) ای e: | |||
| ائ a:j | |||
| اہ(_ a:H | |||
| .group آ | |||
| آ a: | |||
| @@ -78,7 +79,8 @@ _) ای i: | |||
| ی (_ i: | |||
| _) ی jV | |||
| یع(_ i: | |||
| @) ی i: | |||
| یں(_ e:n | |||
| .group ے // yeh barree | |||
| ے e: | |||
| @@ -141,10 +143,11 @@ _) ای i: | |||
| .group ح | |||
| ح HV | |||
| ح (L01 H | |||
| ح (_ H | |||
| .group خ | |||
| خ xV | |||
| خ (L01 x | |||
| خت(_ xt | |||
| .group د | |||
| د dV | |||
| @@ -239,6 +242,10 @@ _) ای i: | |||
| .group ن | |||
| ن nV | |||
| ن (L01 n | |||
| @) ن (گ n | |||
| @) ن (د n | |||
| @) ن (ب n | |||
| @) ن (س n | |||
| .group ں | |||
| ں n // this should nasalize the vowel | |||
| @@ -77,28 +77,42 @@ ỵ ỵ | |||
| //================================ | |||
| // Consonants | |||
| //================================ | |||
| .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve | |||
| .L02 n | |||
| .group b | |||
| b b | |||
| _) b _b | |||
| //b($w_alt2 _^_EN | |||
| .group c | |||
| c g //k | |||
| c (_ kh | |||
| ch c // try [tS;] [tS] [c] | |||
| ce (_ _^_EN | |||
| _) cl _^_EN | |||
| .group d | |||
| d J^ // try [z] [J] [dZ] [dZ;] [J^] | |||
| d (_ _^_EN | |||
| .group đ | |||
| đ d | |||
| _) đ _d | |||
| .group f | |||
| f f | |||
| //f f | |||
| _) f _^_EN | |||
| f (_ _^_EN | |||
| .group g | |||
| g Q // try [g] [Q] | |||
| gh Q // or [g] [Q] | |||
| @@ -107,7 +121,7 @@ ỵ ỵ | |||
| //g (í J^ | |||
| //g (ỉ J^ | |||
| //g (ĩ J^ | |||
| //g (ị J^ | |||
| //g (ị J^ | |||
| gi J^ | |||
| ?1 giết J^'iE3g | |||
| giết J^'iE3t[ | |||
| @@ -115,25 +129,35 @@ ỵ ỵ | |||
| ?1 giệt J^'iE6g | |||
| giệt J^'iE6t[ | |||
| giệc J^'iE6kh | |||
| _) gol _^_EN | |||
| _) gat _^_EN | |||
| ght (_ _^_EN | |||
| .group h | |||
| h h | |||
| .group j | |||
| j Z | |||
| .group k | |||
| k k | |||
| k (_ kh | |||
| //k (_ kh | |||
| kh x | |||
| k (_ _^_EN | |||
| .group l | |||
| l l | |||
| l (_ _^_EN | |||
| le (_ _^_EN | |||
| .group m | |||
| m m | |||
| .group n | |||
| n n | |||
| @@ -141,49 +165,75 @@ ỵ ỵ | |||
| ng N | |||
| ngh N | |||
| nh n^ | |||
| nd (_ _^_EN | |||
| .group ñ | |||
| ñ n^ | |||
| .group p | |||
| p p | |||
| ph f | |||
| .group q | |||
| q k | |||
| q (_ kh | |||
| qu w //kw | |||
| .group r | |||
| r z. // try [z] [z.] [r] [z;] | |||
| r (_ _^_EN | |||
| rm (_ _^_EN | |||
| .group s | |||
| s s. // try [s.] [s] [S] | |||
| _) sh _^_EN | |||
| s (_ _^_EN | |||
| st (_ _^_EN | |||
| se (_ _^_EN | |||
| .group t | |||
| t t[ | |||
| ?1 t (_ g | |||
| th t | |||
| tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | |||
| ts (_ _^_EN | |||
| te (_ _^_EN | |||
| th (_ _^_EN | |||
| tt (_ _^_EN | |||
| .group v | |||
| v v | |||
| ve (_ _^_EN | |||
| .group w | |||
| w w | |||
| _) w _^_EN | |||
| w (_ _^_EN | |||
| .group x | |||
| x s | |||
| x (_ _^_EN | |||
| .group z | |||
| z z | |||
| z (_ _^_EN | |||
| //================================ | |||
| // Vowels | |||
| //================================ | |||
| .group a | |||
| a a: | |||
| @@ -211,92 +261,122 @@ ỵ ỵ | |||
| aủ aU4 | |||
| aũ aU5 | |||
| aụ aU6 | |||
| a (L01 _^_EN | |||
| ai (L02 _^_EN | |||
| .group à | |||
| à a:2 | |||
| ài a:I2 | |||
| ày aI2 | |||
| ào a:U2 | |||
| àu aU2 | |||
| .group á | |||
| á a:3 | |||
| ái a:I3 | |||
| áy aI3 | |||
| áo a:U3 | |||
| áu aU3 | |||
| .group ả | |||
| ả a:4 | |||
| ải a:I4 | |||
| ảy aI4 | |||
| ảo a:U4 | |||
| ảu aU4 | |||
| .group ã | |||
| ã a:5 | |||
| ãi a:I5 | |||
| ãy aI5 | |||
| ão a:U5 | |||
| ãu aU5 | |||
| .group ạ | |||
| ạ a:6 | |||
| ại a:I6 | |||
| ạy aI6 | |||
| ạo a:U6 | |||
| ạu aU6 | |||
| //================================ | |||
| .group ă | |||
| ă a | |||
| .group ằ | |||
| ằ a2 | |||
| .group ắ | |||
| ắ a3 | |||
| .group ẳ | |||
| ẳ a4 | |||
| .group ẵ | |||
| ẵ a5 | |||
| .group ặ | |||
| ặ a6 | |||
| //================================= | |||
| .group â | |||
| â @ | |||
| ây @I | |||
| âu @U1 | |||
| âu @U1 | |||
| .group ầ | |||
| ầ @2 | |||
| ầy @I2 | |||
| ầu @U2 | |||
| .group ấ | |||
| ấ @3 | |||
| ấy @I3 | |||
| ấu @U3 | |||
| .group ẩ | |||
| ẩ @4 | |||
| ẩy @I4 | |||
| ẩu @U4 | |||
| .group ẫ | |||
| ẫ @5 | |||
| ẫy @I5 | |||
| ẫu @U5 | |||
| .group ậ | |||
| ậ @6 | |||
| ậy @I6 | |||
| ậu @U6 | |||
| //=========================== | |||
| .group e | |||
| e E | |||
| @@ -306,56 +386,78 @@ ỵ ỵ | |||
| eỏ EU4 | |||
| eỗ EU5 | |||
| eọ EU6 | |||
| e (L01 _^_EN | |||
| ey (_ _^_EN | |||
| .group è | |||
| è E2 | |||
| èo EU2 | |||
| .group é | |||
| é E3 | |||
| éo EU3 | |||
| .group ẻ | |||
| ẻ E4 | |||
| ẻo EU4 | |||
| .group ẽ | |||
| ẽ E5 | |||
| ẽo EU5 | |||
| .group ẹ | |||
| ẹ E6 | |||
| ẹo EU6 | |||
| //============================ | |||
| .group ê | |||
| ê e | |||
| êu eU1 | |||
| .group ề | |||
| ề e2 | |||
| ều eU2 | |||
| .group ế | |||
| ế e3 | |||
| ếu eU3 | |||
| .group ể | |||
| ể e4 | |||
| ểu eU4 | |||
| .group ễ | |||
| ễ e5 | |||
| ễu eU5 | |||
| .group ệ | |||
| ệ e6 | |||
| ệu eU6 | |||
| //============================ | |||
| .group i | |||
| i i | |||
| i (A j | |||
| @@ -383,40 +485,46 @@ ỵ ỵ | |||
| iểu iU4 | |||
| iễu iU5 | |||
| iệu iU6 | |||
| i (L01 _^_EN | |||
| .group ì | |||
| ì i2 | |||
| ì (A j2 | |||
| ìa i@2 | |||
| ìu iU2 | |||
| .group í | |||
| í i3 | |||
| í (A j3 | |||
| ía i@3 | |||
| íu iU3 | |||
| .group ỉ | |||
| ỉ i4 | |||
| ỉ (A j4 | |||
| ỉa i@4 | |||
| ỉu iU4 | |||
| .group ĩ | |||
| ĩ i5 | |||
| ĩ (A j5 | |||
| ĩa i@5 | |||
| ĩu iU5 | |||
| .group ị | |||
| ị i6 | |||
| ị (A j6 | |||
| ịa i@6 | |||
| ịu iU6 | |||
| //========================= | |||
| .group o | |||
| o O | |||
| oa o@ // modify oa sound example: hoa,khoa // o (A w | |||
| @@ -428,13 +536,17 @@ ỵ ỵ | |||
| oị OI6 | |||
| ong O# | |||
| oe o& // Adding oe sound example: lóe sáng,toét mắt | |||
| o (L01 _^_EN | |||
| .group ò | |||
| ò O2 | |||
| òi OI2 | |||
| òa o@2 //ò (A w2 | |||
| òng O#2 | |||
| òe o&2 | |||
| .group ó | |||
| ó O3 | |||
| @@ -442,6 +554,8 @@ ỵ ỵ | |||
| óa o@3 //ó (A w3 | |||
| óng O#3 | |||
| óe o&3 | |||
| .group ỏ | |||
| ỏ O4 | |||
| @@ -449,6 +563,8 @@ ỵ ỵ | |||
| ỏa o@4 //ỏ (A w4 | |||
| ỏng O#4 | |||
| ỏe o&4 | |||
| .group õ | |||
| õ O5 | |||
| @@ -456,6 +572,8 @@ ỵ ỵ | |||
| õa o@5 //õ (A w5 | |||
| õng O#5 | |||
| õe o&5 | |||
| .group ọ | |||
| ọ O6 | |||
| @@ -463,75 +581,98 @@ ỵ ỵ | |||
| ọa o@6 //ọ (A w6 | |||
| ọng O#6 | |||
| ọe o&6 | |||
| //============================= | |||
| .group ô | |||
| ô o | |||
| ôi oI | |||
| ông o# // ông sound | |||
| .group ồ | |||
| ồ o2 | |||
| ồi oI2 | |||
| ồng o#2 | |||
| .group ố | |||
| ố o3 | |||
| ối oI3 | |||
| ống o#3 | |||
| .group ổ | |||
| ổ o4 | |||
| ổi oI4 | |||
| ổng o#4 | |||
| .group ỗ | |||
| ỗ o5 | |||
| ỗi oI5 | |||
| ỗng o#5 | |||
| .group ộ | |||
| ộ o6 | |||
| ội oI6 | |||
| ộng o#6 | |||
| //============================= | |||
| .group ơ | |||
| ơ @: | |||
| ơi @:I | |||
| ơu @:U | |||
| .group ờ | |||
| ờ @:2 | |||
| ời @:I2 | |||
| ờu @:U2 | |||
| .group ớ | |||
| ớ @:3 | |||
| ới @:I3 | |||
| ớu @:U3 | |||
| .group ở | |||
| ở @:4 | |||
| ởi @:I4 | |||
| ởu @:U4 | |||
| .group ỡ | |||
| ỡ @:5 | |||
| ỡi @:I5 | |||
| ỡu @:U5 | |||
| .group ợ | |||
| ợ @:6 | |||
| ợi @:I6 | |||
| ợu @:U6 | |||
| //============================= | |||
| .group u | |||
| u u | |||
| u (A w | |||
| @@ -561,12 +702,19 @@ ỵ ỵ | |||
| uỗi u@j5 | |||
| uội u@j6 | |||
| //ung u# | |||
| u (L01 _^_EN | |||
| ui (L01 _^_EN | |||
| ua (L01 _^_EN | |||
| .group ù | |||
| ù u2 | |||
| ù (A w2 | |||
| ùi uI2 | |||
| ùa u@2 | |||
| //ùng u#2 | |||
| .group ú | |||
| ú u3 | |||
| @@ -574,6 +722,8 @@ ỵ ỵ | |||
| úi uI3 | |||
| úa u@3 | |||
| //úng u#3 | |||
| .group ủ | |||
| ủ u4 | |||
| @@ -581,6 +731,8 @@ ỵ ỵ | |||
| ủi uI4 | |||
| ủa u@4 | |||
| //ủng u#4 | |||
| .group ũ | |||
| ũ u5 | |||
| @@ -588,6 +740,8 @@ ỵ ỵ | |||
| ũi uI5 | |||
| ũa u@5 | |||
| //ũng u#5 | |||
| .group ụ | |||
| ụ u6 | |||
| @@ -595,8 +749,10 @@ ỵ ỵ | |||
| ụi uI6 | |||
| ụa u@6 | |||
| //ụng u#6 | |||
| //============================= | |||
| .group ư | |||
| ư y | |||
| ưi yI | |||
| @@ -620,38 +776,49 @@ ỵ ỵ | |||
| ưởu y@w4 | |||
| ưỡu y@w5 | |||
| ượu y@w6 | |||
| .group ừ | |||
| ừ y2 | |||
| ừi yI2 | |||
| ừa y@2 | |||
| ừu yw2 | |||
| .group ứ | |||
| ứ y3 | |||
| ứi yI3 | |||
| ứa y@3 | |||
| ứu yw3 | |||
| .group ử | |||
| ử y4 | |||
| ửi yI4 | |||
| ửa y@4 | |||
| ửu yw4 | |||
| .group ữ | |||
| ữ y5 | |||
| ữi yI5 | |||
| ữa y@5 | |||
| ữu yw5 | |||
| .group ự | |||
| ự y6 | |||
| ựi yI6 | |||
| ựa y@6 | |||
| ựu yw6 | |||
| //============================= | |||
| .group y | |||
| y i | |||
| @@ -669,35 +836,49 @@ ỵ ỵ | |||
| yễ i@5 | |||
| yệ i@6 | |||
| // yêu i@U | |||
| .group ỳ | |||
| ỳ i2 | |||
| ỳ (A j2 | |||
| ỳa i@2 | |||
| .group ý | |||
| ý i3 | |||
| ý (A j3 | |||
| ýa i@3 | |||
| .group ỷ | |||
| ỷ i4 | |||
| ỷ (A j4 | |||
| ỷa i@4 | |||
| .group ỹ | |||
| ỹ i5 | |||
| ỹ (A j5 | |||
| ỹa i@5 | |||
| .group ỵ | |||
| ỵ i6 | |||
| ỵ (A j6 | |||
| ỵa i@6 | |||
| //============================= | |||
| .group 0xce // Greek letters | |||
| // 0xce is the first byte of the utf-8 code for these characters | |||
| α a:1n_|f'a:1 | |||
| ά a:1n_|f'a:1 | |||
| β b'e1_|t['a:1 | |||
| @@ -717,9 +898,12 @@ ỵ ỵ | |||
| ν nw'i1 | |||
| ξ s'i7 | |||
| ο o1_|m'i1_|kz.'O7n | |||
| .group 0xcf // Greek letters | |||
| π p'i1 | |||
| ρ z.'o1 | |||
| σ s'i3c_|m'a:1 | |||
| @@ -733,26 +917,29 @@ ỵ ỵ | |||
| ω o1_|m'e1_|Q'a:7 | |||
| ώ o1_|m'e1_|Q'a:7 | |||
| ό o1_|m'i1_|kz.'O7n | |||
| .group | |||
| % f'@2n||cr'am | |||
| ! _:c'@3m_|t'a:7n_: | |||
| ! (\! | |||
| ! (\! | |||
| // : koUl@n | |||
| D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | |||
| $ d'o||l'a | |||
| != x'o#_|_b'a2N_ | |||
| >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | |||
| <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | |||
| __) - (_D cr'y2 | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| . c'@3m_ | |||
| . (. _: | |||
| \.) . | |||
| \.) . | |||
| @@ -0,0 +1,5 @@ | |||
| name Irish Gaeilge | |||
| language ga | |||
| @@ -1,3 +1,5 @@ | |||
| name esperanto | |||
| language eo | |||
| gender male | |||
| apostrophe 2 | |||
| @@ -674,7 +674,7 @@ phoneme j | |||
| NextVowelStarts | |||
| VowelStart(j/j@) | |||
| VowelStart(j/ja) | |||
| VowelStart(j/je,-60) | |||
| VowelStart(j/je,-40) | |||
| VowelStart(j/ji) | |||
| VowelStart(j/jo) | |||
| VowelStart(j/ju) | |||
| @@ -28,7 +28,10 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 180 | |||
| FMT(vowel/a#_2) | |||
| IF thisPh(isUnstressed) THEN | |||
| FMT(vowel/a#_2) | |||
| ENDIF | |||
| FMT(vowel/a_3) | |||
| endphoneme | |||
| @@ -69,12 +72,15 @@ phoneme k# | |||
| Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/k_asp2, 40) | |||
| WAV(ustop/k_asp, 40) | |||
| ENDIF | |||
| IF nextPh(l) THEN | |||
| WAV(ustop/kl) | |||
| IF nextPhW(#e) OR nextPhW(#i) THEN | |||
| WAV(ustop/k_asp_e, 40) | |||
| ELIF nextPhW(#o) OR nextPhW(#u) THEN | |||
| WAV(ustop/k_asp_u, 50) | |||
| ELSE | |||
| WAV(ustop/k_asp_a, 45) | |||
| ENDIF | |||
| WAV(ustop/k_asp2, 60) | |||
| endphoneme | |||
| @@ -113,24 +119,27 @@ phoneme k | |||
| import_phoneme consonants/k- | |||
| endphoneme | |||
| phoneme q | |||
| vls uvl stop | |||
| lengthmod 2 | |||
| Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 | |||
| Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | |||
| IF nextPh(#i) THEN | |||
| WAV(ustop/q2_i, 40) | |||
| ENDIF | |||
| WAV(ustop/q2, 48) | |||
| endphoneme | |||
| phoneme Q | |||
| import_phoneme base/r" | |||
| vcd vel frc | |||
| voicingswitch x | |||
| lengthmod 6 | |||
| Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||
| FMT(voc/Q) addWav(ufric/xx, 100) | |||
| endphoneme | |||
| phoneme Q2 | |||
| vcd vel frc | |||
| voicingswitch x | |||
| lengthmod 6 | |||
| Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||
| FMT(voc/Q) addWav(ufric/x2, 50) | |||
| endphoneme | |||
| phoneme r | |||
| import_phoneme base/R | |||
| endphoneme | |||
| @@ -1,9 +1,30 @@ | |||
| // Version 2.4 January 2013 | |||
| // short vowels | |||
| phoneme @ | |||
| vowel starttype #@ endtype #@ | |||
| phoneme @ // Schwa, but always unstressed | |||
| vowel starttype #@ endtype #@ | |||
| unstressed | |||
| length 100 | |||
| IF nextPh(i:) THEN | |||
| Length 70 | |||
| FMT(vwl_af/r@) | |||
| ENDIF | |||
| IF nextPh(I) THEN | |||
| Length 70 | |||
| FMT(vwl_af/r@) | |||
| ENDIF | |||
| IF nextPh(e:) THEN | |||
| Length 70 | |||
| FMT(vwl_af/r@) | |||
| ENDIF | |||
| FMT(vwl_af/@) | |||
| endphoneme | |||
| phoneme @/ | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| FMT(vowel/@) | |||
| endphoneme | |||
| @@ -11,12 +32,14 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 200 | |||
| length 150 | |||
| FMT(vowel/a_4) | |||
| endphoneme | |||
| phoneme a# | |||
| vowel starttype #@ endtype #@ | |||
| ipa ɐ | |||
| length 120 | |||
| ChangeIfStressed(a) | |||
| FMT(vowel/a#_3) | |||
| @@ -33,38 +56,35 @@ phoneme E# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(E) | |||
| FMT(vowel/@) | |||
| ChangePhoneme(@/) | |||
| endphoneme | |||
| phoneme I | |||
| vowel starttype #i endtype #i | |||
| length 120 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/ii_2) | |||
| endphoneme | |||
| phoneme I# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(I) | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/@) | |||
| phoneme i // non syllabic i for end of words | |||
| vowel starttype #i endtype #i | |||
| ipa iU+032F | |||
| length 40 | |||
| FMT(vowel/ii_7) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| vowel starttype #a endtype #@ | |||
| length 140 | |||
| FMT(vowel/oo_4) | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| phoneme O# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(O) | |||
| FMT(vowel/@) | |||
| ChangePhoneme(a#) | |||
| endphoneme | |||
| @@ -78,7 +98,35 @@ phoneme U# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(U) | |||
| FMT(vowel/@) | |||
| ChangePhoneme(@/) | |||
| endphoneme | |||
| phoneme u1 | |||
| vowel starttype #u endtype #u | |||
| ipa uU+0306 | |||
| length 50 | |||
| FMT(vowel/u) | |||
| endphoneme | |||
| phoneme 0 | |||
| vowel starttype #a endtype #a | |||
| length 180 | |||
| ipa A | |||
| FMT(vowel/aa_8) | |||
| endphoneme | |||
| phoneme 0# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(0) | |||
| ChangePhoneme(a#) | |||
| endphoneme | |||
| phoneme o: | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| @@ -105,11 +153,6 @@ phoneme i: | |||
| endphoneme | |||
| phoneme o: | |||
| vowel starttype #o endtype #o | |||
| length 190 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme u: | |||
| @@ -121,11 +164,6 @@ endphoneme | |||
| // Diphthongs | |||
| phoneme @I | |||
| vowel starttype #@ endtype #i | |||
| length 240 | |||
| FMT(vdiph/@i) | |||
| endphoneme | |||
| phoneme @U | |||
| vowel starttype #@ endtype #u | |||
| @@ -145,4 +183,57 @@ phoneme u@ | |||
| FMT(vdiph2/u@) | |||
| endphoneme | |||
| phoneme aI | |||
| vowel starttype #a endtype #i | |||
| length 250 | |||
| FMT(vdiph/ai) | |||
| endphoneme | |||
| phoneme aI# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(aI) | |||
| ChangePhoneme(a#) | |||
| endphoneme | |||
| phoneme aU | |||
| vowel starttype #a endtype #u | |||
| length 270 | |||
| FMT(vdiph/au_4) | |||
| endphoneme | |||
| phoneme aU# | |||
| vowel starttype #@ endtype #@ | |||
| length 120 | |||
| ChangeIfStressed(aU) | |||
| FMT(vdiph/au_4) | |||
| endphoneme | |||
| phoneme ; // linking j, used between (i) vowels and a following vowel | |||
| // also to palatalize consonants | |||
| liquid palatal | |||
| lengthmod 0 | |||
| IF prevPh(#i) THEN | |||
| ipa NULL // linking after i vowel, don't show in ipa | |||
| ENDIF | |||
| NextVowelStarts | |||
| VowelStart(j2/j2@) | |||
| VowelStart(j2/j2a) | |||
| VowelStart(j2/j2e) | |||
| VowelStart(j2/j2i) | |||
| VowelStart(j2/j2o) | |||
| VowelStart(j2/j2u) | |||
| EndSwitch | |||
| IF prevPh(#i) THEN | |||
| VowelEnding(j2/xj2, -40) | |||
| ENDIF | |||
| IF prevPh(isPause) THEN | |||
| FMT(j2/_j2) | |||
| ENDIF | |||
| endphoneme | |||
| @@ -310,7 +310,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
| p++; // skip over the zero which terminates the list for this hash value | |||
| } | |||
| if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) | |||
| if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size)) | |||
| { | |||
| fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | |||
| } | |||
| @@ -1040,7 +1040,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * | |||
| { | |||
| if(vowel_stress[ix] == 4) | |||
| { | |||
| if(tr->langopts.stress_flags & 0x20000) | |||
| if(tr->langopts.stress_flags & S_PRIORITY_STRESS) | |||
| vowel_stress[ix] = 1; | |||
| else | |||
| vowel_stress[ix] = 3; | |||
| @@ -1208,12 +1208,6 @@ 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) && dictionary_flags) | |||
| { | |||
| if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) | |||
| { | |||
| // lang=fr: don't stress monosyllables except at end-of-clause | |||
| vowel_stress[1] = 0; | |||
| dictionary_flags[0] |= FLAG_STRESS_END2; | |||
| } | |||
| max_stress = 0; | |||
| } | |||
| @@ -2652,6 +2646,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | |||
| { | |||
| n = utf8_in(&letter,p-1)-1; | |||
| if(tr->letter_bits_offset > 0) | |||
| { | |||
| // not a Latin alphabet, switch to the default Latin alphabet language | |||
| @@ -2720,11 +2715,19 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| p += (wc_bytes-1); | |||
| } | |||
| if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset)) | |||
| if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) | |||
| { | |||
| // switch to the nominated language for this alphabet | |||
| sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||
| return(0); | |||
| if(tr->langopts.alt_alphabet == alphabet->offset) | |||
| { | |||
| sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); | |||
| return(0); | |||
| } | |||
| if(alphabet->flags & AL_WORDS) | |||
| { | |||
| // switch to the nominated language for this alphabet | |||
| sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||
| return(0); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -596,6 +596,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| ALPHABET *alphabet; | |||
| int language; | |||
| int phontab_1; | |||
| int alphabet_name_switch; | |||
| char *ph_alphabet_end; | |||
| char capital[20]; | |||
| char ph_buf[80]; | |||
| char ph_buf2[80]; | |||
| @@ -631,6 +633,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| return(0); | |||
| } | |||
| alphabet_name_switch = 0; | |||
| alphabet = AlphabetFromChar(letter); | |||
| if(alphabet != current_alphabet) | |||
| { | |||
| @@ -638,38 +641,49 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| current_alphabet = alphabet; | |||
| if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) | |||
| { | |||
| phontab_1 = tr->phoneme_tab_ix; | |||
| ph_buf2[0] = 0; | |||
| if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||
| if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) | |||
| { | |||
| // Can't find the local name for this alphabet, use the English name | |||
| ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
| Lookup(translator2, alphabet->name, ph_buf2); | |||
| // don't say the alphabet name | |||
| } | |||
| else | |||
| if(translator != tr) | |||
| { | |||
| phontab_1 = tr->phoneme_tab_ix; | |||
| strcpy(ph_buf2, ph_alphabet); | |||
| ph_alphabet[2] = translator->phoneme_tab_ix; | |||
| } | |||
| if(ph_buf2[0] != 0) | |||
| { | |||
| // we used a different language for the alphabet name (now in ph_buf2) | |||
| ph_alphabet[0] = phonPAUSE; | |||
| ph_alphabet[1] = phonSWITCH; | |||
| strcpy(&ph_alphabet[3], ph_buf2); | |||
| len = strlen(ph_buf2) + 3; | |||
| ph_alphabet[len] = phonSWITCH; | |||
| ph_alphabet[len+1] = phontab_1; | |||
| ph_alphabet[len+2] = 0; | |||
| ph_buf2[0] = 0; | |||
| if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||
| { | |||
| // Can't find the local name for this alphabet, use the English name | |||
| ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
| Lookup(translator2, alphabet->name, ph_buf2); | |||
| } | |||
| else | |||
| if(translator != tr) | |||
| { | |||
| phontab_1 = tr->phoneme_tab_ix; | |||
| strcpy(ph_buf2, ph_alphabet); | |||
| ph_alphabet[2] = translator->phoneme_tab_ix; | |||
| } | |||
| if(ph_buf2[0] != 0) | |||
| { | |||
| // we used a different language for the alphabet name (now in ph_buf2) | |||
| ph_alphabet[0] = phonPAUSE; | |||
| ph_alphabet[1] = phonSWITCH; | |||
| strcpy(&ph_alphabet[3], ph_buf2); | |||
| len = strlen(ph_buf2) + 3; | |||
| ph_alphabet[len] = phonSWITCH; | |||
| ph_alphabet[len+1] = phontab_1; | |||
| ph_alphabet[len+2] = 0; | |||
| ph_alphabet_end = &ph_alphabet[len]; | |||
| alphabet_name_switch = ph_alphabet[2]; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number | |||
| if(ph_buf[0] == 0) | |||
| { | |||
| if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | |||
| @@ -702,6 +716,11 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| ph_buf[len+2] = 0; | |||
| } | |||
| } | |||
| if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0)) | |||
| { | |||
| ph_alphabet_end[0]= 0; | |||
| } | |||
| } | |||
| if(ph_buf[0] == 0) | |||
| @@ -428,7 +428,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| { | |||
| // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | |||
| // stress. But not for the last phoneme of a stressed word | |||
| if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||
| if((tr->langopts.stress_flags & S_NO_DIM) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||
| { | |||
| // An unstressed final vowel of a stressed word | |||
| unstress_count=1; // try again for next syllable | |||
| @@ -892,7 +892,7 @@ if(stress <= 1) | |||
| { | |||
| // this is the last syllable in the clause, lengthen it - more for short vowels | |||
| len = (p->ph->std_length * 2); | |||
| if(tr->langopts.stress_flags & 0x40000) | |||
| if(tr->langopts.stress_flags & S_EO_CLAUSE1) | |||
| len=200; // don't lengthen short vowels more than long vowels at end-of-clause | |||
| length_mod = length_mod * (256 + (280 - len)/3)/256; | |||
| } | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.46.43 07.Mar.13"; | |||
| const char *version_string = "1.46.44 08.Mar.13"; | |||
| const int version_phdata = 0x014640; | |||
| int option_device_number = -1; | |||
| @@ -478,7 +478,7 @@ Translator *SelectTranslator(const char *name) | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| tr->letter_bits_offset = OFFSET_ETHIOPIC; | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
| tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | |||
| @@ -550,7 +550,7 @@ Translator *SelectTranslator(const char *name) | |||
| // tr->langopts.intonation_group = 4; | |||
| // 'diminished' is an unstressed final syllable | |||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.unstressed_wd1 = 0; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
| @@ -651,7 +651,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||
| tr->langopts.unstressed_wd1 = 0; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
| @@ -681,7 +681,7 @@ Translator *SelectTranslator(const char *name) | |||
| // tr->langopts.word_gap = 1; | |||
| tr->langopts.vowel_pause = 2; | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| // tr->langopts.unstressed_wd1 = 3; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| @@ -989,7 +989,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x10 | 0x20000; | |||
| tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; | |||
| tr->langopts.vowel_pause = 1; | |||
| tr->langopts.unstressed_wd1 = 2; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| @@ -1023,8 +1023,9 @@ SetLengthMods(tr,3); // all equal | |||
| case L('k','a'): // Georgian | |||
| { | |||
| // character codes offset by 0x1080 | |||
| static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0}; | |||
| static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0}; | |||
| static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; | |||
| static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, | |||
| 0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; | |||
| SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | |||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
| SetLetterBits(tr,LETTERGP_A,ka_vowels); | |||
| @@ -1037,6 +1038,9 @@ SetLengthMods(tr,3); // all equal | |||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| tr->langopts.max_initial_consonants = 7; | |||
| tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; | |||
| tr->langopts.alt_alphabet = OFFSET_CYRILLIC; | |||
| tr->langopts.alt_alphabet_lang = "ru"; | |||
| } | |||
| break; | |||
| @@ -1111,7 +1115,7 @@ SetLengthMods(tr,3); // all equal | |||
| { | |||
| tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x20; | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||
| tr->langopts.unstressed_wd1 = 0; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_DIERESES] = 1; | |||
| @@ -1124,7 +1128,7 @@ SetLengthMods(tr,3); // all equal | |||
| { | |||
| tr->charset_a0 = charsets[4]; // ISO-8859-4 | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x20; | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||
| tr->langopts.unstressed_wd1 = 0; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_DIERESES] = 1; | |||
| @@ -1211,7 +1215,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetupTranslator(tr,stress_lengths_om,stress_amps_om); | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x16 + 0x80000; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000; | |||
| } | |||
| break; | |||
| @@ -1224,7 +1228,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | |||
| tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | |||
| @@ -1243,7 +1247,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | |||
| SetLetterVowel(tr,'y'); | |||
| @@ -1261,7 +1265,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x100 + 0x6; | |||
| tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY; | |||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | |||
| @@ -1276,7 +1280,7 @@ SetLengthMods(tr,3); // all equal | |||
| case L('r','w'): // Kiryarwanda | |||
| { | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x16; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | |||
| @@ -1293,7 +1297,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = 0x16; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | |||
| tr->langopts.max_initial_consonants = 5; | |||
| tr->langopts.spelling_stress = 1; | |||
| @@ -1322,7 +1326,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.spelling_stress = 1; | |||
| tr->letter_bits_offset = OFFSET_SINHALA; | |||
| @@ -1345,7 +1349,7 @@ SetLengthMods(tr,3); // all equal | |||
| case L('s','l'): // Slovenian | |||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | |||
| tr->langopts.stress_flags = 0x20; | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | |||
| tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | |||
| @@ -1362,7 +1366,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x16 + 0x100; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C; | |||
| SetLetterVowel(tr,'y'); | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | |||
| tr->langopts.accents = 2; // "capital" after letter name | |||
| @@ -1394,7 +1398,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.vowel_pause = 1; | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; | |||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; | |||
| tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | |||
| @@ -1411,7 +1415,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable | |||
| tr->langopts.spelling_stress = 1; | |||
| tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | |||
| @@ -1457,7 +1461,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 = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||
| tr->langopts.stress_flags = S_NO_DIM; // 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) | |||
| @@ -1476,7 +1480,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | |||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
| tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
| tr->langopts.param[LOPT_SUFFIX] = 1; | |||
| if(name2 == L('a','z')) | |||
| @@ -1496,7 +1500,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetCyrillicLetters(tr); | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | |||
| } | |||
| break; | |||
| @@ -1561,7 +1565,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" | |||
| tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||
| tr->langopts.stress_flags = S_NO_DIM; // 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 | |||
| @@ -1618,7 +1622,7 @@ static void Translator_Russian(Translator *tr) | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | |||
| tr->langopts.param[LOPT_REDUCE] = 2; | |||
| tr->langopts.stress_rule = 5; | |||
| tr->langopts.stress_flags = 0x0020; // waas 0x1010 | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | |||
| tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands | |||
| @@ -2074,17 +2074,29 @@ return(FLAG_SPELLWORD); | |||
| if(switch_phonemes >= 0) | |||
| { | |||
| // this word uses a different phoneme table | |||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||
| { | |||
| //previous phoneme is also a phonSWITCH, just change its phoneme table number | |||
| n_ph_list2--; | |||
| } | |||
| if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) | |||
| { | |||
| // the new word starts with a phoneme table switch, so there's no need to switch before it. | |||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||
| { | |||
| //previous phoneme is also a phonSWITCH, delete it | |||
| n_ph_list2--; | |||
| } | |||
| } | |||
| else | |||
| { | |||
| SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||
| // this word uses a different phoneme table | |||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||
| { | |||
| //previous phoneme is also a phonSWITCH, just change its phoneme table number | |||
| n_ph_list2--; | |||
| } | |||
| else | |||
| { | |||
| SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||
| } | |||
| ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||
| } | |||
| ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||
| } | |||
| // remove initial pause from a word if it follows a hyphen | |||
| @@ -2484,6 +2496,34 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| } | |||
| static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL}; | |||
| int UpperCaseInWord(Translator *tr, char *word, int c) | |||
| {//===================================================== | |||
| int ix; | |||
| int len; | |||
| const char *p; | |||
| if(tr->translator_name == L('g','a')) | |||
| { | |||
| // Irish | |||
| for(ix=0; ; ix++) | |||
| { | |||
| if((p = UCase_ga[ix]) == NULL) | |||
| break; | |||
| len = strlen(p); | |||
| if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) | |||
| { | |||
| if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) | |||
| return(1); | |||
| } | |||
| } | |||
| } | |||
| return(0); | |||
| } | |||
| void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) | |||
| {//========================================================================================================== | |||
| int ix; | |||
| @@ -2910,10 +2950,19 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| { | |||
| if(iswlower(prev_in)) | |||
| { | |||
| c = ' '; // lower case followed by upper case, treat as new word | |||
| space_inserted = 1; | |||
| prev_in_save = c; | |||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
| // lower case followed by upper case in a word | |||
| if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
| { | |||
| // convert to lower case and continue | |||
| c = towlower(c); | |||
| } | |||
| else | |||
| { | |||
| c = ' '; // lower case followed by upper case, treat as new word | |||
| space_inserted = 1; | |||
| prev_in_save = c; | |||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
| } | |||
| } | |||
| else | |||
| if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | |||
| @@ -372,35 +372,53 @@ typedef struct { | |||
| #define S_NO_DIM 0x02 | |||
| #define S_FINAL_DIM 0x04 | |||
| #define S_FINAL_NO_2 0x10 | |||
| #define S_NO_AUTO_2 0x20 | |||
| #define S_2_TO_HEAVY 0x40 | |||
| #define S_FIRST_PRIMARY 0x80 | |||
| #define S_2_SYL_2 0x1000 | |||
| #define S_INITIAL_2 0x2000 | |||
| #define S_NO_AUTO_DIM 0x10000 | |||
| #define S_HYPEN_UNSTRESS 0x100000 | |||
| #define S_NO_EOC_LENGTHEN 0x200000 | |||
| // bit0=don't stress monosyllables, except at end of clause | |||
| #define S_FINAL_DIM_ONLY 0x06 | |||
| // bit1=don't set diminished stress, | |||
| // bit2=mark unstressed final syllables as diminished | |||
| // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words | |||
| #define S_FINAL_NO_2 0x10 | |||
| // bit4=don't allow secondary stress on last syllable | |||
| #define S_NO_AUTO_2 0x20 | |||
| // bit5-don't use automatic secondary stress | |||
| #define S_2_TO_HEAVY 0x40 | |||
| // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | |||
| #define S_FIRST_PRIMARY 0x80 | |||
| // bit7=if more than one primary stress, make the subsequent primaries to secondary stress | |||
| #define S_FINAL_STRESS_C 0x100 | |||
| // bit8=stress last syllable if it doesn't end in a vowel | |||
| #define S_FINAL_SPANISH 0x200 | |||
| // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | |||
| #define S_2_SYL_2 0x1000 | |||
| // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress | |||
| #define S_INITIAL_2 0x2000 | |||
| // bit13= If there is only one syllable before the primary stress, give it a secondary stress | |||
| // bit15= Give stress to the first unstressed syllable | |||
| // bit16= Don't diminish consecutive syllables within a word. | |||
| #define S_PRIORITY_STRESS 0x20000 | |||
| // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | |||
| #define S_EO_CLAUSE1 0x40000 | |||
| // bit18= don't lengthen short vowels more than long vowels at end-of-clause | |||
| // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||
| #define S_HYPEN_UNSTRESS 0x100000 | |||
| // bit20= hyphenated words, 2nd part is unstressed | |||
| #define S_NO_EOC_LENGTHEN 0x200000 | |||
| // bit21= don't lengthen vowels at end-of-clause | |||
| // bit15= Give stress to the first unstressed syllable | |||
| // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||
| int stress_flags; | |||
| int unstressed_wd1; // stress for $u word of 1 syllable | |||
| int unstressed_wd2; // stress for $u word of >1 syllable | |||
| @@ -518,6 +536,8 @@ typedef struct { | |||
| int listx; // compile *_listx after *list | |||
| const unsigned int *replace_chars; // characters to be substitutes | |||
| const char *ascii_language; // switch to this language for Latin characters | |||
| int alt_alphabet; // offset for another language to recognize | |||
| const char *alt_alphabet_lang; // language for the alt_alphabet | |||
| int max_lengthmod; | |||
| int lengthen_tonic; // lengthen the tonic syllable | |||
| int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | |||
| @@ -680,6 +700,7 @@ void InitText(int flags); | |||
| void InitText2(void); | |||
| int IsDigit(unsigned int c); | |||
| int IsAlpha(unsigned int c); | |||
| int IsVowel(Translator *tr, int c); | |||
| int isspace2(unsigned int c); | |||
| int towlower2(unsigned int c); | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||
| @@ -61,7 +61,7 @@ int formant_rate[9]; // values adjusted for actual sample rate | |||
| #define DEFAULT_LANGUAGE_PRIORITY 5 | |||
| #define N_VOICES_LIST 200 | |||
| #define N_VOICES_LIST 250 | |||
| static int n_voices_list = 0; | |||
| static espeak_VOICE *voices_list[N_VOICES_LIST]; | |||
| static int len_path_voices; | |||
| @@ -578,10 +578,8 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| static const char *voices_europe = | |||
| "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| strcpy(voicename,vname); | |||
| if(voicename[0]==0) | |||
| strcpy(voicename,"default"); | |||
| strncpy0(voicename, vname, sizeof(voicename)); | |||
| if(control & 0x10) | |||
| { | |||
| strcpy(buf,vname); | |||
| @@ -590,6 +588,9 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| } | |||
| else | |||
| { | |||
| if(voicename[0]==0) | |||
| strcpy(voicename,"default"); | |||
| sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | |||
| sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | |||
| @@ -1634,30 +1635,35 @@ static void GetVoices(const char *path) | |||
| return; | |||
| do { | |||
| sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||
| ftype = GetFileLength(fname); | |||
| if(n_voices_list >= (N_VOICES_LIST-2)) | |||
| break; // voices list is full | |||
| if((ftype == -2) && (FindFileData.cFileName[0] != '.')) | |||
| { | |||
| // a sub-sirectory | |||
| GetVoices(fname); | |||
| } | |||
| else | |||
| if(ftype > 0) | |||
| if(FindFileData.cFileName[0] != '.') | |||
| { | |||
| // a regular line, add it to the voices list | |||
| if((f_voice = fopen(fname,"r")) == NULL) | |||
| continue; | |||
| // pass voice file name within the voices directory | |||
| voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||
| fclose(f_voice); | |||
| if(voice_data != NULL) | |||
| { | |||
| voices_list[n_voices_list++] = voice_data; | |||
| } | |||
| sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||
| ftype = GetFileLength(fname); | |||
| if(ftype == -2) | |||
| { | |||
| // a sub-sirectory | |||
| GetVoices(fname); | |||
| } | |||
| else | |||
| if(ftype > 0) | |||
| { | |||
| // a regular line, add it to the voices list | |||
| if((f_voice = fopen(fname,"r")) == NULL) | |||
| continue; | |||
| // pass voice file name within the voices directory | |||
| voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||
| fclose(f_voice); | |||
| if(voice_data != NULL) | |||
| { | |||
| voices_list[n_voices_list++] = voice_data; | |||
| } | |||
| } | |||
| } | |||
| } while(FindNextFileA(hFind, &FindFileData) != 0); | |||
| FindClose(hFind); | |||
| @@ -1674,11 +1680,14 @@ static void GetVoices(const char *path) | |||
| if(n_voices_list >= (N_VOICES_LIST-2)) | |||
| break; // voices list is full | |||
| if(ent->d_name[0] == '.') | |||
| continue; | |||
| sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | |||
| ftype = GetFileLength(fname); | |||
| if((ftype == -2) && (ent->d_name[0] != '.')) | |||
| if(ftype == -2) | |||
| { | |||
| // a sub-sirectory | |||
| GetVoices(fname); | |||
| @@ -1710,15 +1719,23 @@ static void GetVoices(const char *path) | |||
| espeak_ERROR SetVoiceByName(const char *name) | |||
| {//========================================= | |||
| espeak_VOICE *v; | |||
| int ix; | |||
| espeak_VOICE voice_selector; | |||
| char *variant_name; | |||
| static char buf[60]; | |||
| strncpy0(buf,name,sizeof(buf)); | |||
| variant_name = ExtractVoiceVariantName(buf, 0, 1); | |||
| for(ix=0; ;ix++) | |||
| { | |||
| // convert voice name to lower case (ascii) | |||
| if((buf[ix] = tolower(buf[ix])) == 0) | |||
| break; | |||
| } | |||
| memset(&voice_selector,0,sizeof(voice_selector)); | |||
| // voice_selector.name = buf; | |||
| voice_selector.name = (char *)name; // include variant name in voice stack ?? | |||
| // first check for a voice with this filename | |||