diff --git a/dictsource/an_list b/dictsource/an_list index 36999e41..1274823f 100644 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -107,57 +107,67 @@ _1M2 un||mil^'on _0M4 bil^'ons _1M4 un||bil^'on -_0and i +_0and %i _dpt kon // ordinal numbers -_#º 'eno -_#ª 'ena +_#º o +_#ª a //_ord eno -_1o un -1o prim'Er -_2o dos -2o seQ'und -_3o tres -3o tErT'Er -_4o kwatr -_5o Tink -_6o seIs -_7o sEt -_8o gwit -_9o n'U -_10o DET -_11o onT -_12o DoT -_13o tReT -_14o katorT -_15o kinT -_16o sET +_1ox prim'Er +_2ox seQ'und +_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 + _1Xo DeTi -_20o Bint _2Xo Binti -_30o trent _3Xo trentaI -_40o kwarant _4Xo kwarantaI -_50o Tinkwant _5Xo TinkwantaI -_60o siSant _6Xo siSantaI -_70o sEtant _7Xo sEtantaI -_80o gwitant _8Xo gwitantaI -_90o noBant _9Xo noBantaI -_0Co TEnt -_1Co TEnt -_0M1o mil -_1M1 mil -_0M2o mil^on -_1M2o mil^on +_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 + +_0M1o mil'en +_1M1 mil'en +_0M2o mil^on'en +_1M2o mil^on'en // unstressed words diff --git a/dictsource/bg_list b/dictsource/bg_list index a2311072..27efaa62 100644 --- a/dictsource/bg_list +++ b/dictsource/bg_list @@ -4,13 +4,17 @@ // words of one letter в $combine -а $u $combine +а $u $combine е $u -й i $u +й i $u и $u $pause -у $u $combine -с $combine -г god'ina $hasdot +у $u $combine +с $combine +г god'ina $hasdot + +(а в) %av +(а с) %as + // letter names б b@ diff --git a/dictsource/en_rules b/dictsource/en_rules index fc42cdaa..a55f7b09 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -5864,7 +5864,7 @@ _) zs (Y z _) z (wY z - n) z (_ ts + n) z (_N ts @) zales (_ z'A:l@s zei zaI zes (_ zI2z diff --git a/dictsource/hi_list b/dictsource/hi_list index e28b4e50..d926d6ba 100644 --- a/dictsource/hi_list +++ b/dictsource/hi_list @@ -195,12 +195,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? ॐ #X1o~m _?? Vks.@r -_a ej -_b bi: -_c si: -_d di: -_e i: -_f Ef + // Punctuation । dVn.d.V diff --git a/dictsource/kn_list b/dictsource/kn_list index 7d3ffb92..f302fb06 100644 --- a/dictsource/kn_list +++ b/dictsource/kn_list @@ -26,7 +26,7 @@ p pi: q kju: r a:r s Es -t thi: +t t#i: u ju: v vi: w dabalju: diff --git a/dictsource/ml_list b/dictsource/ml_list index 586ad83e..0fac186d 100644 --- a/dictsource/ml_list +++ b/dictsource/ml_list @@ -63,7 +63,7 @@ p pi: q kju: r a:R s Es -t ti: +t t#i: u ju: v vi: w dVbVlju: diff --git a/dictsource/pt_list b/dictsource/pt_list index 3650ea21..a625c789 100644 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -734,6 +734,7 @@ comodo $alt2 concerto $alt2 $noun concordo $alt conforto $alt $verb +congelo $alt consolo $alt2 $noun controle $alt2 $noun controlo $alt2 $noun @@ -861,7 +862,6 @@ hemorroida $alt hoje $alt2 horrores $alt2 ideia $alt -insonoro $alt interesse $alt2 $noun jogo $alt2 $noun joguete $alt2 @@ -993,6 +993,7 @@ selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 senhores $alt2 +singelo $alt sinopse $alt soco $alt2 soco $alt $verb @@ -1030,6 +1031,7 @@ trombeta $alt2 tumores $alt2 valeta $alt2 vanessa $alt2 +velo $alt velozes $alt verme $alt violeta $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 72f540d6..58442a4c 100644 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -359,12 +359,11 @@ _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E -proteg) e (L05_ e // des- - diss) e (L06_ E / contra- + diss) e (L06_ E // contra- tend) e (L06_ e // a- con- en- es- + vend) e (L06_ e // re- _mord) e (L06_ e _rend) e (L06_ e - _vend) e (L06_ e prend) e (L06_ e // a- rea- des- desa- _arrepend) e (L06_ e _defend) e (L06_ e @@ -373,7 +372,7 @@ _escond) e (L06_ e preend) e (L06_ e // com- a- re- sur- respond) e (L06_ e // cor- bat) e (L07_ e // re- com- - ceb) e (L07_ e / re- per- con- + ceb) e (L07_ e // re- per- con- ced) e (L07_ e // pro- con- su- met) e (L07_ e // co- pro- arre- re- intro- compro- sub- mov) e (L07_ e // re- co- @@ -388,6 +387,7 @@ respond) e (L06_ e // cor- tend) e (L07_ e // en- con- a- es- torc) e (L07_ e // con- venc) e (L07_ e // con- + vend) e (L07_ e // re- vert) e (L07_ e // in- re- con- volv) e (L07_ e // de- en- re- _eleg) e (L07_ e @@ -401,7 +401,6 @@ respond) e (L06_ e // cor- parec) e (L07_ e // a- rea- com- desa- prend) e (L07_ e // a- rea- des- screv) e (L07_ e // e- in- ree- pre- de- -_abastec) e (L07_ e _aborrec) e (L07_ e _absolv) e (L07_ e _adoec) e (L07_ e @@ -434,6 +433,7 @@ _perec) e (L07_ e _rejuvenec) e (L07_ e _resolv) e (L07_ e _suspend) e (L07_ e +abastec) e (L07_ e // re- conhec) e (L07_ e // & re- des- estabelec) e (L07_ e // re- favorec) e (L07_ e // des- @@ -458,10 +458,12 @@ respond) e (L07_ e // cor- _sev) e (rL03_ E _reit) e (rL03_ E _sinc) e (rL03_ E - g) e (rL04_ E // su- refri- + _g) e (rL04_ E qu) e (rL04_ E // re- _op) e (rL04_ E + gen) e (rL04_ E // de- re- _alt) e (rL04_ E + _sug) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E _ven) e (rL04_ E @@ -469,6 +471,7 @@ respond) e (L07_ e // cor- _coop) e (rL04_ E _temp) e (rL04_ E _recup) e (rL04_ E +_refrig) e (rL04_ E _v) e (rbL03_ E _p) e (rdL02_ E _l) e (rdL03_ E @@ -503,11 +506,13 @@ _obsol) e (tL03_ e scr) e (vL03_ e // e- in- pre- ree- de- _atr) e (vL03_ e _r) e (zL04_ E - pr) e (zL04_ E / des- menos- + _pr) e (zL04_ E +_despr) e (zL04_ E _embel) e (zL04_ E +_menospr) e (zL04_ E _emagr) e (çL03 pr) e (çL03_ e // a- - aqu) e (çL03_ e / re- + aqu) e (çL03_ e // re- mer) e (çL03_ e // des- pad) e (çL03_ e // com- par) e (çL03_ e // a- re- com- rea- desa- @@ -859,6 +864,10 @@ _desabr) o (chL04_ O _ens) o (pL04_ O _s) o (prL04_ O _) o (ptL04_ O + _inod) o (rL03_ O +_inson) o (rL03_ O +_comem) o (rL04 O +_remem) o (rL04_ O _enf) o (rquL02_ O c) o (rrL01_ o // escorra, incorra, corra, recorra _m) o (rrL01_ o diff --git a/dictsource/ta_list b/dictsource/ta_list index e7f02eff..7b44a559 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -68,7 +68,7 @@ p pi: q kju: r a:R s Es -t thi: +t t#i: u ju: v vi: w dVbVlju: diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 2ef2fd0c..111ab1f6 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -950,6 +950,7 @@ _துப்பாக்கி) க்க (ுண்ட gg _ப) சக் tSVk _) ச (க்கரவர்த்தி tSV _) ச (க்கிலி tSV + _) சக் (ரவர்த்தி tSVk _க) ச (க்ஸ்தான zV சங்க (ர s.VNkV _) ச (ட்டL08ஸ்கர tSV @@ -1057,6 +1058,7 @@ _தணிகா) ச (ல tSV _வரதா) ச (ாரி tS _வேதா) ச (ாரி tS _கிருஷ்ணமா) ச (ாரி tS +_கோபால) ச (ாரி tS _சங்கரா) ச (ாரி tS _தேசிகா) ச (ாரி tS _பட்டா) ச (ாரி tS @@ -1064,6 +1066,7 @@ _பிரம்ம) ச (ாரி tS _மத்வா) ச (ாரி tS அனந்தா) ச (ாரி tS அன்னமா) ச (ாரி tS +ராஜகோபால) ச (ாரி tS ராமானுஜா) ச (ாரி tS ஆ) ச (ாரிய_ tS ஆ) ச (ாரியார tS @@ -2601,6 +2604,10 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ாகீரதி b _) ப (ாக்கிக் b _) ப (ாக்கிய b + _) ப (ாக்டரி_ f + _) ப (ாக்டரியா b + _) ப (ாக்டரியி f + _) ப (ாக்டரியை f _) பாக்ட (ீரியா ba:kt. _) பாக்த (ாத ba:gd _) ப (ாக்ய b @@ -2947,6 +2954,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ராதித் p _) பி (ராத்தல b _) பி (ராந்தி_ b + _) பி (ராந்திய_ p _) பி (ராந்தியங் p _) பி (ராந்தியத் p _) பி (ராந்தியம்_ p @@ -2986,8 +2994,10 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரித்தானி b _) பிரின்சிப (ால prinsip _) பி (ரிமிய p + _) பி (ரியங்கள p _) பிரியங்க (ா prijVNk _) பி (ரியதர p + _) பி (ரியத்த p _) பி (ரியன p _) பி (ரியப்பட p _) பி (ரியம p diff --git a/dictsource/te_list b/dictsource/te_list index fa2ebd0c..9f2a78e6 100644 --- a/dictsource/te_list +++ b/dictsource/te_list @@ -24,7 +24,7 @@ p pi: q kju: r a:r s Es -t thi: +t t#i: u ju: v vi: w dVbVlju: diff --git a/dictsource/vi_rules b/dictsource/vi_rules index 7c7c4769..2c7eb3e1 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -77,7 +77,7 @@ ỵ ỵ //================================ // Consonants //================================ -.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve +.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge .L02 n @@ -460,7 +460,7 @@ ỵ ỵ .group i i i - i (A j + //i (A j ia i@ ià i@2 iá i@3 @@ -822,7 +822,7 @@ ỵ ỵ .group y y i - y (A j + // y (A j ya i@ yà i@2 yá i@3 @@ -837,7 +837,7 @@ ỵ ỵ yệ i@6 // yêu i@U - + y (L01 _^_EN .group ỳ ỳ i2 diff --git a/phsource/klatt/nr b/phsource/klatt/nr index 50fb6054..7bfb4824 100644 Binary files a/phsource/klatt/nr and b/phsource/klatt/nr differ diff --git a/phsource/r/V_ b/phsource/r/V_ new file mode 100644 index 00000000..349d2b78 Binary files /dev/null and b/phsource/r/V_ differ diff --git a/phsource/r/V_2_ b/phsource/r/V_2_ new file mode 100644 index 00000000..2f189216 Binary files /dev/null and b/phsource/r/V_2_ differ diff --git a/phsource/vnasal/&_n b/phsource/vnasal/&_n index 3b008b00..0df3e9d3 100644 Binary files a/phsource/vnasal/&_n and b/phsource/vnasal/&_n differ diff --git a/phsource/vnasal/&u_n b/phsource/vnasal/&u_n index d9f98de1..9fd6bb9c 100644 Binary files a/phsource/vnasal/&u_n and b/phsource/vnasal/&u_n differ diff --git a/phsource/vnasal/V_n b/phsource/vnasal/V_n index 4d87458c..add3d8a6 100644 Binary files a/phsource/vnasal/V_n and b/phsource/vnasal/V_n differ diff --git a/phsource/vnasal/W_n b/phsource/vnasal/W_n index b6ba2a33..2522d396 100644 Binary files a/phsource/vnasal/W_n and b/phsource/vnasal/W_n differ diff --git a/phsource/vnasal/a#_n b/phsource/vnasal/a#_n index 9d2cb200..08e071f9 100644 Binary files a/phsource/vnasal/a#_n and b/phsource/vnasal/a#_n differ diff --git a/phsource/vnasal/a#_n2 b/phsource/vnasal/a#_n2 index 8a840f34..d55c4568 100644 Binary files a/phsource/vnasal/a#_n2 and b/phsource/vnasal/a#_n2 differ diff --git a/phsource/vnasal/a#u_n b/phsource/vnasal/a#u_n index 91254420..c0eeeac1 100644 Binary files a/phsource/vnasal/a#u_n and b/phsource/vnasal/a#u_n differ diff --git a/phsource/vnasal/aa_n b/phsource/vnasal/aa_n index 9f0ca6bf..4625fe08 100644 Binary files a/phsource/vnasal/aa_n and b/phsource/vnasal/aa_n differ diff --git a/phsource/vnasal/aa_n2 b/phsource/vnasal/aa_n2 index 4f22e290..8ba2fce7 100644 Binary files a/phsource/vnasal/aa_n2 and b/phsource/vnasal/aa_n2 differ diff --git a/phsource/vnasal/aa_n3 b/phsource/vnasal/aa_n3 index 027ae769..5d030ca5 100644 Binary files a/phsource/vnasal/aa_n3 and b/phsource/vnasal/aa_n3 differ diff --git a/phsource/vnasal/aa_n4 b/phsource/vnasal/aa_n4 index e2acca77..a8521c6a 100644 Binary files a/phsource/vnasal/aa_n4 and b/phsource/vnasal/aa_n4 differ diff --git a/phsource/vnasal/e#_n b/phsource/vnasal/e#_n index 39b718c0..5b586764 100644 Binary files a/phsource/vnasal/e#_n and b/phsource/vnasal/e#_n differ diff --git a/phsource/vnasal/e_n b/phsource/vnasal/e_n index fddd7413..676043b5 100644 Binary files a/phsource/vnasal/e_n and b/phsource/vnasal/e_n differ diff --git a/phsource/vnasal/ee_n b/phsource/vnasal/ee_n index 90b6f0ee..5ba8f378 100644 Binary files a/phsource/vnasal/ee_n and b/phsource/vnasal/ee_n differ diff --git a/phsource/vnasal/ee_n2 b/phsource/vnasal/ee_n2 index e0c32a2b..617f9e26 100644 Binary files a/phsource/vnasal/ee_n2 and b/phsource/vnasal/ee_n2 differ diff --git a/phsource/vnasal/ee_u_n b/phsource/vnasal/ee_u_n index ce732a57..023b0d46 100644 Binary files a/phsource/vnasal/ee_u_n and b/phsource/vnasal/ee_u_n differ diff --git a/phsource/vnasal/i_n b/phsource/vnasal/i_n index 7d3471e8..0f27e91b 100644 Binary files a/phsource/vnasal/i_n and b/phsource/vnasal/i_n differ diff --git a/phsource/vnasal/i_n2 b/phsource/vnasal/i_n2 index 9b4c49dd..a1da3eff 100644 Binary files a/phsource/vnasal/i_n2 and b/phsource/vnasal/i_n2 differ diff --git a/phsource/vnasal/ii_n b/phsource/vnasal/ii_n index 17a497ee..ff15cc7d 100644 Binary files a/phsource/vnasal/ii_n and b/phsource/vnasal/ii_n differ diff --git a/phsource/vnasal/o_n b/phsource/vnasal/o_n index 69a5e493..4a97e7df 100644 Binary files a/phsource/vnasal/o_n and b/phsource/vnasal/o_n differ diff --git a/phsource/vnasal/o_n2 b/phsource/vnasal/o_n2 index 358ffdef..f3740ed0 100644 Binary files a/phsource/vnasal/o_n2 and b/phsource/vnasal/o_n2 differ diff --git a/phsource/vnasal/o_n3 b/phsource/vnasal/o_n3 index f00626d4..4981418a 100644 Binary files a/phsource/vnasal/o_n3 and b/phsource/vnasal/o_n3 differ diff --git a/phsource/vnasal/o_n4 b/phsource/vnasal/o_n4 index e0bbeda7..2a72e3bb 100644 Binary files a/phsource/vnasal/o_n4 and b/phsource/vnasal/o_n4 differ diff --git a/phsource/vnasal/oi_n b/phsource/vnasal/oi_n index 5e804f7c..0214bf23 100644 Binary files a/phsource/vnasal/oi_n and b/phsource/vnasal/oi_n differ diff --git a/phsource/vnasal/oo_n b/phsource/vnasal/oo_n index 7109a41b..8932fd72 100644 Binary files a/phsource/vnasal/oo_n and b/phsource/vnasal/oo_n differ diff --git a/phsource/vnasal/oo_n2 b/phsource/vnasal/oo_n2 index 8fa66674..a907dd2c 100644 Binary files a/phsource/vnasal/oo_n2 and b/phsource/vnasal/oo_n2 differ diff --git a/phsource/vnasal/oo_n3 b/phsource/vnasal/oo_n3 index 559bd295..6bb5633f 100644 Binary files a/phsource/vnasal/oo_n3 and b/phsource/vnasal/oo_n3 differ diff --git a/phsource/vnasal/u_n b/phsource/vnasal/u_n index 6284f676..d7977d21 100644 Binary files a/phsource/vnasal/u_n and b/phsource/vnasal/u_n differ diff --git a/phsource/vnasal/vowelchart.png b/phsource/vnasal/vowelchart.png index 59e4beb8..ef459dcf 100644 Binary files a/phsource/vnasal/vowelchart.png and b/phsource/vnasal/vowelchart.png differ diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 08955e2f..3fe9a2ed 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -745,6 +745,7 @@ static void CompileReport(void) REF_HASH_TAB **list; const char *data_path; int prev_table; + int procedure_num; int prev_mnemonic; if(f_report == NULL) @@ -802,7 +803,17 @@ static void CompileReport(void) j++; } - fprintf(f_report," [%s] %s",WordToString(prev_mnemonic = list[ix]->ph_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name); + prev_mnemonic = list[ix]->ph_mnemonic; + if((prev_mnemonic >> 24) == 'P') + { + // a procedure, not a phoneme + procedure_num = atoi(WordToString(prev_mnemonic)); + fprintf(f_report," %s %s", phoneme_tab_list2[prev_table = list[ix]->ph_table].name, proc_names[procedure_num]); + } + else + { + fprintf(f_report," [%s] %s",WordToString(prev_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name); + } fputc('\n',f_report); } @@ -1856,7 +1867,7 @@ static int LoadWavefile(FILE *f, const char *fname) } sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp); - if(system(command) < 0) + if(system(command) != 0) { failed = 1; } @@ -2761,6 +2772,8 @@ int CompilePhoneme(int compile_phoneme) } strcpy(proc_names[n_procs], item_string); phoneme_out = &phoneme_out2; + sprintf(number_buf,"%.3dP", n_procs); + phoneme_out->mnemonic = StringToWord(number_buf); } phoneme_out->code = phcode; @@ -3498,10 +3511,11 @@ static void CompilePhonemeData2(const char *source) make_envs(); #endif + wxLogStatus(_T("Compiling phoneme data: ")+wxString(path_source,wxConvLocal)); n_envelopes = 0; error_count = 0; resample_count = 0; -memset(markers_used,0,sizeof(markers_used)); + memset(markers_used,0,sizeof(markers_used)); f_errors = stderr; @@ -3668,7 +3682,7 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references if(error_count > 0) { - report += _T(" See file: 'phsource/error_log'."); + report += _T(" See file: '")+wxString(path_source,wxConvLocal)+_T("phsource/error_log'."); wxLogError(report); } wxLogStatus(report + report_dict); @@ -4138,7 +4152,11 @@ void CompilePhonemeData() void CompileSampleRate() { long value; - value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs sox)"), 22050, 5000, 48000); +#ifndef PLATFORM_POSIX + wxLogError(_T("Change Sample Rate needs the 'sox' program. It probably doesn't work on Windows")); +#endif + + value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs 'sox' program)"), 22050, 5000, 48000); if(value > 1000) { diff --git a/src/menus.cpp b/src/menus.cpp index 52ac13ab..8f69539f 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -91,8 +91,8 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) data_menu = new wxMenu; 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->Append(MENU_COMPILE_PH, _("Compile &phoneme data 22050Hz")); + data_menu->Append(MENU_COMPILE_PH2, _("Compile at sample &rate")); data_menu->AppendSeparator(); data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 3b9ea35a..1b843f84 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.51 15.Mar.13"; +const char *version_string = "1.46.53 16.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index b83af8de..3a3631d6 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -82,7 +82,7 @@ const char *WordToString(unsigned int word) int ix; static char buf[5]; - for(ix=0; ix<3; ix++) + for(ix=0; ix<4; ix++) buf[ix] = word >> (ix*8); buf[4] = 0; return(buf); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index a2c68ca5..07c86abe 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -455,6 +455,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; + static const short stress_lengths_ta2[8] = {230, 230, 240, 240, 0, 0, 260, 260}; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; // convert name string into a word of up to 4 characters, for the switch() @@ -731,6 +732,7 @@ Translator *SelectTranslator(const char *name) if(name2 == L('a','n')) { tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; + tr->langopts.numbers2 = 0; } else if(name2 == L_pap) @@ -1423,7 +1425,7 @@ SetLengthMods(tr,3); // all equal case L('m','r'): // Marathi case L('t','e'): // Telugu { - SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); + SetupTranslator(tr,stress_lengths_ta2, stress_amps_ta); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1L; @@ -1433,9 +1435,12 @@ SetLengthMods(tr,3); // all equal if(name2 == L('t','a')) { + SetupTranslator(tr,stress_lengths_ta, NULL); tr->letter_bits_offset = OFFSET_TAMIL; tr->langopts.numbers = NUM_OMIT_1_THOUSAND ; + tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words } + else if(name2 == L('m','r')) { tr->letter_bits_offset = OFFSET_DEVANAGARI; @@ -1458,9 +1463,8 @@ SetLengthMods(tr,3); // all equal tr->letter_bits_offset = OFFSET_TELUGU; tr->langopts.numbers = 0x1; } - tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words SetIndicLetters(tr); // call this after setting OFFSET_ - SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial) + SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial) } break; diff --git a/src/translate.cpp b/src/translate.cpp index 039423ff..3773a0a5 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -842,7 +842,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt char prefix_chars[0x3f + 2]; int found=0; int end_flags; - char c_temp; // save a character byte while we temporarily replace it with space + int c_temp; // save a character byte while we temporarily replace it with space int first_char; int last_char = 0; int add_plural_suffix = 0; @@ -912,7 +912,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) { // retranslating a 1-character word using a different language, say its name - spell_word = 1; + utf8_in(&c_temp, wordx+1); // the next character + if(!IsAlpha(c_temp) || (AlphabetFromChar(last_char) != AlphabetFromChar(c_temp))) + spell_word = 1; } if(option_sayas == SAYAS_KEY) @@ -1938,6 +1940,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if(ok) { *p2 = '-'; // replace next space by hyphen + wtab[0].flags &= ~FLAG_ALL_UPPER; // prevent it being considered an abbreviation flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) {