| @@ -0,0 +1,278 @@ | |||
| // Translation rules for Bengali | |||
| // This file is UTF8 encoded | |||
| // Numbers | |||
| devanagari numbers are changed to latin characters before translation | |||
| _0 S'u:n.nV'o: | |||
| _1 a'k | |||
| _2 d:UI | |||
| _3 t'i:n | |||
| _4 c'a:@'r | |||
| _5 ,pa~c | |||
| _6 ch'O:j | |||
| _7 S'a:t | |||
| _8 'a:th. | |||
| _9 n'O:j | |||
| _10 d'O:S | |||
| _11 a'g'a:rO: | |||
| _12 b'a:rO: | |||
| _13 t'a:rO: | |||
| _14 ch:O:d'dO: | |||
| _15 p'O:n'e:rO: | |||
| _16 S'o:lO: | |||
| _17 SO:t'e:rO: | |||
| _18 a:th'e:rO: | |||
| _19 U'n'IS | |||
| _20 kU:'ri | |||
| _21 e:kU'S | |||
| _22 b'a:IS | |||
| _23 t'e:IS | |||
| _24 c'O:b'bIS | |||
| _25 pa~O:c'IS | |||
| _26 ch'a:'bb'IS | |||
| _27 Sa:ta:S | |||
| _28 ath'a:S | |||
| _29 Unt'rIs | |||
| _30 t'i:rIS | |||
| _31 e:k't:rIS | |||
| _32 bat:'rIS | |||
| _33 tE't'rIS | |||
| _34 ca~o:u:t'rIS | |||
| _35 pa~O:it'rIS | |||
| _36 cha'trIS | |||
| _37 Sa~it'rIS | |||
| _38 at'tr'IS | |||
| _39 U'nO:cO:l'IS | |||
| _40 co:l'lIS | |||
| _41 e:k'co:l'lIS | |||
| _42 bi'al'lIS | |||
| _43 te:ta:l'lIS | |||
| _44 cu:a:l'lIS | |||
| _45 paI'nta:l'lIS | |||
| _46 che:co:l'lIS | |||
| _47 Sat'co:l'lIs | |||
| _48 at'co:l'lIS | |||
| _49 Uno:pan'ca:S | |||
| _50 p@n'ca:s | |||
| _51 e:ka:n'no: | |||
| _52 ba:h@n'no: | |||
| _53 t'Ip'pan'no: | |||
| _54 cu:wan'no: | |||
| _55 po:n'ca:n'no: | |||
| _56 chh@p:'an'no: | |||
| _57 Sa:ta:n'no: | |||
| _58 ath'a:n'no: | |||
| _59 Uno:s'ath | |||
| _60 s'a:th. | |||
| _61 e:k'so:t'tI | |||
| _62 ba:so:t'tI | |||
| _63 te:so:t'tI | |||
| _64 ca~o:u:so:t'tI | |||
| _65 pa~I'so:t'tI | |||
| _66 che:so:t'tI | |||
| _67 Sat'so:t'tI | |||
| _68 atso:t'ti | |||
| _69 ,Uno:Sat'to:r | |||
| _70 So:t'to:r | |||
| _71 e:kat'to:r | |||
| _72 ba:hat'to:r | |||
| _73 tIat'to:r | |||
| _74 cu:at'to:r | |||
| _75 pa~chat'to:r | |||
| _76 chI'at:to:r | |||
| _77 Sa:t@'t:o:r | |||
| _78 atat'to:r | |||
| _79 ,Uno:a:Si: | |||
| _80 a:Si | |||
| _81 e:ka:Si: | |||
| _82 bI'ra:Si: | |||
| _83 tIra:Si: | |||
| _84 cu:ra:Si: | |||
| _85 pa~ca:Si: | |||
| _86 chIa:Si: | |||
| _87 Sa:ta:Si: | |||
| _88 O:sto:a:Si: | |||
| _89 Uno:no:b'bo:I | |||
| _90 no:b:bo:I | |||
| _91 e:ka:no:b'bo:I | |||
| _92 bIra:no:b'bo:I | |||
| _93 tIr'a:no:b'bo:I | |||
| _94 cu:r'a:no:b'bo:I | |||
| _95 pa~ca:no:b'bo:I | |||
| _96 chIa:no:b'bo:I | |||
| _97 S@ta:no:b'bo:I | |||
| _98 ata:no:b'bo:I | |||
| _99 nIra:no:b'bo:I | |||
| _0C SO: | |||
| _0M1 h@z'a:r | |||
| _0M2 l'a:kh | |||
| _0M3 ko:tI | |||
| _0M4 o:r'bu:d | |||
| _dpt d@so:mIk | |||
| // Single consonants | |||
| ক k@ | |||
| খ kh@ | |||
| গ g@ | |||
| ঘ gh@ | |||
| ঙ N'g | |||
| চ c@ | |||
| ছ ch@ | |||
| জ J@ | |||
| ঝ Jh@ | |||
| ঞ n^@ | |||
| ট t.@ | |||
| ঠ th.@ | |||
| ড d.@ | |||
| ঢ dh.@ | |||
| ণ n.@ // retroflex n.@ | |||
| ত t@ | |||
| থ th@ | |||
| দ d@ | |||
| ধ dh@ | |||
| ন n@ | |||
| প p@ | |||
| ফ ph@ | |||
| ব b@ | |||
| ভ bh@ | |||
| ম m@ | |||
| য় O:j | |||
| য J@ | |||
| র r@ | |||
| ড় r-@ | |||
| ঢ় hr@ | |||
| ল l@ | |||
| শ S@ | |||
| ষ s.@ // retroflex [S] | |||
| স s@ | |||
| হ H@ | |||
| ৎ t@ | |||
| // combining vowel signs | |||
| ा #X2a: | |||
| ि #X1I | |||
| ी #X2i: | |||
| ূ #X1U | |||
| ू #X2u: | |||
| ृ #X1rI | |||
| ে #X1e: | |||
| ৈ #X2E: | |||
| ো #X1o: | |||
| ৌ #X1O: | |||
| ॐ #X1o~m | |||
| // Punctuation | |||
| । dVn.d.V | |||
| // Pronouns | |||
| আমি $u // main: I | |||
| আমায় $u | |||
| আমার $u | |||
| আমরা $u // we | |||
| আমাদের $u | |||
| আপনি $u // you(formal) | |||
| আপনাকে $u | |||
| আপনার $u | |||
| তুমি $u // you (informal) | |||
| তোমায় $u | |||
| তোমার $u | |||
| তোমাদের $u | |||
| তুই $u // you (informal) | |||
| তোকে $u | |||
| তোর $u | |||
| এ $u // he/she/it | |||
| একে $u | |||
| এটার $u | |||
| এর $u | |||
| ইনি $u // they | |||
| এনাকে $u | |||
| এনার $u | |||
| ও $u // he/she/it | |||
| সে $u | |||
| ওর $u | |||
| তার $u | |||
| ওরা $u // they | |||
| তারা $u | |||
| ওদের $u // unheṃ: them | |||
| তাদের $u | |||
| এই $u // e:I this/it | |||
| এটা $u // e:ta: this/it | |||
| এটার $u // e:ta:'r this/it | |||
| এর $u // e:r this/it | |||
| ওটা $u // o:ta: that | |||
| ওটাকে $u // o:ta:ke: to that | |||
| ওটার $u // o:ta:'r of that | |||
| ওগুলো $u // o:gu:lo: those | |||
| ওগুলোকে $u // o:gu:lo:ke: to those | |||
| ওগুলোর $u // o:gu:lo:'r of those | |||
| // Prepositions/Postpositions | |||
| মধ্যে $u // moddhe in | |||
| উপর $u // upor on, above | |||
| নীচে $u // niche below | |||
| পূর্ব্বে $u // purbe before, prior | |||
| পর্য্যন্ত $u // parjonto till | |||
| অব্দি $u // abdi till | |||
| বিনা $u // bina without | |||
| // Questions | |||
| কেন $u $pause // kano why interrogative particle | |||
| কি $u $pause // ki what | |||
| কোথায় $u $pause // kothaay where | |||
| কখন $u $pause // kakhon when | |||
| কে $u $pause // ke who | |||
| // Conjunctions | |||
| এবং $u $pause // ebong: and | |||
| আর $u $pause // aar: and | |||
| অথবা $u $pause // athoba: or | |||
| কিন্তু $u $pause // kintu: but | |||
| যদি $pause // jodi: if | |||
| তবু $pause // tobu: still, yet | |||
| তবে $pause // tabe: if...then | |||
| অথচ $u // athacho: yet | |||
| // Verbs | |||
| ছিল $u // chilo: past aux | |||
| ছিলেন $u // chilen | |||
| করছি $u // korchi: continuous | |||
| করছিলাম $u // korchilam: past indefinite | |||
| করেছি $u // korechi: past | |||
| // Exceptions | |||
| ক্রিকেট krIk'Et | |||
| সাইবার s'aIb@r | |||
| @@ -0,0 +1,316 @@ | |||
| // This file is UTF8 encoded | |||
| // letter groups: | |||
| // A vowel letters and vowel signs | |||
| // B vowel signs and virama ् | |||
| // C consonants | |||
| // Y vowel letters and vowel signs | |||
| // conditional rules | |||
| // ?2 use diphthong for "ai" | |||
| // ?3 use diphthong for "au" | |||
| .replace | |||
| ০ 0 | |||
| ১ 1 | |||
| ২ 2 | |||
| ৩ 3 | |||
| ৪ 4 | |||
| ৫ 5 | |||
| ৬ 6 | |||
| ৭ 7 | |||
| ৮ 8 | |||
| ৯ 9 | |||
| // Vowels | |||
| .group অ | |||
| অ a | |||
| .group আ | |||
| আ a: | |||
| .group ই | |||
| ই I | |||
| ইঁ i~ | |||
| ইং I'ng | |||
| .group ঈ | |||
| ঈ i: | |||
| ঈ (_ i | |||
| .group উ | |||
| উ U | |||
| .group ঊ | |||
| ঊ u: | |||
| ঊং u~ // + anusvara | |||
| ঊঁ u~ // + candrabinbu | |||
| .group ঋ | |||
| ঋ rI | |||
| .group এঁ | |||
| এঁ E // candra e | |||
| .group ঐ | |||
| ঐ e | |||
| .group এ | |||
| এ e: | |||
| .group ঐ | |||
| ঐ E: // ?? [aI] [E:] [&:] | |||
| ঐং E~ | |||
| ঐঁ E~ | |||
| ?2 ঐ aI // ?? [aI] [E:] [&:] | |||
| .group ওঁ | |||
| ওঁ O // candra O | |||
| .group ঔ | |||
| ঔ o | |||
| .group ও | |||
| ও o: | |||
| ওং o~ // +anusvara | |||
| ওঁ o~ // +candrabindu | |||
| .group ঔ | |||
| ঔ O: // ?? [aU] [O:] | |||
| ঔঁ O~ // +candrabindu | |||
| // Vowel Signs | |||
| .group া | |||
| া a: | |||
| .group ি | |||
| ি I | |||
| .group ী | |||
| ী i: | |||
| ী (_ i | |||
| .group ূ | |||
| ূ U | |||
| .group ু | |||
| ু u: | |||
| .group ৃ | |||
| ৃ rI | |||
| .group ে | |||
| ে e: | |||
| .group ৈ | |||
| ৈ E: // ?? [aI] [E:] [&:] | |||
| .group ো | |||
| ো o: | |||
| .group ৌ | |||
| ৌ O: // [O:] or [aU] ?? | |||
| .group ॐ | |||
| ॐ o~m | |||
| // Consonants | |||
| .group ক | |||
| ক k@ | |||
| ক (B k | |||
| ক্য (्য kja: | |||
| ক্ষ kh'@ | |||
| .group খ | |||
| খ khV | |||
| খ (B kh@ | |||
| .group গ | |||
| গ gV | |||
| গ (B g@ | |||
| ঈ)গ (ল g@ | |||
| .group ঘ | |||
| ঘ ghV | |||
| ঘ (B gh | |||
| .group ঙ | |||
| ঙ N'g | |||
| ঙ্ (B N | |||
| গা)ঙ (চি Ng@ | |||
| .group চ | |||
| চ cV | |||
| চ (B c | |||
| ্য) চ্য c'j@ | |||
| .group ছ | |||
| ছ chV | |||
| ছ (B ch@ | |||
| .group জ | |||
| জ J@ | |||
| জ (B J@ | |||
| ্) জ zV | |||
| জ (B J@ | |||
| .group ঝ | |||
| ঝ Jh@ | |||
| ঝ (B Jh@ | |||
| .group ঞ | |||
| ঞ n^V | |||
| ঞ্ (B n^ | |||
| .group ট | |||
| ট tV | |||
| ট (B tV | |||
| ট (्য় t.j@ | |||
| .group ঠ | |||
| ঠ thV | |||
| ঠ (B th. | |||
| .group ড | |||
| ড d.V | |||
| ড (B d. | |||
| .group ঢ | |||
| ঢ dh.V | |||
| ঢ (B dh. | |||
| .group ণ | |||
| ণ n.V // (temporary) same as dental [n] | |||
| ণ (B n. | |||
| ণ্ম n.m | |||
| .group ত | |||
| ত t@ | |||
| ত (B t@ | |||
| .group থ | |||
| থ th@ | |||
| থ (B th. | |||
| ক) থ (ন th@ | |||
| .group দ | |||
| দ d@ | |||
| দ (B d. | |||
| ব) দ (ল d@ | |||
| .group ধ | |||
| ধ dh@ | |||
| ধ (B dh. | |||
| সা) ধ (ন dh@ | |||
| .group ন | |||
| ন n@ | |||
| ন (B n@ | |||
| ্) ন (্ n@ | |||
| র্) ন (_ r.n // r +virama অর্ণব | |||
| .group ন | |||
| ন n: // should this be a long [n] ? | |||
| .group প | |||
| প p@ | |||
| প (B p | |||
| প্য (्য p: | |||
| .group ফ | |||
| ফ ph@ | |||
| ফ (B ph@ | |||
| ফ ph@ | |||
| .group ব | |||
| ব b@ | |||
| ব (B b@ | |||
| .group ভ | |||
| ভ bh@ | |||
| ভ (B bh@ | |||
| .group ম | |||
| ম mV | |||
| ्) ম (_ mV | |||
| র্) ম (_ r.m@ // r +virama | |||
| ন্) ম (_ n.m // n +virama | |||
| .group য় | |||
| য় jV | |||
| য় (B jV | |||
| .group য | |||
| য J@ | |||
| য (B J@ | |||
| ्) য (_ ja | |||
| .group র | |||
| র rV | |||
| র (B r | |||
| ्) র (_ r@ | |||
| .group ল | |||
| ল l | |||
| ল (B l@ | |||
| ক) ল (ম l@ | |||
| .group শ | |||
| শ S@ | |||
| শ (B S@ | |||
| .group ষ | |||
| ষ s | |||
| ষ (B s //?? | |||
| .group স | |||
| স s@ | |||
| স (B s. | |||
| .group হ | |||
| হ H@ | |||
| হ (B H@ | |||
| হ্ব v@ | |||
| .group হ্ব | |||
| B) হ্ব (B v@ | |||
| .group ৎ | |||
| ৎ (B t@t | |||
| // nukta, modifies a consonant | |||
| .group ্যা // ja'falaa | |||
| ্যা a | |||
| .group ँ | |||
| ँ n // candrabindu | |||
| .group ং | |||
| ং aN'g // anusvara | |||
| .group ः | |||
| ः H // visarga | |||
| .group ্ // virama | |||
| ্ | |||
| @@ -187,7 +187,7 @@ _‴ trIp@LpraIm | |||
| _‼ Ekskla#m'eIS@nz | |||
| _₠ jU@roU | |||
| + plVs $max3 | |||
| + plVs | |||
| # haS $max3 | |||
| @ _at_ $u+ | |||
| & _and $u+ | |||
| @@ -1196,6 +1196,7 @@ convent k0nv@nt | |||
| converse $1 $only | |||
| converse $verb | |||
| convert $1 $noun | |||
| convict $1 | |||
| convict $2 $verb | |||
| convolute k0nv@l'u:t | |||
| coop ku:p | |||
| @@ -1961,6 +1962,7 @@ mercedes m3:s'eIdi:z | |||
| //mercenary m3:s@n@rI | |||
| merest mi@r@st | |||
| meringue m@raN | |||
| meson mi:z0n | |||
| metabolic mEt@b'0lIk | |||
| metaphor mEt@fO@ | |||
| metastable $alt1 | |||
| @@ -1,6 +1,6 @@ | |||
| // *************************************************************************** | |||
| // * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
| // * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||
| // * email: [email protected] * | |||
| // * * | |||
| // * This program is free software; you can redistribute it and/or modify * | |||
| @@ -1601,7 +1601,7 @@ | |||
| co (ntrol+ k@ | |||
| conva (l k0nv@ | |||
| _) co (nvenA k@ | |||
| _) co (nvi k0# | |||
| _) con (vi k%0#n | |||
| _) co (nvoy k0 | |||
| _) co (nw k0 | |||
| _) copy k0pI | |||
| @@ -1734,7 +1734,7 @@ | |||
| _) des (k dEs | |||
| des (ol dEs | |||
| des (pot dEs | |||
| _) dess dI2z | |||
| _) dess (er dI2z | |||
| desta (b d%i:steI | |||
| desti dEstI | |||
| des (ul d%i:s | |||
| @@ -2547,7 +2547,7 @@ | |||
| v) es (t+ Es | |||
| harv) es (t Is | |||
| esti (m EstI# | |||
| es (ty @s | |||
| &) es (ty @s | |||
| .group et | |||
| _) et (on i:t | |||
| @@ -2994,6 +2994,7 @@ | |||
| iah (_ 'aI@ | |||
| ia (m i@ | |||
| &) ia (n i@ | |||
| @) ia (nd I'a | |||
| @) ia (nic I'a | |||
| @) ia (nit I'a | |||
| @) ia (na_ i:'a | |||
| @@ -3394,8 +3395,8 @@ | |||
| iority I'0rI2t%I | |||
| iou (rA j@ | |||
| iour (K j3 | |||
| @) ious (_ =I2@s | |||
| g) ious (_ =@s | |||
| @) ious =I2@s | |||
| g) ious =@s | |||
| ioux u: | |||
| _r) io (t aI@ | |||
| io (t_ I|@ | |||
| @@ -5881,6 +5882,7 @@ | |||
| &d) Ed (_S2vei I#d | |||
| &ch) Ed (_S2vei t | |||
| &k) Ed (_S2vei t | |||
| ril) Ed (_S2 d | |||
| &@@om) Ed (_S2v d | |||
| &p) Ed (_S2vei t | |||
| &t) Ed (_S2vei I#d | |||
| @@ -2,12 +2,12 @@ | |||
| // Numbers | |||
| // devanagari numbers are changed to latin characters before translation | |||
| _0 S'u:n.jV | |||
| _0 s'u:n.jV | |||
| _1 'e:k | |||
| _2 d'o: | |||
| _3 t'i:n | |||
| _4 c'a:r: | |||
| _5 p'a:nc | |||
| _4 c:'a:r: | |||
| _5 'pa~c | |||
| _6 ch'@2 | |||
| _7 s'a:t | |||
| _8 'a:th. | |||
| @@ -15,30 +15,30 @@ _9 n'O: | |||
| ?3 _9 n'aU | |||
| _10 d'Vs | |||
| _11 gj'a:r@2 | |||
| _12 b'a:r@2 | |||
| _13 t'E:r@2 | |||
| _14 ch'O:d@2 | |||
| _15 p'Vndr@2 | |||
| _16 s'o:l@2 | |||
| _17 s'Vt:r@2 | |||
| _18 Vth.:'a:r@2 | |||
| _11 gj'a:r-ah | |||
| _12 b'a:rah | |||
| _13 t'e:r@2h | |||
| _14 ch'O:d@2h | |||
| _15 p'Vndr@2h | |||
| _16 s'o:l@2h | |||
| _17 sVtr@2h | |||
| _18 a:th:arah | |||
| _19 Unn'Is | |||
| _20 b'i:s | |||
| _21 Ik:'Is | |||
| _22 b'a:Is | |||
| _23 t'e:Is | |||
| _23 t'ue:Is | |||
| _24 c'O:bIs | |||
| _25 p@c:'Is | |||
| _26 ch@bb'i:rs | |||
| _27 s@t:'a:Is | |||
| _28 ath:'a:Is | |||
| _29 Unt'Is | |||
| _29 ,Unt'Is | |||
| _30 t'i:s | |||
| _31 Ik@t:'Is | |||
| _32 bat:'Is | |||
| _32 b'at:'I'S | |||
| _33 tE~t'Is // E~ ? | |||
| _34 cO~t'Is | |||
| _35 pE~t'Is | |||
| @@ -65,16 +65,16 @@ _53 t'IrpVn | |||
| _54 c'Ou:wVn | |||
| _55 p'achpVn | |||
| _56 chh@p:'Vn | |||
| _57 sVt:'a:w@n | |||
| _58 ath:'a:w@n | |||
| _57 santa:'w@n | |||
| _58 ath:a:'w@n | |||
| _59 Uns'Vth | |||
| _60 s'a:th. | |||
| _61 'Iks@th. | |||
| _62 b'a:s@th. | |||
| _63 t'Irs@th. | |||
| _64 c'O~s@th. | |||
| _65 paIns@th. | |||
| _64 cO:'s@th. | |||
| _65 paI's@th. | |||
| _66 ch'Ija:s@th. | |||
| _67 s'Vrs@th. | |||
| _68 ars@th. | |||
| @@ -92,15 +92,15 @@ _78 athhat:'Vr: | |||
| _79 ,Un^Ia:s'i: | |||
| _80 ,Vss'i: | |||
| _81 Ikja:s'i: | |||
| _82 baIa:s'i: | |||
| _83 tIra:s'i: | |||
| _84 cO:ra:s'i: | |||
| _85 pI'ca:s'i: | |||
| _86 chIja:s'i: | |||
| _87 sVt:a:s'i: | |||
| _88 ath:a:s'i: | |||
| _89 nVwa:s'i: | |||
| _81 Ikja:s'i | |||
| _82 baIa:s'i | |||
| _83 tIra:s'i | |||
| _84 cO:ra:s'i | |||
| _85 pI'ca:s'i | |||
| _86 chIja:s'i | |||
| _87 sVt:a:s'i | |||
| _88 ath:a:s'i | |||
| _89 nVwa:s'i | |||
| _90 nVb:'e: | |||
| _91 Ikj'a:n@we: | |||
| @@ -114,9 +114,9 @@ _98 ath:'a:n@we: | |||
| _99 nIn^j'a:n@we: | |||
| _0C s'O: | |||
| _0M1 h@z'a:r | |||
| _0M1 h@J,a:r | |||
| _0M2 l'a:kh | |||
| _0M3 cr'ore | |||
| _0M3 k@ro:r.V | |||
| _0M4 'Vr@b | |||
| _0M5 kh'Vr@b | |||
| _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| @@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| श S@ | |||
| ष s.@ // retroflex [S] | |||
| स s@ | |||
| ह H@ | |||
| ह H@- | |||
| क़ q@ | |||
| ख़ x@ | |||
| ग़ Q@ | |||
| @@ -199,14 +199,14 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| । dVn.d.V | |||
| // Pronouns | |||
| मैं $u // main: I | |||
| मैं $u // main: IrI | |||
| मुझे $u | |||
| मेरा $u | |||
| मेरी $u | |||
| मेरे $u | |||
| हम $u // we | |||
| हमें $u | |||
| हमे $u | |||
| हमारा $u | |||
| हमारी $u | |||
| हमारे $u | |||
| @@ -234,7 +234,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| इसका $u | |||
| ये $u // they | |||
| इन्हें $u | |||
| इन्हें $u | |||
| इनका $u | |||
| वह $u // he/she/it | |||
| @@ -246,7 +246,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| वे $u // they | |||
| वो $u | |||
| उन्हें $u // unheṃ: them | |||
| उन्हे $u // unheṃ: them | |||
| उनका $u | |||
| उनकी $u | |||
| उनके $u | |||
| @@ -1,5 +1,5 @@ | |||
| // This file is UTF8 encoded | |||
| // This file is UTF8 encoded | |||
| // letter groups: | |||
| // A vowel letters and vowel signs | |||
| @@ -28,423 +28,423 @@ | |||
| // Vowels | |||
| .group अ | |||
| अ V | |||
| अ (ह E // (h | |||
| अह) अ E | |||
| अ V | |||
| अ (ह E // (h | |||
| अह) अ E | |||
| .group आ | |||
| आ a: | |||
| आ a: | |||
| .group इ | |||
| इ I | |||
| इ I | |||
| // इँ i~ | |||
| // इं i~ | |||
| .group ई | |||
| ई i: | |||
| ई (_ i | |||
| ई i: | |||
| ई (_ i | |||
| .group उ | |||
| उ U | |||
| उ U | |||
| .group ऊ | |||
| ऊ u: | |||
| ऊं u~ // + anusvara | |||
| ऊँ u~ // + candrabinbu | |||
| ऊ u | |||
| ऊं u~ // + anusvara | |||
| ऊँ u~ // + candrabinbu | |||
| .group ऋ | |||
| ऋ rI | |||
| ऋ rI | |||
| .group ऌ | |||
| ऌ l- // vocalic l | |||
| ऌ l- // vocalic l | |||
| .group ऍ | |||
| ऍ E // candra e | |||
| ऍ E // candra e | |||
| .group ऎ | |||
| ऎ e | |||
| ऎ e | |||
| .group ए | |||
| ए e: | |||
| ए e: | |||
| .group ऐ | |||
| ऐ E: // ?? [aI] [E:] [&:] | |||
| ऐं E~ | |||
| ऐँ E~ | |||
| ?2 ऐ aI // ?? [aI] [E:] [&:] | |||
| ऐ E: // ?? [aI] [E:] [&:] | |||
| ऐं E~ | |||
| ऐँ E~ | |||
| ?2 ऐ aI // ?? [aI] [E:] [&:] | |||
| .group ऑ | |||
| ऑ O // candra O | |||
| ऑ O // candra O | |||
| .group ऒ | |||
| ऒ o | |||
| ऒ o | |||
| .group ओ | |||
| ओ o: | |||
| ओं o~ // +anusvara | |||
| ओँ o~ // +candrabindu | |||
| ओ o: | |||
| ओं o~ // +anusvara | |||
| ओँ o~ // +candrabindu | |||
| .group औ | |||
| औ O: // ?? [aU] [O:] | |||
| औं O~ // +anusvara | |||
| औँ O~ // +candrabindu | |||
| ?3 औ aU // ?? [aU] [O:] | |||
| औ O: // ?? [aU] [O:] | |||
| औं O~ // +anusvara | |||
| औँ O~ // +candrabindu | |||
| ?3 औ aU // ?? [aU] [O:] | |||
| // Vowel Signs | |||
| .group ा | |||
| ा a: | |||
| ाव aU | |||
| ाव aU | |||
| .group ि | |||
| ि I | |||
| ि I | |||
| // िँ i~ | |||
| // िं i~ | |||
| .group ी | |||
| ी i: | |||
| ी (_ i | |||
| ी i: | |||
| ी (_ i | |||
| .group ु | |||
| ु U | |||
| ु u | |||
| .group ू | |||
| ू u: | |||
| ूं u~ // or O~ ?? | |||
| ूँ u~ | |||
| ू u: | |||
| ूं u~ // or O~ ?? | |||
| ूँ u~ | |||
| .group ृ | |||
| ृ rI | |||
| ृ rI | |||
| .group ॄ | |||
| ॄ rI | |||
| ॄ rI | |||
| .group ॅ | |||
| ॅ E | |||
| ॅ E | |||
| .group ॆ | |||
| ॆ e | |||
| ॆ e | |||
| .group े | |||
| े e: | |||
| े e: | |||
| .group ै | |||
| ै E: // ?? [aI] [E:] [&:] | |||
| ैं E~ | |||
| ैँ E~ | |||
| ?2 ै aI // ?? [aI] [E:] [&:] | |||
| ै E: // ?? [aI] [E:] [&:] | |||
| ैं E~ | |||
| ैँ E~ | |||
| ?2 ै aI // ?? [aI] [E:] [&:] | |||
| .group ॉ | |||
| ॉ O | |||
| ॉ O | |||
| .group ॊ | |||
| ॊ o | |||
| ॊ o | |||
| .group ो | |||
| ो o: | |||
| ों o~ | |||
| ोँ o~ | |||
| ो o: | |||
| ों o~ | |||
| ोँ o~ | |||
| .group ौ | |||
| ौ O: // [O:] or [aU] ?? | |||
| ौं O~ | |||
| ौँ O~ | |||
| ?3 ौ aU // [O:] or [aU] ?? | |||
| ौ O: // [O:] or [aU] ?? | |||
| ौं O~ | |||
| ौँ O~ | |||
| ?3 ौ aU // [O:] or [aU] ?? | |||
| .group ॢ // vowel sign l | |||
| ॢ l- | |||
| ॢ l- | |||
| .group ॣ // vowel sign ll | |||
| ॣ l-: | |||
| ॣ l-: | |||
| .group ॐ | |||
| ॐ o~m | |||
| ॐ o~m | |||
| // Consonants | |||
| .group क | |||
| क kV | |||
| क (B k | |||
| क (्य k: | |||
| क़ qV | |||
| क़ (B q | |||
| क kV | |||
| क (B k | |||
| क (्य k: | |||
| क़ qV | |||
| क़ (B q | |||
| .group ख | |||
| ख khV | |||
| ख (B kh | |||
| ख़ xV | |||
| ख़ (B x | |||
| ख khV | |||
| ख (B kh | |||
| ख़ xV | |||
| ख़ (B x | |||
| .group ग | |||
| ग gV | |||
| ग (B g | |||
| ग़ QV | |||
| ग़ (B Q | |||
| ग gV | |||
| ग (B g | |||
| ग़ QV | |||
| ग़ (B Q | |||
| .group घ | |||
| घ ghV | |||
| घ (B gh | |||
| घ ghV | |||
| घ (B gh | |||
| .group ङ | |||
| ङ NV | |||
| ङ (B N | |||
| ्) ङ (_ N@ | |||
| ङ NV | |||
| ङ (B N | |||
| ्) ङ (_ N@ | |||
| .group च | |||
| च cV | |||
| च (B c | |||
| च (्य c: | |||
| च cV | |||
| च (B c | |||
| च (्य c: | |||
| .group छ | |||
| छ chV | |||
| छ (B ch | |||
| छ chV | |||
| छ (B ch | |||
| .group ज | |||
| ज JV | |||
| ज (B J | |||
| ज़ zV | |||
| ज़ (B z | |||
| ज JV | |||
| ज (B J | |||
| ज़ zV | |||
| ज़ (B z | |||
| .group झ | |||
| झ JhV | |||
| झ (B Jh | |||
| झ JhV | |||
| झ (B Jh | |||
| .group ञ | |||
| ञ n^V | |||
| ञ (B n^ | |||
| ्) ञ (_ n^ | |||
| ञ n^V | |||
| ञ (B n^ | |||
| ्) ञ (_ n^ | |||
| .group ट | |||
| ट t.V | |||
| ट (B t. | |||
| ट (्य t.: | |||
| ट t.V | |||
| ट (B t. | |||
| ट (्य t.: | |||
| .group ठ | |||
| ठ th.V | |||
| ठ (B th. | |||
| ठ th.V | |||
| ठ (B th. | |||
| .group ड | |||
| ड d.V | |||
| ड (B d. | |||
| ड d.V | |||
| ड (B d. | |||
| ड़ r.V | |||
| ड़ (B r. | |||
| ड़ r.V | |||
| ड़ (B r. | |||
| .group ढ | |||
| ढ dh.V | |||
| ढ (B dh. | |||
| ढ़ r.hV // nukta (should retroflex flap) | |||
| ढ़ (B r.h // nukta | |||
| ढ dh.V | |||
| ढ (B dh. | |||
| ढ़ r.hV // nukta (should retroflex flap) | |||
| ढ़ (B r.h // nukta | |||
| .group ण | |||
| ण n.V // (temporary) same as dental [n] | |||
| ण (B n. | |||
| ्) ण (_ n.@ | |||
| ण n.V // (temporary) same as dental [n] | |||
| ण (B n. | |||
| ्) ण (_ n.@ | |||
| .group त | |||
| त tV | |||
| त (B t | |||
| त (्य t: | |||
| त tV | |||
| त (B t | |||
| त (्य t: | |||
| .group थ | |||
| थ thV | |||
| थ (B th | |||
| थ thV | |||
| थ (B th | |||
| .group द | |||
| द dV | |||
| द (B d | |||
| द dV | |||
| द (B d | |||
| .group ध | |||
| ध dhV | |||
| ध (B dh | |||
| ध dhV | |||
| ध (B dh | |||
| .group न | |||
| न nV | |||
| न (B n | |||
| ्) न (_ n@ | |||
| र्) न (_ n // r +virama | |||
| न nV | |||
| न (B n | |||
| ्) न (_ n@ | |||
| र्) न (_ n // r +virama | |||
| .group ऩ | |||
| ऩ n: // should this be a long [n] ? | |||
| ऩ n: // should this be a long [n] ? | |||
| .group प | |||
| प pV | |||
| प (B p | |||
| प (्य p: | |||
| प pV | |||
| प (B p | |||
| प (्य p: | |||
| .group फ | |||
| फ phV | |||
| फ (B ph | |||
| फ़ fV | |||
| फ़ (B f | |||
| फ phV | |||
| फ (B ph | |||
| फ़ fV | |||
| फ़ (B f | |||
| .group ब | |||
| ब bV | |||
| ब (B b | |||
| ब bV | |||
| ब (B b | |||
| .group भ | |||
| भ bhV | |||
| भ (B bh | |||
| भ bhV | |||
| भ (B bh | |||
| .group म | |||
| म mV | |||
| म (B m | |||
| ्) म (_ m@ | |||
| र्) म (_ m // r +virama | |||
| न्) म (_ m // n +virama | |||
| म mV | |||
| म (B m | |||
| ्) म (_ m@ | |||
| र्) म (_ m // r +virama | |||
| न्) म (_ m // n +virama | |||
| .group य | |||
| य jV | |||
| य (B j | |||
| ्) य (_ j@ | |||
| य j@ | |||
| य (B j | |||
| ्) य (_ j@ | |||
| .group र | |||
| र rV | |||
| र (B r | |||
| ्) र (_ r@ | |||
| र rV | |||
| र (B r | |||
| ्) र (_ r@ | |||
| .group ऱ // rra | |||
| ऱ rV // (temporary) same as [r] | |||
| ऱ (B r | |||
| ्) ऱ (_ r@ | |||
| ऱ rV // (temporary) same as [r] | |||
| ऱ (B r | |||
| ्) ऱ (_ r@ | |||
| .group ल | |||
| ल lV | |||
| ल (B l | |||
| ्) ल (_ l@ | |||
| ल lV | |||
| ल (B l | |||
| ्) ल (_ l@ | |||
| .group ळ | |||
| ळ l.V | |||
| ळ (B l. | |||
| ्) ळ (_ l.@ | |||
| ळ l.V | |||
| ळ (B l. | |||
| ्) ळ (_ l.@ | |||
| .group ऴ | |||
| ऴ l.V // (temporary) same as [l.] | |||
| ऴ (B l. | |||
| ्) ऴ (_ l.@ | |||
| ऴ l.V // (temporary) same as [l.] | |||
| ऴ (B l. | |||
| ्) ऴ (_ l.@ | |||
| .group व | |||
| व vV | |||
| व (B v | |||
| _) व wV | |||
| _) व (B w | |||
| _) व (् v // +virma | |||
| व vV | |||
| व (B v | |||
| _) व wV | |||
| _) व (B w | |||
| _) व (् v // +virma | |||
| .group श | |||
| श SV | |||
| श (B S | |||
| श SV | |||
| श (B S | |||
| .group ष | |||
| ष s.V //?? or retroflex [S] | |||
| ष (B s. //?? | |||
| ष s.V //?? or retroflex [S] | |||
| ष (B s. //?? | |||
| .group स | |||
| स sV | |||
| स (B s | |||
| स sV | |||
| स (B s | |||
| .group ह | |||
| ह HV | |||
| ह (B H | |||
| ह H | |||
| ह (B H | |||
| // nukta, modifies a consonant | |||
| .group ऽ // avagraha, lengthens a vowel ?? | |||
| ऽ : | |||
| ऽ : | |||
| .group ँ | |||
| ँ n // candrabindu | |||
| .group ं | |||
| ं n // anusvara | |||
| ं (प m | |||
| ं (फ m | |||
| ं (ब m | |||
| ं (भ m | |||
| ं (म m | |||
| ं (ट n. | |||
| ं (ठ n. | |||
| ं (ड n. | |||
| ं (ढ n. | |||
| ं (ण n. | |||
| ं (च n^ | |||
| ं (छ n^ | |||
| ं (ज n^ | |||
| ं (झ n^ | |||
| ं (ञ n^ | |||
| ं (य n^ | |||
| ं (क N | |||
| ं (ख N | |||
| ं (ग N | |||
| ं (घ N | |||
| ं (ङ N | |||
| ं (ह N | |||
| ँ n // candrabindu | |||
| .group ं | |||
| ं n // anusvara | |||
| ं (प m | |||
| ं (फ m | |||
| ं (ब m | |||
| ं (भ m | |||
| ं (म m | |||
| ं (ट n. | |||
| ं (ठ n. | |||
| ं (ड n. | |||
| ं (ढ n. | |||
| ं (ण n. | |||
| ं (च n^ | |||
| ं (छ n^ | |||
| ं (ज n^ | |||
| ं (झ n^ | |||
| ं (ञ n^ | |||
| ं (य n^ | |||
| ं (क N | |||
| ं (ख N | |||
| ं (ग N | |||
| ं (घ N | |||
| ं (ङ N | |||
| .group ः | |||
| ः H // visarga | |||
| ः H // visarga | |||
| .group ् // virama | |||
| ् | |||
| ् | |||
| // Extra consonants | |||
| .group क़ // qa | |||
| क़ qV | |||
| क़ (B q | |||
| क़ qV | |||
| क़ (B q | |||
| .group ख़ // khha | |||
| ख़ xV | |||
| ख़ (B x | |||
| ख़ xV | |||
| ख़ (B x | |||
| .group ग़ // ghha | |||
| ग़ QV | |||
| ग़ (B Q | |||
| ग़ QV | |||
| ग़ (B Q | |||
| .group ज़ // za | |||
| ज़ zV | |||
| ज़ (B z | |||
| ज़ zV | |||
| ज़ (B z | |||
| .group ड़ // dddha (should retroflex flap) | |||
| ड़ r.V | |||
| ड़ (B r. | |||
| ड़ r.V | |||
| ड़ (B r. | |||
| .group ढ़ // rha (aspirated version of dddha) | |||
| ढ़ r.hV | |||
| ढ़ (B r.h | |||
| ढ़ r.hV | |||
| ढ़ (B r.h | |||
| .group फ़ // fa | |||
| फ़ fV | |||
| फ़ (B f | |||
| फ़ fV | |||
| फ़ (B f | |||
| .group य़ // yya | |||
| य़ jV | |||
| य़ (B j | |||
| य़ jV | |||
| य़ (B j | |||
| .group ॠ // rr | |||
| ॠ V-rr | |||
| ॠ V-rr | |||
| .group ॡ // ll | |||
| ॡ l-: // long syllabic l | |||
| ॡ l-: // long syllabic l | |||
| // If we find a Latin letter a-z, then translate as English | |||
| // (This is now done automatically by the eSpeak program) | |||
| .group o | |||
| o _^_EN | |||
| D__) of (__D me | |||
| o _^_EN | |||
| D__) of (__D me | |||
| .group | |||
| $ dOlV | |||
| % pVsEnt | |||
| $ dOlV | |||
| % pVsEnt | |||
| @@ -87,33 +87,65 @@ _! a:S;c@rjacihn@m | |||
| // numbers | |||
| _0 p'u:Jj@m | |||
| _1 'onny | |||
| _2 r'an.t.y | |||
| _3 m'unny | |||
| _2 r@n.d#y | |||
| _3 m'u:nny | |||
| _4 n'a:ly | |||
| _5 'an^cy | |||
| _6 'aR2y | |||
| _6 'a:R2y | |||
| _7 'e:r.y | |||
| _8 'et.t.y | |||
| _9 'onpaty | |||
| _1X p'ati | |||
| _10 p'atty | |||
| _1X p'ati | |||
| _11 p'atinonny | |||
| _12 p'antran.t.y | |||
| _15 p'atinan^cy | |||
| _16 p'atinaR2y | |||
| _17 p'atine:R2y | |||
| _18 p'atine:t.t.y | |||
| _19 p'attompatu | |||
| _2X 'irupat | |||
| _3X m'uppat | |||
| _4X n'a:lppat | |||
| _5X 'anpat | |||
| _6X 'aR2upat | |||
| _7X 'er.upat | |||
| _8X 'en.pat | |||
| _9X t'on.n.u:R2 | |||
| _20 'irup'aty | |||
| _2X 'irupatti | |||
| _30 m'uppaty | |||
| _3X m'uppatti': | |||
| _40 n'a:lppaty | |||
| _4X n'a:lppatti | |||
| _50 'anpaty | |||
| _5X 'anpatti | |||
| _60 'aR2upaty | |||
| _6X 'aR2upatti | |||
| _70 'er.'upaty | |||
| _7X 'er.'upatti | |||
| _80 'en.paty | |||
| _8X 'en.patti | |||
| _90 t'on.n.u:r: | |||
| _9X t'on.n.u:t.t.i | |||
| _0C n'u:R | |||
| _0M1 'a:jiRam | |||
| _0M2 l'aks.am | |||
| _1C0 n'u:r: | |||
| _1C n'u:t.t.i | |||
| _2C0 irunn'u:r | |||
| _2C irunn'u:t.t.i | |||
| _3C0 munn'u:r | |||
| _3C munn'u:t.t.i | |||
| _4C0 na:nnu:r | |||
| _4C na:nnu:t.t.i | |||
| _5C0 'an^cu:r | |||
| _5C 'an^cu:t.t.i | |||
| _6C0 aR2unu:r | |||
| _6C aR2unu:t.t.i | |||
| _7C0 'er.'unu:r | |||
| _7C 'er.'unu:t.t.i | |||
| _8C0 'en.n.u:r | |||
| _8C 'en.n.u:t.t.i | |||
| _9C0 tol.l.'a:jiRam | |||
| _9C tol.l.'a:jiRatti | |||
| _0M1x 'a:jiRam | |||
| _0M1 'a:jiRat.t.i | |||
| _0M2x l'aks.am | |||
| _0M2 l'aks.at.t.i | |||
| _0M3 k'o:t.i | |||
| _dpt _d'aS;a:mS;@m_ | |||
| @@ -1,5 +1,5 @@ | |||
| // This file is UTF8 encoded | |||
| // This file is UTF8 encoded | |||
| // Spelling to phoneme rules for Malayalam | |||
| // A means vowel letters (not vowel signs) | |||
| @@ -17,266 +17,267 @@ | |||
| ൭ 7 | |||
| ൮ 8 | |||
| ൯ 9 | |||
| ോ ോ | |||
| ോ ോ | |||
| ൊ ൊ | |||
| ൌ ൌ | |||
| .group ക | |||
| ക ka | |||
| ക (B k | |||
| ക ka | |||
| ക (B k | |||
| .group ഖ | |||
| ഖ kha | |||
| ഖ (B kh | |||
| ഖ kha | |||
| ഖ (B kh | |||
| .group ഗ | |||
| ഗ ga | |||
| ഗ (B g | |||
| ഗ ga | |||
| ഗ (B g | |||
| .group ഘ | |||
| ഘ gha | |||
| ഘ (B gh | |||
| ഘ gha | |||
| ഘ (B gh | |||
| .group ങ | |||
| ങ Na | |||
| ങ (B N | |||
| ങ Na | |||
| ങ (B N | |||
| .group ച | |||
| ച ca | |||
| ച (B c | |||
| ച ca | |||
| ച (B c | |||
| .group ഛ | |||
| ഛ cha | |||
| ഛ (B ch | |||
| ഛ cha | |||
| ഛ (B ch | |||
| .group ജ | |||
| ജ Ja | |||
| ജ (B J | |||
| ജ Ja | |||
| ജ (B J | |||
| .group ഝ | |||
| ഝ Jha | |||
| ഝ (B Jh | |||
| ഝ Jha | |||
| ഝ (B Jh | |||
| .group ഞ | |||
| ഞ n^a | |||
| ഞ (B n^ | |||
| ഞ n^a | |||
| ഞ (B n^ | |||
| .group ട | |||
| ട t.a | |||
| ട (B t. | |||
| ട t.a | |||
| ട (B t. | |||
| .group ഠ | |||
| ഠ th.a | |||
| ഠ (B th. | |||
| ഠ th.a | |||
| ഠ (B th. | |||
| .group ഡ | |||
| ഡ d.a | |||
| ഡ (B d. | |||
| ഡ d.a | |||
| ഡ (B d. | |||
| .group ഢ | |||
| ഢ dh.a | |||
| ഢ (B dh. | |||
| ഢ dh.a | |||
| ഢ (B dh. | |||
| .group ണ | |||
| ണ n.a | |||
| ണ (B n. | |||
| ണ n.a | |||
| ണ (B n. | |||
| .group ത | |||
| ത ta | |||
| ത (B t | |||
| ത ta | |||
| ത (B t | |||
| .group ഥ | |||
| ഥ tha | |||
| ഥ (B th | |||
| ഥ tha | |||
| ഥ (B th | |||
| .group ദ | |||
| ദ da | |||
| ദ (B d | |||
| ദ da | |||
| ദ (B d | |||
| .group ധ | |||
| ധ dha | |||
| ധ (B dh | |||
| ധ dha | |||
| ധ (B dh | |||
| .group ന | |||
| ന na | |||
| ന (B n | |||
| ന na | |||
| ന (B n | |||
| .group പ | |||
| പ pa | |||
| പ (B p | |||
| പ pa | |||
| പ (B p | |||
| .group ഫ | |||
| ഫ pha | |||
| ഫ (B p | |||
| ഫ pha | |||
| ഫ (B p | |||
| _പ്രൊ) ഫ (സര് fa | |||
| _പ്രൊ) ഫ (സര് fa | |||
| .group ബ | |||
| ബ ba | |||
| ബ (B b | |||
| ബ ba | |||
| ബ (B b | |||
| .group ഭ | |||
| ഭ bha | |||
| ഭ (B bh | |||
| ഭ bha | |||
| ഭ (B bh | |||
| .group മ | |||
| മ ma | |||
| മ (B m | |||
| മ ma | |||
| മ (B m | |||
| .group യ | |||
| യ ja | |||
| യ (B j | |||
| യ ja | |||
| യ (B j | |||
| .group ര | |||
| ര ra | |||
| ര (B r | |||
| ര ra | |||
| ര (B r | |||
| .group റ | |||
| റ R2a | |||
| റ (B R2 | |||
| ന്) റ d# | |||
| റ്റ t.t. // ?? R2R2 = t.t. | |||
| റ R2a | |||
| റ (B R2 | |||
| ന്) റ d# | |||
| റ്റ t.t. // ?? R2R2 = t.t. | |||
| .group ല | |||
| ല la | |||
| ല (B l | |||
| ല la | |||
| ല (B l | |||
| .group ള | |||
| ള l.a | |||
| ള (B l. | |||
| ള l.a | |||
| ള (B l. | |||
| .group ഴ // retroflex [r.] ? | |||
| ഴ r.a | |||
| ഴ (B r. | |||
| ഴ r.a | |||
| ഴ (B r. | |||
| .group വ | |||
| വ va | |||
| വ (B v | |||
| വ va | |||
| വ (B v | |||
| .group ശ | |||
| ശ S;a | |||
| ശ (B S; | |||
| ശ S;a | |||
| ശ (B S; | |||
| .group ഷ | |||
| ഷ s.a | |||
| ഷ (B s. | |||
| ഷ s.a | |||
| ഷ (B s. | |||
| .group സ | |||
| സ sa | |||
| സ (B s | |||
| സ sa | |||
| സ (B s | |||
| .group ഹ | |||
| ഹ ha | |||
| ഹ (B h | |||
| ഹ ha | |||
| ഹ (B h | |||
| // chillu consonants | |||
| .group ൺ | |||
| ൺ n. | |||
| ൺ n. | |||
| .group ൻ | |||
| ൻ n | |||
| ൻ n | |||
| .group ർ | |||
| ർ r | |||
| ർ r | |||
| .group ൽ | |||
| ൽ l | |||
| ൽ l | |||
| .group ൾ | |||
| ൾ l. | |||
| ൾ l. | |||
| .group ൿ | |||
| ൿ k | |||
| ൿ k | |||
| .group 0xe0b4 // characters which start with UTF-8 bytes: [e0 b4] | |||
| ഽ // avagraha | |||
| ഽ // avagraha | |||
| ം m // anusvara (this should nasalize the vowel) | |||
| ം m // anusvara (this should nasalize the vowel) | |||
| ഃ h // visarga | |||
| ഃ h // visarga | |||
| അ a | |||
| അ a | |||
| ആ a: | |||
| ആ a: | |||
| ഇ i | |||
| ഇ i | |||
| ഈ i: | |||
| ഈ i: | |||
| ഉ u | |||
| ഉ u | |||
| ഊ u: | |||
| ഊ u: | |||
| ഋ Ry | |||
| ഋ Ry | |||
| എ e | |||
| _) എ ;e | |||
| എ e | |||
| _) എ ;e | |||
| ഏ e: | |||
| _) ഏ ;e: | |||
| ഏ e: | |||
| _) ഏ ;e: | |||
| ഐ aI | |||
| ഐ aI | |||
| ഒ o | |||
| ഒ o | |||
| ഓ o: | |||
| ഓ o: | |||
| ഔ aU | |||
| ഔ aU | |||
| // combining vowel signs | |||
| ാ a: | |||
| ാ a: | |||
| ി i | |||
| ി (ല്K I | |||
| ി i | |||
| ി (ല്K I | |||
| .group 0xe0b5 // characters which start with UTF-8 bytes: [e0 b5] | |||
| ീ i: | |||
| ീ i: | |||
| ു u | |||
| ു u | |||
| ൂ u: | |||
| ൂ u: | |||
| ൃ r- | |||
| ൃ r- | |||
| ൄ r-: | |||
| ൄ r-: | |||
| െ e | |||
| െ e | |||
| േ e: | |||
| േ e: | |||
| ൈ aI | |||
| ൈ aI | |||
| ൊ o | |||
| ൊ o | |||
| ോ o: | |||
| ോ o: | |||
| ൌ aU | |||
| ൗ aU // au length mark, treat at [aU] ? | |||
| ൌ aU | |||
| ൗ aU // au length mark, treat at [aU] ? | |||
| ് // virama | |||
| ൎ // chillu-virama (unofficial) | |||
| ്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character | |||
| ് (_ y // epenthetic vowel at end of word | |||
| ് // virama | |||
| ൎ // chillu-virama (unofficial) | |||
| ്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character | |||
| ് (_ y // epenthetic vowel at end of word | |||
| ൠ Ry: | |||
| ൠ Ry: | |||
| ൡ ly: | |||
| ൡ ly: | |||
| .group 0xe0a4 // devanagari | |||
| 0xe0a4 _^_HI // switch to hindi voice | |||
| 0xe0a4 _^_HI // switch to hindi voice | |||
| .group 0xe0a5 // devanagari | |||
| 0xe0a5 _^_HI | |||
| 0xe0a5 _^_HI | |||
| .group | |||
| $ do:l.ar | |||
| $ do:l.ar | |||
| @@ -1,4 +1,4 @@ | |||
| | |||
| // This file is UTF8 encoded | |||
| // Punjabi/Gurmukhi | |||
| @@ -24,14 +24,14 @@ _15 p'Vnd@Ra~ | |||
| _16 s'ol.a~ | |||
| _17 s@t'aRa~ | |||
| _18 Vth.'aRa~ | |||
| _19 'Uni | |||
| _19 'Unni | |||
| _20 v'iH | |||
| _21 Ik:i | |||
| _22 b'ai | |||
| _23 t'ei | |||
| _24 c'Ovi | |||
| _25 p'VnJhi | |||
| _25 p'Vc:i | |||
| _26 ch'Vb:i | |||
| _27 s@t'ai | |||
| _28 Vth.'ai | |||
| @@ -40,79 +40,80 @@ _29 Un'Vt:i | |||
| _30 t'iH | |||
| _31 Ik'Vt:i | |||
| _32 b'Vt:i | |||
| _33 t'eti | |||
| _34 c'O~ti | |||
| _35 p'E~ti | |||
| _33 t'et:i | |||
| _34 c'ONti | |||
| _35 p'ENti | |||
| _36 ch'Vt:i | |||
| _37 s'E~ti | |||
| _37 s'ENti | |||
| _38 Vth.'Vt:i | |||
| _39 Un@t'ali | |||
| _39 U~Nt'ali | |||
| _40 c'ali | |||
| _41 Ik@t'ali | |||
| _42 b@t'ali | |||
| _42 be'ali | |||
| _43 t@R@t'ali | |||
| _44 cOt'ali | |||
| _45 p@nJ@t'ali | |||
| _44 cUt'ali | |||
| _45 p@nt'ali | |||
| _46 chI'ali | |||
| _47 s@nt'ali | |||
| _48 Vth.:@t'ali | |||
| _49 'Un.I~Ja | |||
| _48 ,@R2@t'ali | |||
| _49 Un'VnJa | |||
| _50 p@nJ'aH | |||
| _51 'Ik@vI~Ja | |||
| _52 b'VvI~Ja | |||
| _53 t'VR@vI~Ja | |||
| _54 c'VRI~Ja | |||
| _55 p'Vc@vI~Ja | |||
| _56 ch'VpI~Ja | |||
| _57 s'Vt@vI~Ja | |||
| _58 'Vth.:@vI~Ja | |||
| _51 ,@k@v'VnJa | |||
| _52 b@v'VnJa | |||
| _53 t,@R@v'VnJa | |||
| _54 cUR'VnJa | |||
| _55 p,@c@v'VnJa | |||
| _56 ch@p'VnJa | |||
| _57 s,@t@v'VnJa | |||
| _58 ,@th.@v'VnJa | |||
| _59 Un.'ath. | |||
| _60 s'Vth.: | |||
| _61 Ik'ath. | |||
| _62 b'ath.H | |||
| _63 t@R'eth.H | |||
| _64 c'Oth.H | |||
| _65 p'E~th. | |||
| _66 chI'ath. | |||
| _67 s@t'aH@th. | |||
| _68 Vth.:'ath. | |||
| _61 Ik'aH@t. | |||
| _62 b'aH@t. | |||
| _63 t@R'e~H@t. | |||
| _64 c'O~H@t. | |||
| _65 p'E~H@t. | |||
| _66 che'aH@t. | |||
| _67 s@t'aH@t. | |||
| _68 ,@th.'aH@t. | |||
| _69 Un.'Vt:@R | |||
| _70 s'Vt:@R | |||
| _71 IkH'Vt:@R | |||
| _71 Ik'Vt:@R | |||
| _72 b@H'Vt:@R | |||
| _73 t@H'Vt:@R | |||
| _73 t@H'et:@R | |||
| _74 cOH'Vt:@R | |||
| _75 p@nJ'Vt:@R | |||
| _75 p@J'Vt:@R | |||
| _76 chIH'Vt:@R | |||
| _77 s@t'Vt:@R | |||
| _78 Vth.'Vt:@R | |||
| _79 Un.'asi | |||
| _80 'Vssi | |||
| _81 Ik'asi | |||
| _82 bI'asi | |||
| _83 t@R@'asi | |||
| _84 c@R'asi | |||
| _85 p@nJ'asi | |||
| _86 chI'asi | |||
| _81 ,IkI;'asi | |||
| _82 bI;'asi | |||
| _83 t,@RI;'asi | |||
| _84 cUR'asi | |||
| _85 p@c'asi | |||
| _86 chI;'asi | |||
| _87 s@t'asi | |||
| _88 Vth.'asi | |||
| _89 Un.a~n@v'eN | |||
| _89 Un'an@v,e~ | |||
| _90 n'Vb:e | |||
| _91 Ik@'an@v,e~ | |||
| _92 bI;'an@v,e~ | |||
| _93 t@R@'an@ve~ | |||
| _94 c@R'an@ve~ | |||
| _95 p@c'an@ve~ | |||
| _91 Ik'an@v,e~ | |||
| _92 b'an@v,e~ | |||
| _93 t@R'a~n@v,e~ | |||
| _94 cUR'an@v,e~ | |||
| _95 p@c'an@v,e~ | |||
| _96 chI'an@ve~ | |||
| _97 s@t'an@ve~ | |||
| _98 Vth.'an@ve~ | |||
| _99 nIR'Vnn@ve~ | |||
| _99 n@R2'I~n@v,e~ | |||
| _0C s'O | |||
| _0M1 H@J'aR | |||
| @@ -130,8 +131,6 @@ _dpt _dOth // ?? | |||
| ੱ VddVk | |||
| ਃ visaRg | |||
| ੍ hVlVnt | |||
| ॄ addak | |||
| ਅ 'ERV | |||
| ੲ 'IRI | |||
| @@ -157,15 +156,13 @@ _ਔ 'ERV||kVnOR'a | |||
| ੌ kVn'ORa | |||
| । d.'Vnd.i | |||
| ₹ rupi | |||
| ਸਰਕਾਰ sR@k'aR | |||
| ਸਰਕਾਰੀ sR@k'aRi | |||
| $textmode | |||
| ਸੋਫਟਵਿਅਰ software | |||
| ਈਮੇਲ email | |||
| ਕੀਬੋਰਡ keyboard | |||
| ਬੋਰਡ board | |||
| $phonememode | |||
| // English words | |||
| ਸੋਫਟਵਿਅਰ s'OftwER | |||
| ਵੈਬਪੇਜ w'EbpeIdZ | |||
| ਈਮੇਲ 'i:meIl | |||
| ਕੀਬੋਰਡ k'i:boRd | |||
| @@ -647,6 +647,7 @@ almoço $alt $verb | |||
| amarelo $alt | |||
| ameba $alt | |||
| amores $alt2 | |||
| antonieta $alt2 | |||
| apego $alt2 $noun | |||
| apelo $alt $verb | |||
| aposto $alt $verb | |||
| @@ -723,7 +724,7 @@ coice $alt2 | |||
| colabore $alt | |||
| colete $alt2 | |||
| colchete $alt2 | |||
| colher $alt $verb | |||
| colher $alt $noun | |||
| colheres $alt $noun | |||
| colmeia $alt | |||
| colore $alt | |||
| @@ -762,8 +763,6 @@ descordo $alt | |||
| desespero $alt2 $noun | |||
| desfecho $alt2 | |||
| desprezo $alt $verb | |||
| deva $alt2 | |||
| devo $alt2 | |||
| deveras $alt | |||
| dez $alt | |||
| diarreia $alt | |||
| @@ -839,6 +838,8 @@ fogos $alt | |||
| foguete $alt2 | |||
| foice $alt2 | |||
| forca $alt2 | |||
| força $alt2 $noun | |||
| forço $alt | |||
| forças $alt2 | |||
| fordes $alt2 | |||
| fores $alt2 | |||
| @@ -407,6 +407,7 @@ respond) e (L07_ e // cor- | |||
| viv) e (L07_ e // re- | |||
| qu) e (brL04_ E | |||
| _hosp) e (dL03_ E | |||
| _d) e (vL03_ e | |||
| _gr) e (gL03_ e | |||
| _n) e (grL03_ e | |||
| _estr) ei (L03_ EI | |||
| @@ -164,4 +164,9 @@ _dpt _ISaRI'Ia_ | |||
| // Exception of phonemes | |||
| یہ jE $u | |||
| کہ kE $u | |||
| وہ wo: $u | |||
| پاکستان p'a:k'i:st'a:n | |||
| @@ -19,7 +19,7 @@ | |||
| // vowel signs, alif acts as consonants at start of word if these follow | |||
| .L01 َ ِ ُ و ی ع ا | |||
| .L01 َ ِ ُ و ی ع ا ے | |||
| // VOWELS | |||
| @@ -52,6 +52,7 @@ | |||
| _) ا a | |||
| _) او u: | |||
| _) ای i: | |||
| ائ a:j | |||
| .group آ | |||
| آ a: | |||
| @@ -68,13 +69,13 @@ _) ای i: | |||
| وُ u: | |||
| وٗ u: | |||
| و (L01 v | |||
| _) و v | |||
| _) و vV | |||
| .group ی | |||
| ی e: | |||
| ی (L01 j | |||
| ی (_ i: | |||
| _) ی j | |||
| _) ی jV | |||
| .group ے // yeh barree | |||
| @@ -1,4 +1,4 @@ | |||
| name indonesian-test | |||
| name indonesian | |||
| language id | |||
| gender male | |||
| @@ -0,0 +1,2 @@ | |||
| name georgian | |||
| language ka | |||
| @@ -1,4 +1,4 @@ | |||
| name nepali-test | |||
| name nepali | |||
| language ne | |||
| gender male | |||
| @@ -0,0 +1,5 @@ | |||
| name bulgarian | |||
| language bg | |||
| stressAmp 13 12 17 17 20 22 22 21 | |||
| stressLength 180 170 200 200 200 200 210 220 | |||
| @@ -1,5 +1,5 @@ | |||
| language cy | |||
| name welsh-test | |||
| name welsh | |||
| gender male | |||
| intonation 4 | |||
| @@ -1,4 +1,4 @@ | |||
| name icelandic-test | |||
| name icelandic | |||
| language is | |||
| gender male | |||
| @@ -1,4 +1,4 @@ | |||
| name macedonian-test | |||
| name macedonian | |||
| language mk | |||
| gender male | |||
| @@ -1,4 +1,4 @@ | |||
| name russian_test | |||
| name russian | |||
| language ru | |||
| gender male | |||
| @@ -1,2 +0,0 @@ | |||
| name georgian-test | |||
| language ka | |||
| @@ -1,5 +0,0 @@ | |||
| name bulgarian-test | |||
| language bg | |||
| stressAmp 13 12 17 17 20 22 22 21 | |||
| stressLength 180 170 200 200 200 200 210 220 | |||
| @@ -1,4 +0,0 @@ | |||
| name irish-test | |||
| language ga | |||
| stressrule 0 | |||
| @@ -0,0 +1,37 @@ | |||
| //==================================================== | |||
| // Bengali, inherits from Hindi | |||
| //==================================================== | |||
| phoneme @ | |||
| vowel flag1 starttype #@ endtype #@ | |||
| length 65 | |||
| ChangeIfDiminished(@-) | |||
| IF nextPh(H) THEN | |||
| FMT(vowel/@_low) | |||
| ENDIF | |||
| FMT(vowel/@_bck) | |||
| endphoneme | |||
| phoneme V | |||
| vowel flag1 starttype #@ endtype #@ | |||
| length 180 | |||
| CALL hi/V | |||
| endphoneme | |||
| phoneme a: | |||
| vowel long starttype #a endtype #a | |||
| length 230 | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| phoneme o: | |||
| vowel long starttype #o endtype #o | |||
| length 220 | |||
| FMT(vowel/o_2) | |||
| endphoneme | |||
| @@ -136,7 +136,7 @@ endphoneme | |||
| phoneme a: | |||
| vowel long starttype #a endtype #a | |||
| length 230 | |||
| length 190 | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| @@ -149,7 +149,7 @@ endphoneme | |||
| phoneme o: | |||
| vowel long starttype #o endtype #o | |||
| length 220 | |||
| length 227 | |||
| FMT(vowel/o_2) | |||
| endphoneme | |||
| @@ -132,7 +132,7 @@ phoneme v | |||
| endphoneme | |||
| phoneme r | |||
| import_phoneme base/* | |||
| import_phoneme base/** | |||
| endphoneme | |||
| phoneme R | |||
| @@ -142,3 +142,20 @@ endphoneme | |||
| phoneme d# // 'rr' sounds like English 'd' | |||
| import_phoneme base/d | |||
| endphoneme | |||
| phoneme kh2 | |||
| vls vel stop | |||
| lengthmod 2 | |||
| voicingswitch g | |||
| Vowelin f1=0 f2=2300 200 300 f3=-150 80 | |||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/k_asp2, 50) | |||
| ENDIF | |||
| IF nextPh(l) THEN | |||
| WAV(ustop/kl) | |||
| ENDIF | |||
| WAV(ustop/k_asp2, 90) | |||
| endphoneme | |||
| @@ -189,18 +189,8 @@ phoneme l | |||
| endphoneme | |||
| phoneme x // this is [R] from Slovak/Czech | |||
| liquid | |||
| trill | |||
| ipa ʁ | |||
| lengthmod 6 | |||
| IF thisPh(isWordStart) THEN | |||
| ChangePhoneme(h) // Change by Cleverson 22.09.2012 | |||
| ENDIF | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-300 80 | |||
| Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk | |||
| FMT(r3/r_trill) addWav(r3/r_trill.wav, 50) | |||
| phoneme x // (previously [R] from Slovak/Czech) | |||
| import_phoneme base/h | |||
| endphoneme | |||
| @@ -1718,6 +1718,15 @@ include ph_french_ca | |||
| phonemetable hi base | |||
| include ph_hindi | |||
| phonemetable bn hi | |||
| include ph_bengali | |||
| phonemetable ne hi | |||
| include ph_nepali | |||
| phonemetable ur hi | |||
| include ph_urdu | |||
| phonemetable ta hi | |||
| include ph_tamil | |||
| @@ -1727,9 +1736,6 @@ include ph_kannada | |||
| phonemetable ml hi | |||
| include ph_malayalam | |||
| phonemetable ur hi | |||
| include ph_urdu | |||
| phonemetable hu base | |||
| include ph_hungarian | |||
| @@ -1857,12 +1863,6 @@ include ph_georgian | |||
| phonemetable rw base2 | |||
| include ph_kinyarwanda | |||
| //phonemetable bn hi | |||
| //include ph_bengali | |||
| phonemetable ne hi | |||
| include ph_nepali | |||
| //phonemetable mr hi | |||
| //include ph_marathi | |||
| @@ -51,15 +51,21 @@ static char letterGroupsDefined[N_LETTER_GROUPS]; | |||
| MNEM_TAB mnem_rules[] = { | |||
| {"unpr", 0x01}, | |||
| {"w_alt1", 0x11}, | |||
| {"w_alt2", 0x12}, | |||
| {"w_alt3", 0x13}, | |||
| // {"w_alt4", 0x14}, | |||
| {"w_alt4", 0x14}, | |||
| {"w_alt5", 0x15}, | |||
| {"w_alt6", 0x16}, | |||
| {"w_alt", 0x11}, // note: put longer names before their sub-strings | |||
| {"p_alt1", 0x21}, | |||
| {"p_alt2", 0x22}, | |||
| {"p_alt3", 0x23}, | |||
| // {"p_alt4", 0x24}, | |||
| {"p_alt4", 0x24}, | |||
| {"p_alt5", 0x25}, | |||
| {"p_alt6", 0x26}, | |||
| {"p_alt", 0x21}, | |||
| {NULL, -1} }; | |||
| @@ -83,24 +89,22 @@ MNEM_TAB mnem_flags[] = { | |||
| // these set the corresponding numbered bit if dictionary_flags | |||
| {"$pause", 8}, /* ensure pause before this word */ | |||
| {"$only", 9}, /* only match on this word without suffix */ | |||
| {"$onlys", 10}, /* only match with none, or with 's' suffix */ | |||
| {"$strend", 11}, /* full stress if at end of clause */ | |||
| {"$strend2", 12}, /* full stress if at end of clause, or only followed by unstressed */ | |||
| {"$unstressend",13}, /* reduce stress at end of clause */ | |||
| {"$atend", 14}, /* use this pronunciation if at end of clause */ | |||
| {"$atstart", 15}, // use this pronunciation at start of clause | |||
| {"$abbrev", 17}, /* use this pronuciation rather than split into letters */ | |||
| {"$stem", 18}, // must have a suffix | |||
| {"$pause", 8}, // ensure pause before this word | |||
| {"$strend", 9}, // full stress if at end of clause | |||
| {"$strend2", 10}, // full stress if at end of clause, or only followed by unstressed | |||
| {"$unstressend",11}, // reduce stress at end of clause | |||
| {"$abbrev", 13}, // use this pronuciation rather than split into letters | |||
| // language specific | |||
| {"$double", 19}, // IT double the initial consonant of next word | |||
| {"$alt", 20}, // use alternative pronunciation | |||
| {"$alt1", 20}, // synonym for $alt | |||
| {"$alt2", 21}, | |||
| {"$alt3", 22}, | |||
| {"$double", 14}, // IT double the initial consonant of next word | |||
| {"$alt", 15}, // use alternative pronunciation | |||
| {"$alt1", 15}, // synonym for $alt | |||
| {"$alt2", 16}, | |||
| {"$alt3", 17}, | |||
| {"$alt4", 18}, | |||
| {"$alt5", 19}, | |||
| {"$alt6", 20}, | |||
| {"$combine", 23}, // Combine with the next word | |||
| {"$dot", 24}, // ignore '.' after this word (abbreviation) | |||
| @@ -111,18 +115,23 @@ MNEM_TAB mnem_flags[] = { | |||
| {"$text", 29}, // word translates to replcement text, not phonemes | |||
| // flags in dictionary word 2 | |||
| {"$verbf", 0x20}, /* verb follows */ | |||
| {"$verbsf", 0x21}, /* verb follows, allow -s suffix */ | |||
| {"$nounf", 0x22}, /* noun follows */ | |||
| {"$pastf", 0x23}, /* past tense follows */ | |||
| {"$verb", 0x24}, /* use this pronunciation when its a verb */ | |||
| {"$noun", 0x25}, /* use this pronunciation when its a noun */ | |||
| {"$past", 0x26}, /* use this pronunciation when its past tense */ | |||
| {"$verbextend",0x28}, /* extend influence of 'verb follows' */ | |||
| {"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */ | |||
| {"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */ | |||
| {"$verbf", 0x20}, // verb follows | |||
| {"$verbsf", 0x21}, // verb follows, allow -s suffix | |||
| {"$nounf", 0x22}, // noun follows | |||
| {"$pastf", 0x23}, // past tense follows | |||
| {"$verb", 0x24}, // use this pronunciation when its a verb | |||
| {"$noun", 0x25}, // use this pronunciation when its a noun | |||
| {"$past", 0x26}, // use this pronunciation when its past tense | |||
| {"$verbextend",0x28}, // extend influence of 'verb follows' | |||
| {"$capital", 0x29}, // use this pronunciation if initial letter is upper case | |||
| {"$allcaps", 0x2a}, // use this pronunciation if initial letter is upper case | |||
| {"$accent", 0x2b}, // character name is base-character name + accent name | |||
| {"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :} | |||
| {"$only", 0x2e}, // only match on this word without suffix | |||
| {"$onlys", 0x2f}, // only match with none, or with 's' suffix | |||
| {"$stem", 0x30}, // must have a suffix | |||
| {"$atend", 0x31}, // use this pronunciation if at end of clause | |||
| {"$atstart", 0x32}, // use this pronunciation at start of clause | |||
| // doesn't set dictionary_flags | |||
| {"$?", 100}, // conditional rule, followed by byte giving the condition number | |||
| @@ -611,7 +620,7 @@ static char nullstring[] = {0}; | |||
| // PROBLEM vowel reductions are not applied to the translated phonemes | |||
| // condition rules are not applied | |||
| TranslateWord(translator,phonetic,0,NULL); | |||
| TranslateWord(translator,phonetic,0,NULL,NULL); | |||
| text_not_phonemes = 0; | |||
| strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4); | |||
| @@ -3012,10 +3012,10 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| int no_phonemes; | |||
| int skipwords; | |||
| int ix; | |||
| int c; | |||
| const char *word_end; | |||
| const char *word1; | |||
| int wflags = 0; | |||
| // int wflags2; | |||
| char word_buf[N_WORD_BYTES+1]; | |||
| if(wtab != NULL) | |||
| @@ -3165,20 +3165,20 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| if((end_flags & FLAG_SUFX)==0) | |||
| { | |||
| // no suffix has been removed | |||
| if(dictionary_flags & FLAG_STEM) | |||
| if(dictionary_flags2 & FLAG_STEM) | |||
| continue; // this word must have a suffix | |||
| } | |||
| if((end_flags & SUFX_P) && (dictionary_flags & (FLAG_ONLY | FLAG_ONLY_S))) | |||
| if((end_flags & SUFX_P) && (dictionary_flags2 & (FLAG_ONLY | FLAG_ONLY_S))) | |||
| continue; // $only or $onlys, don't match if a prefix has been removed | |||
| if(end_flags & FLAG_SUFX) | |||
| { | |||
| // a suffix was removed from the word | |||
| if(dictionary_flags & FLAG_ONLY) | |||
| if(dictionary_flags2 & FLAG_ONLY) | |||
| continue; // no match if any suffix | |||
| if((dictionary_flags & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0)) | |||
| if((dictionary_flags2 & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0)) | |||
| { | |||
| // only a 's' suffix allowed, but the suffix wasn't 's' | |||
| continue; | |||
| @@ -3212,13 +3212,13 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| continue; | |||
| } | |||
| if((dictionary_flags & FLAG_ATEND) && (word_end < tr->clause_end)) | |||
| if((dictionary_flags2 & FLAG_ATEND) && (word_end < tr->clause_end)) | |||
| { | |||
| // only use this pronunciation if it's the last word of the clause | |||
| continue; | |||
| } | |||
| if((dictionary_flags & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD)) | |||
| if((dictionary_flags2 & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD)) | |||
| { | |||
| // only use this pronunciation if it's the first word of a clause | |||
| continue; | |||
| @@ -3318,6 +3318,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags)); | |||
| } | |||
| } | |||
| ix = utf8_in(&c, word); | |||
| if((word[ix] == 0) && !IsAlpha(c)) | |||
| { | |||
| flags[0] |= FLAG_MAX3; | |||
| } | |||
| return(word_end); | |||
| } | |||
| @@ -3390,6 +3396,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f | |||
| found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab); | |||
| if(flags[0] & FLAG_MAX3) | |||
| { | |||
| if(strcmp(ph_out, tr->phonemes_repeat) == 0) | |||
| @@ -464,7 +464,7 @@ void Lexicon_It(int pass) | |||
| } | |||
| // translate | |||
| TranslateWord(translator,&word1[1],0, NULL); | |||
| TranslateWord(translator,&word1[1],0, NULL, NULL); | |||
| DecodePhonemes(word_phonemes,phonemes); | |||
| stress_posn1 = 0; | |||
| @@ -487,7 +487,7 @@ void Lexicon_It(int pass) | |||
| vowel_ix++; | |||
| } | |||
| TranslateWord(translator,&word2[1],0, NULL); | |||
| TranslateWord(translator,&word2[1],0, NULL, NULL); | |||
| DecodePhonemes(word_phonemes,phonemes2); | |||
| vowel_ix = 1; | |||
| @@ -802,7 +802,7 @@ void Lexicon_De() | |||
| } | |||
| // translate | |||
| TranslateWord(translator,&word2[1],0, NULL); | |||
| TranslateWord(translator,&word2[1],0, NULL, NULL); | |||
| DecodePhonemes2(word_phonemes,phonemes); // also need to change some phoneme names | |||
| @@ -1042,7 +1042,7 @@ void Lexicon_Bg() | |||
| *pw1 = 0; | |||
| // translate | |||
| TranslateWord(translator, &word[2],0, NULL); | |||
| TranslateWord(translator, &word[2],0, NULL, NULL); | |||
| DecodePhonemes(word_phonemes,phonemes); | |||
| // find the stress position in the translation | |||
| @@ -1300,7 +1300,7 @@ void Lexicon_Ru() | |||
| } | |||
| // translate | |||
| TranslateWord(translator, &word2[1],0, NULL); | |||
| TranslateWord(translator, &word2[1],0, NULL, NULL); | |||
| DecodePhonemes(word_phonemes,phonemes); | |||
| // find the stress position in the translation | |||
| @@ -89,10 +89,10 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) | |||
| // DATA MENU | |||
| data_menu = new wxMenu; | |||
| data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); | |||
| data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate")); | |||
| data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); | |||
| data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); | |||
| data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); | |||
| data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate")); | |||
| data_menu->AppendSeparator(); | |||
| data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); | |||
| data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); | |||
| @@ -656,20 +656,32 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| current_alphabet = alphabet; | |||
| if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME)) | |||
| { | |||
| 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 | |||
| { | |||
| // Can't find the local name for this alphabet, use the English name | |||
| phontab_1 = tr->phoneme_tab_ix; | |||
| ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
| if(Lookup(translator2, alphabet->name, &ph_alphabet[3]) != 0) | |||
| { | |||
| ph_alphabet[0] = phonPAUSE; | |||
| ph_alphabet[1] = phonSWITCH; | |||
| len = strlen(&ph_alphabet[3]) + 3; | |||
| ph_alphabet[len] = phonSWITCH; // switch back | |||
| ph_alphabet[len+1] = phontab_1; | |||
| ph_alphabet[len+2] = 0; | |||
| } | |||
| 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; | |||
| } | |||
| } | |||
| } | |||
| @@ -876,7 +888,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB | |||
| nextflags = 0; | |||
| if(IsAlpha(c2)) | |||
| { | |||
| nextflags = TranslateWord(tr, &word_end[2], 0, NULL); | |||
| nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL); | |||
| } | |||
| if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) | |||
| @@ -35,8 +35,8 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.46.38 27.Feb.13"; | |||
| const int version_phdata = 0x014636; | |||
| const char *version_string = "1.46.39 01.Mar.13"; | |||
| const int version_phdata = 0x014639; | |||
| int option_device_number = -1; | |||
| FILE *f_logespeak = NULL; | |||
| @@ -808,6 +808,13 @@ Translator *SelectTranslator(const char *name) | |||
| } | |||
| break; | |||
| case L('g','a'): // irish | |||
| { | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.numbers = 1; | |||
| } | |||
| break; | |||
| case L('h','i'): // Hindi | |||
| case L('n','e'): // Nepali | |||
| case L('p','a'): // Punjabi | |||
| @@ -807,8 +807,8 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) | |||
| int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab) | |||
| {//=========================================================================== | |||
| int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab, char *word_out) | |||
| {//================================================================================================== | |||
| // word1 is terminated by space (0x20) character | |||
| char *word1; | |||
| @@ -943,6 +943,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if(dictionary_flags[0] & FLAG_TEXTMODE) | |||
| { | |||
| if(word_out != NULL) | |||
| strcpy(word_out, word1); | |||
| first_char = word1[0]; | |||
| stress_bits = dictionary_flags[0] & 0x7f; | |||
| found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement | |||
| @@ -1760,6 +1763,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| int word_flags; | |||
| int word_copy_len; | |||
| char word_copy[N_WORD_BYTES+1]; | |||
| char word_replaced[N_WORD_BYTES+1]; | |||
| char old_dictionary_name[40]; | |||
| if((f_logespeak != NULL) && (logging_type & 8)) | |||
| @@ -1871,7 +1875,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++; | |||
| word_copy_len = ix; | |||
| flags = TranslateWord(translator, word, next_pause, wtab); | |||
| word_replaced[2] = 0; | |||
| flags = TranslateWord(translator, word, next_pause, wtab, &word_replaced[2]); | |||
| if(flags & FLAG_SPELLWORD) | |||
| { | |||
| @@ -1906,7 +1911,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| { | |||
| strcpy(ph_buf,word_phonemes); | |||
| flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1); | |||
| flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1, NULL); | |||
| if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH)) | |||
| ok = 0; | |||
| @@ -1934,12 +1939,12 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| if(ok) | |||
| { | |||
| *p2 = '-'; // replace next space by hyphen | |||
| flags = TranslateWord(translator, word, next_pause, wtab); // translate the combined word | |||
| flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word | |||
| if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) | |||
| { | |||
| // revert to separate words | |||
| *p2 = ' '; | |||
| flags = TranslateWord(translator, word, next_pause, wtab); | |||
| flags = TranslateWord(translator, word, next_pause, wtab, NULL); | |||
| } | |||
| else | |||
| { | |||
| @@ -1967,7 +1972,14 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| { | |||
| // re-translate the word using the new translator | |||
| wtab[0].flags |= FLAG_TRANSLATOR2; | |||
| flags = TranslateWord(translator2, word, next_pause, wtab); | |||
| if(word_replaced[2] != 0) | |||
| { | |||
| word_replaced[0] = 0; // byte before the start of the word | |||
| word_replaced[1] = ' '; | |||
| flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL); | |||
| } | |||
| else | |||
| flags = TranslateWord(translator2, word, next_pause, wtab, NULL); | |||
| // strcpy((char *)p,translator2->word_phonemes); | |||
| if(p[0] == phonSWITCH) | |||
| { | |||
| @@ -37,26 +37,18 @@ | |||
| #define FLAG_SKIPWORDS 0x80 | |||
| #define FLAG_PREPAUSE 0x100 | |||
| #define FLAG_ONLY 0x200 | |||
| #define FLAG_ONLY_S 0x400 | |||
| #define BITNUM_FLAG_ONLY 9 // bit 9 is set | |||
| #define BITNUM_FLAG_ONLY_S 10 // bit 10 is set | |||
| #define FLAG_STRESS_END 0x800 /* full stress if at end of clause */ | |||
| #define FLAG_STRESS_END2 0x1000 /* full stress if at end of clause, or only followed by unstressed */ | |||
| #define FLAG_UNSTRESS_END 0x2000 /* reduce stress at end of clause */ | |||
| #define FLAG_ATEND 0x4000 /* use this pronunciation if at end of clause */ | |||
| #define FLAG_ATSTART 0x8000 // use this pronunciation if at start of clause | |||
| #define FLAG_SPELLWORD 0x10000 // re-translate the word as individual letters, separated by spaces | |||
| #define FLAG_ABBREV 0x20000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters | |||
| #define FLAG_STEM 0x40000 // must have a suffix | |||
| #define FLAG_DOUBLING 0x80000 // doubles the following consonant | |||
| #define BITNUM_FLAG_ALT 19 // bit number of FLAG_ALT_TRANS - 1 | |||
| #define FLAG_ALT_TRANS 0x100000 // language specific | |||
| #define FLAG_ALT2_TRANS 0x200000 // language specific | |||
| #define FLAG_ALT3_TRANS 0x400000 // language specific | |||
| #define FLAG_COMBINE 0x800000 // combine with the next word | |||
| #define FLAG_STRESS_END 0x200 // full stress if at end of clause | |||
| #define FLAG_STRESS_END2 0x400 // full stress if at end of clause, or only followed by unstressed | |||
| #define FLAG_UNSTRESS_END 0x800 // reduce stress at end of clause | |||
| #define FLAG_SPELLWORD 0x1000 // re-translate the word as individual letters, separated by spaces | |||
| #define FLAG_ABBREV 0x2000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters | |||
| #define FLAG_DOUBLING 0x4000 // doubles the following consonant | |||
| #define BITNUM_FLAG_ALT 14 // bit number of FLAG_ALT_TRANS - 1 | |||
| #define FLAG_ALT_TRANS 0x8000 // language specific | |||
| #define FLAG_ALT2_TRANS 0x10000 // language specific | |||
| #define FLAG_ALT3_TRANS 0x20000 // language specific | |||
| #define FLAG_COMBINE 0x40000 // combine with the next word | |||
| #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) | |||
| #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot | |||
| @@ -83,8 +75,16 @@ | |||
| #define FLAG_ACCENT 0x800 // character name is base-character name + accent name | |||
| #define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2 | |||
| #define FLAG_SENTENCE 0x2000 // only if the clause is a sentence | |||
| #define FLAG_ONLY 0x4000 | |||
| #define FLAG_ONLY_S 0x8000 | |||
| #define FLAG_STEM 0x10000 // must have a suffix | |||
| #define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ | |||
| #define FLAG_ATSTART 0x30000 // use this pronunciation if at start of clause | |||
| #define BITNUM_FLAG_ALLCAPS 0x2a | |||
| #define BITNUM_FLAG_HYPHENATED 0x2c | |||
| #define BITNUM_FLAG_ONLY 0x2e | |||
| #define BITNUM_FLAG_ONLY_S 0x2f | |||
| // wordflags, flags in source word | |||
| @@ -714,7 +714,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); | |||
| int Unpronouncable(Translator *tr, char *word, int posn); | |||
| 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); | |||
| int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab, char *word_out); | |||
| 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 *charix_top, int n_buf, int *tone_type, char *voice_change); | |||
| @@ -798,14 +798,25 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| break; | |||
| case V_DICTRULES: // conditional dictionary rules and list entries | |||
| case V_NUMBERS: | |||
| // expect a list of numbers | |||
| while(*p != 0) | |||
| { | |||
| while(isspace(*p)) p++; | |||
| n = -1; | |||
| if(((n = atoi(p)) > 0) && (n < 32)) | |||
| if((n = atoi(p)) > 0) | |||
| { | |||
| p++; | |||
| conditional_rules |= (1 << n); | |||
| if((key==V_DICTRULES) && (n < 32)) | |||
| conditional_rules |= (1 << n); | |||
| else | |||
| if((key==V_NUMBERS) && (n < 32)) | |||
| langopts->numbers |= (1 << n); | |||
| else | |||
| if((key==V_NUMBERS) && (n < 64)) | |||
| langopts->numbers |= (1 << (n-32)); | |||
| else | |||
| fprintf(stderr,"Bad option number %d\n", n); | |||
| } | |||
| while(isalnum(*p)) p++; | |||
| } | |||
| @@ -837,10 +848,6 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| new_translator->charset_a0 = charsets[value]; | |||
| break; | |||
| case V_NUMBERS: | |||
| sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2); | |||
| break; | |||
| case V_OPTION: | |||
| value2 = 0; | |||
| if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0)) | |||
| @@ -535,7 +535,7 @@ int wave_get_remaining_time(uint32_t sample, uint32_t* time) | |||
| #else | |||
| // notdef USE_SADA | |||
| void wave_init() {} | |||
| init wave_init() {} | |||
| void* wave_open(const char* the_api) {return (void *)1;} | |||
| size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | |||
| int wave_close(void* theHandler) {return 0;} | |||