| _13 tr'eTe | _13 tr'eTe | ||||
| _14 kat'orTe | _14 kat'orTe | ||||
| _15 k'inTe | _15 k'inTe | ||||
| _20 B'inte | |||||
| _2X B,int | |||||
| _20 b'inte | |||||
| _2X b,int | |||||
| _3X tr'enta | _3X tr'enta | ||||
| _4X kwar'anta | _4X kwar'anta | ||||
| _5X Tinkw'anta | _5X Tinkw'anta | ||||
| // ordinal numbers | // ordinal numbers | ||||
| _#º o | |||||
| _#ª a | |||||
| _#º %'eno | |||||
| _#ª %'ena | |||||
| _x#º %o // for 1º 2º 3º | |||||
| _x#ª %a | |||||
| º orDin'al||maskul'in | |||||
| ª orDin'al||femen'in | |||||
| _1ox prim'Er | _1ox prim'Er | ||||
| _2ox seQ'und | _2ox seQ'und | ||||
| _3ox tErT'Er | _3ox tErT'Er | ||||
| _1o un'en | |||||
| _2o dos'en | |||||
| _3o tres'en | |||||
| _4o kwatr'en | |||||
| _5o Tink'en | |||||
| _6o seIs'en | |||||
| _7o sEt'en | |||||
| _8o gwit'en | |||||
| _9o nU'en | |||||
| _11o onT'en | |||||
| _12o DoT'en | |||||
| _13o tReT'en | |||||
| _14o katorT'en | |||||
| _15o kinT'en | |||||
| _16o sET'en | |||||
| _10o DET'en | |||||
| _20o Bint'en | |||||
| _30o trent'en | |||||
| _40o kwarant'en | |||||
| _50o Tinkwant'en | |||||
| _60o siSant'en | |||||
| _70o sEtant'en | |||||
| _80o gwitant'en | |||||
| _90o noBant'en | |||||
| _4o kwatr | |||||
| _5o Tink | |||||
| _7o sEt | |||||
| _8o gwit | |||||
| _9o nU | |||||
| _11o onT | |||||
| _12o doT | |||||
| _13o tReT | |||||
| _14o katorT | |||||
| _15o kinT | |||||
| _16o sET | |||||
| _10o dET | |||||
| _20o bint | |||||
| _30o trent | |||||
| _40o kwarant | |||||
| _50o Tinkwant | |||||
| _60o siSant | |||||
| _70o sEtant | |||||
| _80o gwitant | |||||
| _90o noBant | |||||
| _1Xo DeTi | |||||
| _2Xo Binti | |||||
| _1Xo deTi | |||||
| _2Xo binti | |||||
| _3Xo trentaI | _3Xo trentaI | ||||
| _4Xo kwarantaI | _4Xo kwarantaI | ||||
| _5Xo TinkwantaI | _5Xo TinkwantaI | ||||
| _7Xo sEtantaI | _7Xo sEtantaI | ||||
| _8Xo gwitantaI | _8Xo gwitantaI | ||||
| _9Xo noBantaI | _9Xo noBantaI | ||||
| _1Co TEnt'en | |||||
| _2Co dosTEnt'en | |||||
| _3Co tresTEnt'en | |||||
| _4Co kw,atroTEnt'en | |||||
| _5Co T,inkoTEnt'en | |||||
| _6Co seIsTEnt'en | |||||
| _7Co sjEtTEnt'en | |||||
| _8Co gw,eItoTEnt'en | |||||
| _9Co nweUTEnt'en | |||||
| _0Co Tent | |||||
| _1Co TEnt | |||||
| _2Co dosTEnt | |||||
| _3Co tresTEnt | |||||
| _6Co seIsTEnt | |||||
| _7Co sjEtTEnt | |||||
| _8Co gw,eItoTEnt | |||||
| _9Co nweUTEnt | |||||
| _0M1o mil'en | |||||
| _0M2o mil^on'en | |||||
| _1M2o mil^on'en | |||||
| _0M4o bil^on'en | |||||
| _1M4o bil^on'en | |||||
| _0M1o mil | |||||
| // characters | // characters | ||||
| la $u | la $u | ||||
| los $u | los $u | ||||
| las $u | las $u | ||||
| ro $u | |||||
| ra $u | |||||
| ros $u | |||||
| ras $u | |||||
| ne $u | ne $u | ||||
| nes $u | nes $u | ||||
| me $u | me $u | ||||
| te $u | te $u | ||||
| se $u | se $u | ||||
| sin $u | sin $u | ||||
| su $u | su $u | ||||
| ye $u | ye $u | ||||
| ro $u | |||||
| ra $u | |||||
| ros $u | |||||
| ras $u | |||||
| el $u | el $u | ||||
| es $u | es $u | ||||
| els $u | els $u | ||||
| ers $u | |||||
| mis $u | mis $u | ||||
| tus $u | tus $u | ||||
| sus $u | sus $u | ||||
| bel $u | bel $u | ||||
| bella $u | bella $u | ||||
| bells $u | bells $u | ||||
| bels $u | |||||
| bellas $u | bellas $u | ||||
| bellos $u | bellos $u | ||||
| que $u | que $u | ||||
| on $u | on $u | ||||
| aon $u | aon $u | ||||
| porque $u | porque $u | ||||
| dende $u | |||||
| entre $u | |||||
| contra $u | |||||
| enta $u | |||||
| sinde $u | |||||
| per $u | per $u | ||||
| pus $u | pus $u | ||||
| dica $u | |||||
| sino $u | |||||
| ni $u | ni $u | ||||
| pero $u | |||||
| ibi $u | |||||
| bi $u | bi $u | ||||
| i $u+ | i $u+ | ||||
| ie $u | ie $u | ||||
| hu $u | hu $u | ||||
| sant $u | sant $u | ||||
| donya $u | |||||
| don $u | |||||
| se'n sen $u | |||||
| //abbreviations | //abbreviations |
| // Numbers | // Numbers | ||||
| devanagari numbers are changed to latin characters before translation | 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 c#'O:j | |||||
| _7 S'a:t | |||||
| _8 'a:t.# | |||||
| _9 n'O:j | |||||
| _10 d'O:S | |||||
| _11 a'g'a:rO: | |||||
| _12 b'a:rO: | |||||
| _13 t'a:rO: | |||||
| _14 c#:O:d'dO: | |||||
| _15 p'O:n'e:rO: | |||||
| _16 S'o:lO: | |||||
| _17 SO:t'e:rO: | |||||
| _18 a:t#'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 c#'a:'bb'IS | |||||
| _27 Sa:ta:S | |||||
| _28 at#'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 c#a'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 c#e: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 c#h@p:'an'no: | |||||
| _57 Sa:ta:n'no: | |||||
| _58 at#'a:n'no: | |||||
| _59 Uno:s'at# | |||||
| _60 s'a:t.# | |||||
| _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 c#e: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~c#at'to:r | |||||
| _76 c#I'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 c#Ia: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 c#Ia: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:k# | |||||
| _0M3 ko:tI | |||||
| _0M4 o:r'bu:d | |||||
| _dpt d@so:mIk | |||||
| _0 S'unjO | |||||
| _1 '&k | |||||
| _2 duj | |||||
| _3 t'in | |||||
| _4 tS'ar | |||||
| _5 p'a~tS | |||||
| _6 tS#'Oj | |||||
| _7 S'at | |||||
| _8 'at.# | |||||
| _9 n'Oj | |||||
| _10 d'OS | |||||
| _11 '&garo | |||||
| _12 b'aro | |||||
| _13 t'ero | |||||
| _14 tS'owddo | |||||
| _15 p'Onero | |||||
| _16 S'olo | |||||
| _17 S'Otero | |||||
| _18 'at.#aro | |||||
| _19 'uniS | |||||
| _20 b'iS // ?? | |||||
| _21 'ekuS | |||||
| _22 b'ajS | |||||
| _23 t'ejS | |||||
| _24 tS'ObbiS | |||||
| _25 p'O~tSiS | |||||
| _26 tS#'ObbiS | |||||
| _27 S'ataS | |||||
| _28 'at.#aS | |||||
| _29 'untriS | |||||
| _30 t'iriS | |||||
| _31 'ektriS | |||||
| _32 b'OtriS | |||||
| _33 t'etriS | |||||
| _34 tSowtriS | |||||
| _35 pO~jtriS | |||||
| _36 tS#'OtriS | |||||
| _37 S'a~itriS | |||||
| _38 'at.riS | |||||
| _39 'unOtSOlliS | |||||
| _40 tS'OlliS | |||||
| _41 'ektSOlliS | |||||
| _42 b'ialliS | |||||
| _43 t'etalliS | |||||
| _44 tS'oalliS | |||||
| _45 p'O~jtalliS | |||||
| _46 tS'etSOlliS | |||||
| _47 S'atSOllis | |||||
| _48 'atSOlliS | |||||
| _49 'unOpO~tSaS | |||||
| // numbers above 50 need to be corrected | |||||
| _50 p'O~tSaS | |||||
| _5X p'O~tSaS | |||||
| _59 'unOsat. | |||||
| _60 s'at. | |||||
| _6X s'at. | |||||
| _69 'unOS'OttOr | |||||
| _70 S'OttOr | |||||
| _7X S'OttOr | |||||
| _79 'unOaSi | |||||
| _80 'aSi | |||||
| _8X 'aSi | |||||
| _89 'unOnObbOj | |||||
| _90 n'ObbOj | |||||
| _9X n'ObbOj | |||||
| _0C S'o | |||||
| _0M1 h'ajar | |||||
| _0M2 l'ak# | |||||
| _0M3 k'ot.i | |||||
| _0M4 'Orbud | |||||
| _dpt dOsomik | |||||
| // Single consonants | |||||
| ক k@ | |||||
| খ k#@ | |||||
| গ g@ | |||||
| ঘ g#@ | |||||
| ঙ N'g | |||||
| চ c@ | |||||
| ছ c#@ | |||||
| জ J@ | |||||
| ঝ J#@ | |||||
| ঞ n^@ | |||||
| ট t.@ | |||||
| ঠ t.#@ | |||||
| ড d.@ | |||||
| ঢ d.#@ | |||||
| ণ n.@ // retroflex n.@ | |||||
| ত t@ | |||||
| থ t#@ | |||||
| দ d@ | |||||
| ধ d#@ | |||||
| ন n@ | |||||
| প p@ | |||||
| ফ p#@ | |||||
| ব b@ | |||||
| ভ b#@ | |||||
| ম m@ | |||||
| য় O:j | |||||
| য J@ | |||||
| র r@ | |||||
| ড় r-@ | |||||
| ঢ় hr@ | |||||
| ল l@ | |||||
| শ S@ | |||||
| ষ s.@ // retroflex [S] | |||||
| স s@ | |||||
| হ H@ | |||||
| ৎ t@ | |||||
| // Single consonants | |||||
| ক kO | |||||
| খ k#O | |||||
| গ gO | |||||
| ঘ g#O | |||||
| ঙ 'uNO | |||||
| চ tSO | |||||
| ছ tShO // [h] to distinguish from [tS] | |||||
| জ JO | |||||
| ঝ J#O | |||||
| ঞ 'iNO | |||||
| ট t.O | |||||
| ঠ t.#O | |||||
| ড d.O | |||||
| ঢ d.#O | |||||
| ণ m'odd#ennO | |||||
| ত tO | |||||
| থ t#O | |||||
| দ dO | |||||
| ধ d#O | |||||
| ন d'ontennO | |||||
| প pO | |||||
| ফ p#O | |||||
| ব bO | |||||
| ভ b#O | |||||
| ম mO | |||||
| য় Oj | |||||
| য ontostedZ'O | |||||
| র rO | |||||
| ঢ় hrO | |||||
| ল lO | |||||
| শ taleboS:O | |||||
| ষ mud#en:oS:O | |||||
| স d'onteS:O | |||||
| হ hO | |||||
| ৎ kh'Ond.otO | |||||
| // full vowels | |||||
| অ SOro'O | |||||
| আ SOro'a | |||||
| ই hrOS:o'i | |||||
| ঈ dirg#o'i | |||||
| উ hrOS:o'u | |||||
| ঊ dirg#o'u | |||||
| ঋ ri | |||||
| এ e | |||||
| ঐ oj | |||||
| ও o | |||||
| ঔ ow | |||||
| // combining vowel signs | // combining vowel signs | ||||
| ा #X2a: | |||||
| ि #X1I | |||||
| ी #X2i: | |||||
| ূ #X1U | |||||
| ू #X2u: | |||||
| ृ #X1rI | |||||
| ে #X1e: | |||||
| ৈ #X2E: | |||||
| ো #X1o: | |||||
| ৌ #X1O: | |||||
| ॐ #X1o~m | |||||
| া 'akar | |||||
| ি r'oS:ikar | |||||
| ী d'irg#ikar | |||||
| ূ r'oS:ukar | |||||
| ু d'irg#ukar | |||||
| ৃ r'ikar | |||||
| ে 'ekar | |||||
| ৈ 'ojkar | |||||
| ো 'okar | |||||
| ৌ 'owkar | |||||
| // signs | |||||
| ্ h'OSonto | |||||
| ং 'OnuSSOr | |||||
| ঃ b'iSOrgo | |||||
| ঁ tS'Ondrobindu | |||||
| ় b'indu | |||||
| // Punctuation | // Punctuation | ||||
| । dVn.d.V | । dVn.d.V | ||||
| // Pronouns | // Pronouns | ||||
| আমি $u // main: I | আমি $u // main: I | ||||
| আমায় $u | আমায় $u | ||||
| তোর $u | তোর $u | ||||
| এ $u // he/she/it | এ $u // he/she/it | ||||
| একে $u | |||||
| আপনি $u | |||||
| এটার $u | এটার $u | ||||
| এর $u | এর $u | ||||
| // Verbs | // Verbs | ||||
| হয় $u | |||||
| ছিল $u // chilo: past aux | ছিল $u // chilo: past aux | ||||
| ছিলেন $u // chilen | ছিলেন $u // chilen | ||||
| // Exceptions | // Exceptions | ||||
| ক্রিকেট krIk'Et | |||||
| সাইবার s'aIb@r |
| // C consonants | // C consonants | ||||
| // Y vowel letters and vowel signs | // Y vowel letters and vowel signs | ||||
| // conditional rules | |||||
| // ?2 use diphthong for "ai" | |||||
| // ?3 use diphthong for "au" | |||||
| .replace | .replace | ||||
| .group অ | .group অ | ||||
| অ a | |||||
| অ V | |||||
| অঁ O~ | |||||
| .group আ | .group আ | ||||
| আ a: | |||||
| আ a | |||||
| আঁ a~ | |||||
| .group ই | .group ই | ||||
| ই I | |||||
| ই i | |||||
| ইঁ i~ | ইঁ i~ | ||||
| ইং I'ng | |||||
| .group ঈ | .group ঈ | ||||
| ঈ i: | |||||
| ঈ (_ i | |||||
| ঈ i | |||||
| ঈঁ i~ | |||||
| .group উ | .group উ | ||||
| উ U | |||||
| উ u | |||||
| উঁ u~ | |||||
| .group ঊ | .group ঊ | ||||
| ঊ u: | |||||
| ঊং u~ // + anusvara | |||||
| ঊঁ u~ // + candrabinbu | |||||
| ঊ u | |||||
| ঊঁ u~ | |||||
| .group ঋ | .group ঋ | ||||
| ঋ rI | |||||
| ঋ ri | |||||
| ঋঁ ri~ | |||||
| .group এঁ | |||||
| এঁ E // candra e | |||||
| .group ঌ | |||||
| ঌ l- | |||||
| .group এ | |||||
| এ & | |||||
| এঁ &~ | |||||
| .group ঐ | .group ঐ | ||||
| ঐ e | |||||
| ঐ oj | |||||
| ঐঁ o~j | |||||
| .group এ | .group এ | ||||
| এ e: | |||||
| এ e | |||||
| এঁ e~ | |||||
| .group ঐ | |||||
| ঐ E: // ?? [aI] [E:] [&:] | |||||
| ঐং E~ | |||||
| ঐঁ E~ | |||||
| ?2 ঐ aI // ?? [aI] [E:] [&:] | |||||
| .group ও | |||||
| ও o | |||||
| ওঁ o~ | |||||
| .group ওঁ | |||||
| ওঁ O // candra O | |||||
| .group ঔ | .group ঔ | ||||
| ঔ o | |||||
| ঔ ow | |||||
| ঔঁ o~w | |||||
| .group ও | |||||
| .group ও //?? | |||||
| ও o: | ও o: | ||||
| ওং o~ // +anusvara | |||||
| ওঁ o~ // +candrabindu | |||||
| .group ঔ | |||||
| ঔ O: // ?? [aU] [O:] | |||||
| ঔঁ O~ // +candrabindu | |||||
| // Vowel Signs | // Vowel Signs | ||||
| .group া | .group া | ||||
| া a: | |||||
| া a | |||||
| াঁ a~ | |||||
| .group ি | .group ি | ||||
| ি I | |||||
| ি i | |||||
| িঁ i~ | |||||
| .group ী | .group ী | ||||
| ী i: | |||||
| ী (_ i | |||||
| ী i | |||||
| ীঁ i~ | |||||
| .group ূ | .group ূ | ||||
| ূ U | |||||
| ূ u | |||||
| ূঁ u~ | |||||
| .group ু | .group ু | ||||
| ু u: | |||||
| ু u | |||||
| ুঁ u~ | |||||
| .group ৃ | .group ৃ | ||||
| ৃ rI | |||||
| ৃ ri | |||||
| ৃঁ ri~ | |||||
| .group ে | .group ে | ||||
| ে e: | |||||
| ে e | |||||
| েঁ e~ | |||||
| েউ ew | |||||
| .group ৈ | .group ৈ | ||||
| ৈ E: // ?? [aI] [E:] [&:] | |||||
| ৈ oj | |||||
| ৈঁ o~j | |||||
| .group ো | .group ো | ||||
| ো o: | |||||
| ো o | |||||
| োঁ o~ | |||||
| .group ৌ | .group ৌ | ||||
| ৌ O: // [O:] or [aU] ?? | |||||
| ৌ ow | |||||
| ৌঁ o~w | |||||
| .group ॐ | |||||
| ॐ o~m | |||||
| // Consonants | // Consonants | ||||
| .group ক | .group ক | ||||
| ক k@ | |||||
| ক kV | |||||
| ক (B k | ক (B k | ||||
| ক্য (्য kja: | |||||
| ক্ষ k#'@ | |||||
| ক (_ k | |||||
| .group খ | .group খ | ||||
| খ k#V | খ k#V | ||||
| খ (B k#@ | |||||
| খ (B k# | |||||
| খ (_ k# | |||||
| .group গ | .group গ | ||||
| গ gV | গ gV | ||||
| গ (B g@ | |||||
| ঈ)গ (ল g@ | |||||
| গ (B g | |||||
| গ (_ g | |||||
| .group ঘ | .group ঘ | ||||
| ঘ g#V | ঘ g#V | ||||
| ঘ (B g# | |||||
| ঘ (B g# | |||||
| ঘ (_ g# | |||||
| .group ঙ | .group ঙ | ||||
| ঙ N'g | |||||
| ঙ NV | |||||
| ঙ্ (B N | ঙ্ (B N | ||||
| গা)ঙ (চি Ng@ | |||||
| ঙ্ (_ N | |||||
| .group চ | .group চ | ||||
| চ cV | |||||
| চ (B c | |||||
| ্য) চ্য c'j@ | |||||
| চ tSV | |||||
| চ (B tS | |||||
| চ (_ tS | |||||
| .group ছ | .group ছ | ||||
| ছ c#V | |||||
| ছ (B c#@ | |||||
| ছ tS#V | |||||
| ছ (B tS# | |||||
| ছ (_ tS# | |||||
| .group জ | .group জ | ||||
| জ J@ | |||||
| জ (B J@ | |||||
| ্) জ zV | |||||
| জ (B J@ | |||||
| জ JV | |||||
| জ (B J | |||||
| জ (_ J | |||||
| জ্ব JV | |||||
| জ্ব (B J | |||||
| জ্ঞ ggo~ | |||||
| জ্ঞ (B gg | |||||
| .group ঝ | .group ঝ | ||||
| ঝ J#@ | |||||
| ঝ (B J#@ | |||||
| ঝ J#V | |||||
| ঝ (B J# | |||||
| ঝ (_ J# | |||||
| .group ঞ | .group ঞ | ||||
| ঞ n^V | |||||
| ঞ্ (B n^ | |||||
| ঞ nV | |||||
| ঞ্ (B n | |||||
| ঞ্ (_ n | |||||
| .group ট | .group ট | ||||
| ট t.V | ট t.V | ||||
| ট (B t.V | |||||
| ট (्য় t.j@ | |||||
| ট (B t. | |||||
| ট (_ t. | |||||
| .group ঠ | .group ঠ | ||||
| ঠ t.#V | ঠ t.#V | ||||
| ঠ (B t.# | ঠ (B t.# | ||||
| ঠ (_ t.# | |||||
| .group ড | .group ড | ||||
| ড d.V | ড d.V | ||||
| ড (B d. | ড (B d. | ||||
| ড (_ d. | |||||
| ড় r.V // nukta | |||||
| ড় (B r. | |||||
| .group ঢ | .group ঢ | ||||
| ঢ d.#V | ঢ d.#V | ||||
| ঢ (B d.# | ঢ (B d.# | ||||
| ঢ (_ d.# | |||||
| .group ণ | .group ণ | ||||
| ণ n.V // (temporary) same as dental [n] | |||||
| ণ (B n. | |||||
| ণ্ম n.m | |||||
| ণ nV // should be [n.] if adjacent to t. or d. ? | |||||
| ণ (B n | |||||
| ণ (_ n | |||||
| .group ত | .group ত | ||||
| ত t@ | |||||
| ত (B t@ | |||||
| ত tV | |||||
| ত (B t | |||||
| ত (_ t | |||||
| .group থ | .group থ | ||||
| থ t#@ | |||||
| থ t#V | |||||
| থ (B t# | থ (B t# | ||||
| ক) থ (ন t#@ | |||||
| থ (_ t# | |||||
| .group দ | .group দ | ||||
| দ d@ | |||||
| দ dV | |||||
| দ (B d | দ (B d | ||||
| ব) দ (ল d@ | |||||
| দ (_ d | |||||
| .group ধ | .group ধ | ||||
| ধ d#@ | |||||
| ধ d#V | |||||
| ধ (B d# | ধ (B d# | ||||
| সা) ধ (ন d#@ | |||||
| .group ন | |||||
| ন n@ | |||||
| ন (B n@ | |||||
| ্) ন (্ n@ | |||||
| র্) ন (_ r.n // r +virama অর্ণব | |||||
| ধ (_ d# | |||||
| .group ন | .group ন | ||||
| ন n: // should this be a long [n] ? | |||||
| ন nV | |||||
| ন (B n | |||||
| ন (_ n | |||||
| .group প | .group প | ||||
| প p@ | |||||
| প pV | |||||
| প (B p | প (B p | ||||
| প্য (्য p: | |||||
| প (_ p | |||||
| .group ফ | .group ফ | ||||
| ফ p#@ | |||||
| ফ (B p#@ | |||||
| ফ p#@ | |||||
| ফ fV // or [p#] ? | |||||
| ফ (B f | |||||
| ফ (_ f | |||||
| .group ব | .group ব | ||||
| ব b@ | |||||
| ব (B b@ | |||||
| ব bV | |||||
| ব (B b | |||||
| ব (_ b | |||||
| .group ভ | .group ভ | ||||
| ভ b#@ | |||||
| ভ (B b#@ | |||||
| ভ b#V | |||||
| ভ (B b# | |||||
| ভ (_ b# | |||||
| .group ম | .group ম | ||||
| ম mV | ম mV | ||||
| ्) ম (_ mV | |||||
| র্) ম (_ r.m@ // r +virama | |||||
| ন্) ম (_ n.m // n +virama | |||||
| ম (B m | |||||
| ম (_ m | |||||
| .group য় | .group য় | ||||
| য় jV | |||||
| য় (B jV | |||||
| .group য | |||||
| য J@ | |||||
| য (B J@ | |||||
| ्) য (_ ja | |||||
| য় jV | |||||
| য় (B j | |||||
| য় (_ j | |||||
| .group য | |||||
| য dZV | |||||
| য (B dZ | |||||
| য (_ dZ | |||||
| য় jV // nukta | |||||
| য় (B j | |||||
| @) য় (_ j | |||||
| .group র | .group র | ||||
| র rV | র rV | ||||
| র (B r | র (B r | ||||
| ्) র (_ r@ | |||||
| র (_ r | |||||
| ্) র (_ rV | |||||
| .group ল | .group ল | ||||
| ল l | |||||
| ল (B l@ | |||||
| ক) ল (ম l@ | |||||
| ল lV | |||||
| ল (B l | |||||
| ল (_ l | |||||
| .group শ | |||||
| শ S@ | |||||
| শ (B S@ | |||||
| .group শ | |||||
| শ SV // or [s] ? | |||||
| শ (B S | |||||
| শ (_ S | |||||
| শ (্ল s | |||||
| .group ষ | .group ষ | ||||
| ষ s | |||||
| ষ (B s //?? | |||||
| ষ SV | |||||
| ষ (B S | |||||
| ষ (_ S | |||||
| .group স | .group স | ||||
| স s@ | |||||
| স (B s. | |||||
| স SV // or [s] ?? | |||||
| স (B S | |||||
| স (্থ s | |||||
| স (্ত s | |||||
| _) স্ব SV // shb | |||||
| _) স্ব (B S | |||||
| .group হ | .group হ | ||||
| হ H@ | |||||
| হ (B H@ | |||||
| হ্ব v@ | |||||
| .group হ্ব | |||||
| B) হ্ব (B v@ | |||||
| .group ৎ | |||||
| ৎ (B t@t | |||||
| হ hV | |||||
| হ (B h | |||||
| হ (_ h | |||||
| .group হ্ব | |||||
| হ্ব vV | |||||
| হ্ব (B v | |||||
| হ্ব (_ v | |||||
| .group ৎ | |||||
| ৎ t | |||||
| // nukta, modifies a consonant | |||||
| .group ্যা // ja'falaa | |||||
| ্যা a | |||||
| .group ড় | |||||
| ড় r.V | |||||
| ড় (B r. | |||||
| .group ঢ় | |||||
| ঢ় r.V | |||||
| ঢ় (B r. | |||||
| .group ँ | |||||
| ँ n // candrabindu | |||||
| .group ঁ | |||||
| ঁ O~ // candrabindu, nasalize the previous vowel | |||||
| .group ং | .group ং | ||||
| ং aN'g // anusvara | |||||
| ং N // anusvara/onushshor | |||||
| .group ः | |||||
| ः H // visarga | |||||
| .group ঃ // visarga/bishorgo | |||||
| ঃ // doubles the following consonant | |||||
| ঃ (_ H | |||||
| .group ্ // virama | |||||
| .group ্ // virama/hoshonto | |||||
| ্ | ্ | ||||
| .group ় | |||||
| ় // nukta, modifies a consonant | |||||
| Anglesey aNg@Lsi | Anglesey aNg@Lsi | ||||
| Argyle A@g'aIl | Argyle A@g'aIl | ||||
| Argyll A@g;aIl | Argyll A@g;aIl | ||||
| Armagh A@m'A: | |||||
| Bacup beIk@p | Bacup beIk@p | ||||
| Berwick bErIk | Berwick bErIk | ||||
| Betws bEtUs | Betws bEtUs |
| te (rrest t2@ | te (rrest t2@ | ||||
| r) tga (g gI | r) tga (g gI | ||||
| @) t (ia S | @) t (ia S | ||||
| s) t (l ? | |||||
| s) t (l | |||||
| to (morr t@ | to (morr t@ | ||||
| _) to (nn tV | _) to (nn tV | ||||
| t (ooth t2 | t (ooth t2 |
| szí) n (ját n | szí) n (ját n | ||||
| szí) n (józan n | szí) n (józan n | ||||
| nyj n^n^ | nyj n^n^ | ||||
| _) nem (- nEm // has $combine attribute in hu_list, combine with the next word | _) nem (- nEm // has $combine attribute in hu_list, combine with the next word | ||||
| me) nny (ország n^ | me) nny (ország n^ | ||||
| pihe) nj (_S2 n^ | pihe) nj (_S2 n^ | ||||
| haszo) n (jár n | haszo) n (jár n | ||||
| boszorká) ny (jelet n^ | boszorká) ny (jelet n^ | ||||
| káno) n (jog n | káno) n (jog n | ||||
| legé) ny (jár n^ | |||||
| szé) n (jelek n | |||||
| teljesítmé) ny (j n^ | |||||
| nem-lts n'Em||_!'Ellt,e:,ES //without this rule Espeak spokening the nem LTS text with one word, because general in hu_list have a $combine attribute the nem word. | |||||
| n'Em _!'Ellt,e:,ES | |||||
| .group o | .group o | ||||
| o o | o o | ||||
| _robo) t (szoftve t | _robo) t (szoftve t | ||||
| diva) t (cirk t | diva) t (cirk t | ||||
| álla) t (cirk t | álla) t (cirk t | ||||
| szen) t (szob t | |||||
| .group tj | .group tj | ||||
| C) tj c | C) tj c | ||||
| szen) tj (akab tj | szen) tj (akab tj | ||||
| közérze) tj (aví tj | közérze) tj (aví tj | ||||
| ké) tj (átszm tj | ké) tj (átszm tj | ||||
| szavaza) tj (og tj | |||||
| szavaza) tj (eg tj | |||||
| .group ts | .group ts | ||||
| ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
| _cha) tsz (ob t|s | _cha) tsz (ob t|s | ||||
| robo) ts (of t|S | robo) ts (of t|S | ||||
| merényle) ts (or t|S | merényle) ts (or t|S | ||||
| szavaza) ts (o t|S | |||||
| szige) ts (ej t|S | |||||
| szige) ts (o t|S | |||||
| .group tt | .group tt | ||||
| ç tS | ç tS | ||||
| ñ n^ | ñ n^ | ||||
| ø Y | ø Y | ||||
| name punjabi-test | |||||
| name punjabi | |||||
| language pa | language pa |
| name french (Belgium) | |||||
| name french-Belgium | |||||
| language fr-be | language fr-be | ||||
| language fr 8 | language fr 8 | ||||
| gender male | gender male |
| language nl | language nl | ||||
| name dutch-test | |||||
| name dutch | |||||
| gender male | gender male |
| name nahuatl - classical | |||||
| name nahuatl-classical | |||||
| language nci | language nci | ||||
| gender male | gender male | ||||
| // Bengali, inherits from Hindi | // Bengali, inherits from Hindi | ||||
| //==================================================== | //==================================================== | ||||
| phoneme @ | |||||
| vowel flag1 starttype #@ endtype #@ | |||||
| length 65 | |||||
| ChangeIfDiminished(@-) | |||||
| IF nextPh(H) THEN | |||||
| FMT(vowel/@_low) | |||||
| phoneme V // inherent vowel, can be [O] or [o] | |||||
| vowel flag1 starttype #o endtype #o | |||||
| length 200 | |||||
| IF thisPh(isFirstVowel) THEN | |||||
| IF nextVowel(i) OR nextVowel(u) THEN | |||||
| ChangePhoneme(o) | |||||
| ENDIF | |||||
| IF prevPhW(r) THEN | |||||
| ChangePhoneme(o) | |||||
| ENDIF | |||||
| ENDIF | ENDIF | ||||
| FMT(vowel/@_bck) | |||||
| ChangePhoneme(O) | |||||
| endphoneme | endphoneme | ||||
| phoneme V | |||||
| vowel flag1 starttype #@ endtype #@ | |||||
| length 180 | |||||
| CALL hi/V | |||||
| phoneme a | |||||
| vowel starttype #a endtype #a | |||||
| length 225 | |||||
| FMT(vowel/aa_9) | |||||
| endphoneme | endphoneme | ||||
| phoneme a: | |||||
| vowel long starttype #a endtype #a | |||||
| length 230 | |||||
| FMT(vowel/aa_9) | |||||
| phoneme i | |||||
| vowel starttype #i endtype #i | |||||
| length 200 | |||||
| FMT(vowel/i_6) | |||||
| endphoneme | |||||
| phoneme u | |||||
| vowel starttype #u endtype #u | |||||
| length 200 | |||||
| FMT(vowel/u) | |||||
| endphoneme | |||||
| phoneme e | |||||
| vowel starttype #e endtype #e | |||||
| length 200 | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme & | |||||
| vowel starttype #a endtype #a | |||||
| length 200 | |||||
| FMT(vowel/&_2) | |||||
| endphoneme | |||||
| phoneme o | |||||
| vowel starttype #o endtype #o | |||||
| length 200 | |||||
| IF nextPhW(w) THEN | |||||
| length 160 | |||||
| ENDIF | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme O | |||||
| vowel starttype #o endtype #o | |||||
| length 200 | |||||
| FMT(vowel/oo_5) | |||||
| endphoneme | |||||
| phoneme tS | |||||
| import_phoneme base/tS | |||||
| endphoneme | |||||
| phoneme tS# | |||||
| import_phoneme base/tS | |||||
| endphoneme | endphoneme | ||||
| phoneme o: | |||||
| vowel long starttype #o endtype #o | |||||
| length 220 | |||||
| FMT(vowel/o_2) | |||||
| phoneme ~ | |||||
| virtual | |||||
| endphoneme | endphoneme | ||||
| const char *p; | const char *p; | ||||
| int len; | int len; | ||||
| int count; | int count; | ||||
| int c; | |||||
| int j; | |||||
| const espeak_VOICE *v; | const espeak_VOICE *v; | ||||
| const char *lang_name; | const char *lang_name; | ||||
| char age_buf[12]; | char age_buf[12]; | ||||
| char buf[80]; | |||||
| const espeak_VOICE **voices; | const espeak_VOICE **voices; | ||||
| espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
| static char genders[4] = {' ','M','F',' '}; | |||||
| static char genders[4] = {'-','M','F','-'}; | |||||
| if((language != NULL) && (language[0] != 0)) | if((language != NULL) && (language[0] != 0)) | ||||
| { | { | ||||
| voices = espeak_ListVoices(NULL); | voices = espeak_ListVoices(NULL); | ||||
| } | } | ||||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); | |||||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
| for(ix=0; (v = voices[ix]) != NULL; ix++) | for(ix=0; (v = voices[ix]) != NULL; ix++) | ||||
| { | { | ||||
| if(count==0) | if(count==0) | ||||
| { | { | ||||
| fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", | |||||
| p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); | |||||
| for(j=0; j < sizeof(buf); j++) | |||||
| { | |||||
| // replace spaces in the name | |||||
| if((c = v->name[j]) == ' ') | |||||
| c = '_'; | |||||
| if((buf[j] = c) == 0) | |||||
| break; | |||||
| } | |||||
| fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", | |||||
| p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); | |||||
| } | } | ||||
| else | else | ||||
| { | { |
| if(ph_buf[0] == 0) | if(ph_buf[0] == 0) | ||||
| { | { | ||||
| if(al_offset == translator->langopts.alt_alphabet) | |||||
| if((al_offset != 0) && (al_offset == translator->langopts.alt_alphabet)) | |||||
| language = translator->langopts.alt_alphabet_lang; | language = translator->langopts.alt_alphabet_lang; | ||||
| else | else | ||||
| if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) | if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) | ||||
| // Numbers | // Numbers | ||||
| static char ph_ordinal2[12]; | static char ph_ordinal2[12]; | ||||
| static char ph_ordinal2x[12]; | |||||
| static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman) | static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman) | ||||
| if(control & 4) | if(control & 4) | ||||
| { | { | ||||
| sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits | sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits | ||||
| found = Lookup(tr, string, ph_digits); | |||||
| if((found = Lookup(tr, string, ph_digits)) != 0) | |||||
| { | |||||
| if(ph_ordinal2x[0] != 0) | |||||
| strcpy(ph_ordinal, ph_ordinal2x); // alternate pronunciation (lang=an) | |||||
| } | |||||
| } | } | ||||
| if(found == 0) | if(found == 0) | ||||
| { | { | ||||
| else | else | ||||
| { | { | ||||
| if((is_ordinal) && | |||||
| ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||||
| if(is_ordinal) | |||||
| { | { | ||||
| sprintf(string,"_%dX%c", tens, ord_type); | sprintf(string,"_%dX%c", tens, ord_type); | ||||
| if(Lookup(tr, string, ph_tens) != 0) | if(Lookup(tr, string, ph_tens) != 0) | ||||
| { | { | ||||
| Lookup(tr, "_0and", ph_and); | Lookup(tr, "_0and", ph_and); | ||||
| if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) | |||||
| if((is_ordinal) && (tr->langopts.numbers2 & NUM2_ORDINAL_NO_AND)) | |||||
| ph_and[0] = 0; | ph_and[0] = 0; | ||||
| if(tr->langopts.numbers & NUM_SWAP_TENS) | if(tr->langopts.numbers & NUM_SWAP_TENS) | ||||
| ordinal = 2; | ordinal = 2; | ||||
| flags[0] |= FLAG_SKIPWORDS; | flags[0] |= FLAG_SKIPWORDS; | ||||
| skipwords = 1; | skipwords = 1; | ||||
| sprintf(string,"_x#%s",suffix); | |||||
| Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation? | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | ||||
| utf8_in(&next_char,p); | utf8_in(&next_char,p); | ||||
| if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||||
| if(!iswalpha(next_char) && (thousands_exact==0)) | |||||
| // if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||||
| strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | ||||
| } | } | ||||
| const char *p; | const char *p; | ||||
| int len; | int len; | ||||
| int count; | int count; | ||||
| int c; | |||||
| int j; | |||||
| const espeak_VOICE *v; | const espeak_VOICE *v; | ||||
| const char *lang_name; | const char *lang_name; | ||||
| char age_buf[12]; | char age_buf[12]; | ||||
| char buf[80]; | |||||
| const espeak_VOICE **voices; | const espeak_VOICE **voices; | ||||
| espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
| static char genders[4] = {' ','M','F',' '}; | |||||
| static char genders[4] = {'-','M','F','-'}; | |||||
| if((language != NULL) && (language[0] != 0)) | if((language != NULL) && (language[0] != 0)) | ||||
| { | { | ||||
| voices = espeak_ListVoices(NULL); | voices = espeak_ListVoices(NULL); | ||||
| } | } | ||||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); | |||||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
| for(ix=0; (v = voices[ix]) != NULL; ix++) | for(ix=0; (v = voices[ix]) != NULL; ix++) | ||||
| { | { | ||||
| if(count==0) | if(count==0) | ||||
| { | { | ||||
| fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", | |||||
| p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); | |||||
| for(j=0; j < sizeof(buf); j++) | |||||
| { | |||||
| // replace spaces in the name | |||||
| if((c = v->name[j]) == ' ') | |||||
| c = '_'; | |||||
| if((buf[j] = c) == 0) | |||||
| break; | |||||
| } | |||||
| fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", | |||||
| p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); | |||||
| } | } | ||||
| else | else | ||||
| { | { |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.47.03 21.Mar.13"; | |||||
| const char *version_string = "1.47.03b 22.Mar.13"; | |||||
| const int version_phdata = 0x014701; | const int version_phdata = 0x014701; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| tr->langopts.max_initial_consonants = 3; | tr->langopts.max_initial_consonants = 3; | ||||
| tr->langopts.replace_chars = NULL; | tr->langopts.replace_chars = NULL; | ||||
| tr->langopts.ascii_language[0] = 0; // Non-Latin alphabet languages, use this language to speak Latin words, default is English | tr->langopts.ascii_language[0] = 0; // Non-Latin alphabet languages, use this language to speak Latin words, default is English | ||||
| tr->langopts.alt_alphabet_lang = L('e','n'); | |||||
| SetLengthMods(tr,201); | SetLengthMods(tr,201); | ||||
| // tr->langopts.length_mods = length_mods_en; | // tr->langopts.length_mods = length_mods_en; | ||||
| tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | ||||
| tr->letter_bits_offset = OFFSET_BENGALI; | tr->letter_bits_offset = OFFSET_BENGALI; | ||||
| SetIndicLetters(tr); // call this after setting OFFSET_BENGALI | SetIndicLetters(tr); // call this after setting OFFSET_BENGALI | ||||
| SetLetterBitsRange(tr,LETTERGP_B,0x01,0x01); // candranindu | |||||
| SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | ||||
| tr->langopts.numbers = 0x1; | |||||
| tr->langopts.numbers = NUM_SWAP_TENS; | |||||
| tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | ||||
| } | } | ||||
| break; | break; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | ||||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; | ||||
| tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands | |||||
| tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; // variant form of numbers before thousands | |||||
| if(name2 == L_grc) | if(name2 == L_grc) | ||||
| { | { | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | ||||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; | |||||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; | |||||
| if(name2 == L('c','a')) | if(name2 == L('c','a')) | ||||
| { | { | ||||
| if(name2 == L('a','n')) | if(name2 == L('a','n')) | ||||
| { | { | ||||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | ||||
| tr->langopts.numbers2 = 0; | |||||
| tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND; | |||||
| } | } | ||||
| else | else | ||||
| if(name2 == L_pap) | if(name2 == L_pap) | ||||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; | 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.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; | |||||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND; | |||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| ResetLetterBits(tr,0x2); | ResetLetterBits(tr,0x2); | ||||
| SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y |
| #define NUM2_THOUSANDS_VAR4 0x100 | #define NUM2_THOUSANDS_VAR4 0x100 | ||||
| #define NUM2_THOUSANDS_VAR5 0x140 | #define NUM2_THOUSANDS_VAR5 0x140 | ||||
| #define NUM2_ORDINAL_NO_AND 0x800 | |||||
| #define NUM2_MULTIPLE_ORDINAL 0x1000 | #define NUM2_MULTIPLE_ORDINAL 0x1000 | ||||
| #define NUM2_NO_TEEN_ORDINALS 0x2000 | #define NUM2_NO_TEEN_ORDINALS 0x2000 | ||||
| #define NUM2_MYRIADS 0x4000 | #define NUM2_MYRIADS 0x4000 | ||||
| // bits 1-4 use variant form of numbers before thousands,millions,etc. | // bits 1-4 use variant form of numbers before thousands,millions,etc. | ||||
| // bits 6-8 use different forms of thousand, million, etc (M MA MB) | // bits 6-8 use different forms of thousand, million, etc (M MA MB) | ||||
| // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | ||||
| // bit11=(LANG=es,an) don't say 'and' between tens and units for ordinal numbers | |||||
| // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units | // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units | ||||
| // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals | // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals | ||||
| // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) | // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) |
| static const char *voices_asia = | static const char *voices_asia = | ||||
| "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | ||||
| static const char *voices_europe = | static const char *voices_europe = | ||||
| "an bg bs ca cs cy da el es et fi fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||||
| "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||||
| strncpy0(voicename, vname, sizeof(voicename)); | strncpy0(voicename, vname, sizeof(voicename)); | ||||
| p = voice->languages; // list of languages+dialects for which this voice is suitable | p = voice->languages; // list of languages+dialects for which this voice is suitable | ||||
| if(strcmp(spec_language,"mbrola")==0) | |||||
| if(spec_n_parts < 0) | |||||
| { | { | ||||
| // only list mbrola voices | |||||
| if(memcmp(voice->identifier,"mb/",3) == 0) | |||||
| // match on the subdirectory | |||||
| if(memcmp(voice->identifier, spec_language, spec_lang_len) == 0) | |||||
| return(100); | return(100); | ||||
| return(0); | return(0); | ||||
| } | } | ||||
| int lang_len=0; | int lang_len=0; | ||||
| espeak_VOICE *vp; | espeak_VOICE *vp; | ||||
| char language[80]; | char language[80]; | ||||
| char buf[sizeof(path_home)+80]; | |||||
| // count number of parts in the specified language | // count number of parts in the specified language | ||||
| if((voice_select->languages != NULL) && (voice_select->languages[0] != 0)) | if((voice_select->languages != NULL) && (voice_select->languages[0] != 0)) | ||||
| n_parts++; | n_parts++; | ||||
| } | } | ||||
| } | } | ||||
| if((n_parts == 1) && (control & 1)) | |||||
| { | |||||
| if(strcmp(language, "mbrola") == 0) | |||||
| { | |||||
| language[2] = 0; // truncate to "mb" | |||||
| lang_len = 2; | |||||
| } | |||||
| sprintf(buf, "%s/voices/%s", path_home, language); | |||||
| if(GetFileLength(buf) == -2) | |||||
| { | |||||
| // A subdirectory name has been specified. List all the voices in that subdirectory | |||||
| language[lang_len++] = PATHSEP; | |||||
| language[lang_len] = 0; | |||||
| n_parts = -1; | |||||
| } | |||||
| } | |||||
| // select those voices which match the specified language | // select those voices which match the specified language | ||||
| nv = 0; | nv = 0; | ||||
| for(ix=0; ix<n_voices_list; ix++) | for(ix=0; ix<n_voices_list; ix++) | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| // list all: omit variant voices and mbrola voices | |||||
| // list all: omit variant voices and mbrola voices and test voices | |||||
| j = 0; | j = 0; | ||||
| for(ix=0; (v = voices_list[ix]) != NULL; ix++) | for(ix=0; (v = voices_list[ix]) != NULL; ix++) | ||||
| { | { | ||||
| if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) && (memcmp(v->identifier,"mb/",3) != 0)) | |||||
| if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) | |||||
| && (memcmp(v->identifier,"mb/",3) != 0) && (memcmp(v->identifier,"test/",5) != 0)) | |||||
| { | { | ||||
| voices[j++] = v; | voices[j++] = v; | ||||
| } | } |