Conflicts: dictsource/dict_phonemes phsource/compile_report phsource/vnasal/a#_n2 phsource/vnasal/o_n4master
_0M4 bil^'ons | _0M4 bil^'ons | ||||
_1M4 un||bil^'on | _1M4 un||bil^'on | ||||
_0and i | |||||
_0and %i | |||||
_dpt kon | _dpt kon | ||||
// ordinal numbers | // ordinal numbers | ||||
_#º 'eno | |||||
_#ª 'ena | |||||
_#º o | |||||
_#ª a | |||||
//_ord eno | //_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 | _1Xo DeTi | ||||
_20o Bint | |||||
_2Xo Binti | _2Xo Binti | ||||
_30o trent | |||||
_3Xo trentaI | _3Xo trentaI | ||||
_40o kwarant | |||||
_4Xo kwarantaI | _4Xo kwarantaI | ||||
_50o Tinkwant | |||||
_5Xo TinkwantaI | _5Xo TinkwantaI | ||||
_60o siSant | |||||
_6Xo siSantaI | _6Xo siSantaI | ||||
_70o sEtant | |||||
_7Xo sEtantaI | _7Xo sEtantaI | ||||
_80o gwitant | |||||
_8Xo gwitantaI | _8Xo gwitantaI | ||||
_90o noBant | |||||
_9Xo noBantaI | _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 | // unstressed words |
// words of one letter | // words of one letter | ||||
в $combine | в $combine | ||||
а $u $combine | |||||
а $u $combine | |||||
е $u | е $u | ||||
й i $u | |||||
й i $u | |||||
и $u $pause | и $u $pause | ||||
у $u $combine | |||||
с $combine | |||||
г god'ina $hasdot | |||||
у $u $combine | |||||
с $combine | |||||
г god'ina $hasdot | |||||
(а в) %av | |||||
(а с) %as | |||||
// letter names | // letter names | ||||
б b@ | б b@ |
_) zs (Y z | _) zs (Y z | ||||
_) z (wY z | _) z (wY z | ||||
n) z (_ ts | |||||
n) z (_N ts | |||||
@) zales (_ z'A:l@s | @) zales (_ z'A:l@s | ||||
zei zaI | zei zaI | ||||
zes (_ zI2z | zes (_ zI2z |
ॐ #X1o~m | ॐ #X1o~m | ||||
_?? Vks.@r | _?? Vks.@r | ||||
_a ej | |||||
_b bi: | |||||
_c si: | |||||
_d di: | |||||
_e i: | |||||
_f Ef | |||||
// Punctuation | // Punctuation | ||||
। dVn.d.V | । dVn.d.V |
q kju: | q kju: | ||||
r a:r | r a:r | ||||
s Es | s Es | ||||
t thi: | |||||
t t#i: | |||||
u ju: | u ju: | ||||
v vi: | v vi: | ||||
w dabalju: | w dabalju: |
q kju: | q kju: | ||||
r a:R | r a:R | ||||
s Es | s Es | ||||
t ti: | |||||
t t#i: | |||||
u ju: | u ju: | ||||
v vi: | v vi: | ||||
w dVbVlju: | w dVbVlju: |
concerto $alt2 $noun | concerto $alt2 $noun | ||||
concordo $alt | concordo $alt | ||||
conforto $alt $verb | conforto $alt $verb | ||||
congelo $alt | |||||
consolo $alt2 $noun | consolo $alt2 $noun | ||||
controle $alt2 $noun | controle $alt2 $noun | ||||
controlo $alt2 $noun | controlo $alt2 $noun | ||||
hoje $alt2 | hoje $alt2 | ||||
horrores $alt2 | horrores $alt2 | ||||
ideia $alt | ideia $alt | ||||
insonoro $alt | |||||
interesse $alt2 $noun | interesse $alt2 $noun | ||||
jogo $alt2 $noun | jogo $alt2 $noun | ||||
joguete $alt2 | joguete $alt2 | ||||
sexteto $alt2 | sexteto $alt2 | ||||
?1 senhora $alt2 | ?1 senhora $alt2 | ||||
senhores $alt2 | senhores $alt2 | ||||
singelo $alt | |||||
sinopse $alt | sinopse $alt | ||||
soco $alt2 | soco $alt2 | ||||
soco $alt $verb | soco $alt $verb | ||||
tumores $alt2 | tumores $alt2 | ||||
valeta $alt2 | valeta $alt2 | ||||
vanessa $alt2 | vanessa $alt2 | ||||
velo $alt | |||||
velozes $alt | velozes $alt | ||||
verme $alt | verme $alt | ||||
violeta $alt2 | violeta $alt2 |
_perd) e (L05_ e | _perd) e (L05_ e | ||||
_quis) e (L05_ E | _quis) e (L05_ E | ||||
_soub) 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- | tend) e (L06_ e // a- con- en- es- | ||||
vend) e (L06_ e // re- | |||||
_mord) e (L06_ e | _mord) e (L06_ e | ||||
_rend) e (L06_ e | _rend) e (L06_ e | ||||
_vend) e (L06_ e | |||||
prend) e (L06_ e // a- rea- des- desa- | prend) e (L06_ e // a- rea- des- desa- | ||||
_arrepend) e (L06_ e | _arrepend) e (L06_ e | ||||
_defend) e (L06_ e | _defend) e (L06_ e | ||||
preend) e (L06_ e // com- a- re- sur- | preend) e (L06_ e // com- a- re- sur- | ||||
respond) e (L06_ e // cor- | respond) e (L06_ e // cor- | ||||
bat) e (L07_ e // re- com- | 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- | ced) e (L07_ e // pro- con- su- | ||||
met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | ||||
mov) e (L07_ e // re- co- | mov) e (L07_ e // re- co- | ||||
tend) e (L07_ e // en- con- a- es- | tend) e (L07_ e // en- con- a- es- | ||||
torc) e (L07_ e // con- | torc) e (L07_ e // con- | ||||
venc) e (L07_ e // con- | venc) e (L07_ e // con- | ||||
vend) e (L07_ e // re- | |||||
vert) e (L07_ e // in- re- con- | vert) e (L07_ e // in- re- con- | ||||
volv) e (L07_ e // de- en- re- | volv) e (L07_ e // de- en- re- | ||||
_eleg) e (L07_ e | _eleg) e (L07_ e | ||||
parec) e (L07_ e // a- rea- com- desa- | parec) e (L07_ e // a- rea- com- desa- | ||||
prend) e (L07_ e // a- rea- des- | prend) e (L07_ e // a- rea- des- | ||||
screv) e (L07_ e // e- in- ree- pre- de- | screv) e (L07_ e // e- in- ree- pre- de- | ||||
_abastec) e (L07_ e | |||||
_aborrec) e (L07_ e | _aborrec) e (L07_ e | ||||
_absolv) e (L07_ e | _absolv) e (L07_ e | ||||
_adoec) e (L07_ e | _adoec) e (L07_ e | ||||
_rejuvenec) e (L07_ e | _rejuvenec) e (L07_ e | ||||
_resolv) e (L07_ e | _resolv) e (L07_ e | ||||
_suspend) e (L07_ e | _suspend) e (L07_ e | ||||
abastec) e (L07_ e // re- | |||||
conhec) e (L07_ e // & re- des- | conhec) e (L07_ e // & re- des- | ||||
estabelec) e (L07_ e // re- | estabelec) e (L07_ e // re- | ||||
favorec) e (L07_ e // des- | favorec) e (L07_ e // des- | ||||
_sev) e (rL03_ E | _sev) e (rL03_ E | ||||
_reit) e (rL03_ E | _reit) e (rL03_ E | ||||
_sinc) e (rL03_ E | _sinc) e (rL03_ E | ||||
g) e (rL04_ E // su- refri- | |||||
_g) e (rL04_ E | |||||
qu) e (rL04_ E // re- | qu) e (rL04_ E // re- | ||||
_op) e (rL04_ E | _op) e (rL04_ E | ||||
gen) e (rL04_ E // de- re- | |||||
_alt) e (rL04_ E | _alt) e (rL04_ E | ||||
_sug) e (rL04_ E | |||||
_sup) e (rL04_ E | _sup) e (rL04_ E | ||||
_tol) e (rL04_ E | _tol) e (rL04_ E | ||||
_ven) e (rL04_ E | _ven) e (rL04_ E | ||||
_coop) e (rL04_ E | _coop) e (rL04_ E | ||||
_temp) e (rL04_ E | _temp) e (rL04_ E | ||||
_recup) e (rL04_ E | _recup) e (rL04_ E | ||||
_refrig) e (rL04_ E | |||||
_v) e (rbL03_ E | _v) e (rbL03_ E | ||||
_p) e (rdL02_ E | _p) e (rdL02_ E | ||||
_l) e (rdL03_ E | _l) e (rdL03_ E | ||||
scr) e (vL03_ e // e- in- pre- ree- de- | scr) e (vL03_ e // e- in- pre- ree- de- | ||||
_atr) e (vL03_ e | _atr) e (vL03_ e | ||||
_r) e (zL04_ E | _r) e (zL04_ E | ||||
pr) e (zL04_ E / des- menos- | |||||
_pr) e (zL04_ E | |||||
_despr) e (zL04_ E | |||||
_embel) e (zL04_ E | _embel) e (zL04_ E | ||||
_menospr) e (zL04_ E | |||||
_emagr) e (çL03 | _emagr) e (çL03 | ||||
pr) e (çL03_ e // a- | pr) e (çL03_ e // a- | ||||
aqu) e (çL03_ e / re- | |||||
aqu) e (çL03_ e // re- | |||||
mer) e (çL03_ e // des- | mer) e (çL03_ e // des- | ||||
pad) e (çL03_ e // com- | pad) e (çL03_ e // com- | ||||
par) e (çL03_ e // a- re- com- rea- desa- | par) e (çL03_ e // a- re- com- rea- desa- | ||||
_ens) o (pL04_ O | _ens) o (pL04_ O | ||||
_s) o (prL04_ O | _s) o (prL04_ O | ||||
_) o (ptL04_ O | _) o (ptL04_ O | ||||
_inod) o (rL03_ O | |||||
_inson) o (rL03_ O | |||||
_comem) o (rL04 O | |||||
_remem) o (rL04_ O | |||||
_enf) o (rquL02_ O | _enf) o (rquL02_ O | ||||
c) o (rrL01_ o // escorra, incorra, corra, recorra | c) o (rrL01_ o // escorra, incorra, corra, recorra | ||||
_m) o (rrL01_ o | _m) o (rrL01_ o |
q kju: | q kju: | ||||
r a:R | r a:R | ||||
s Es | s Es | ||||
t thi: | |||||
t t#i: | |||||
u ju: | u ju: | ||||
v vi: | v vi: | ||||
w dVbVlju: | w dVbVlju: |
_ப) சக் tSVk | _ப) சக் tSVk | ||||
_) ச (க்கரவர்த்தி tSV | _) ச (க்கரவர்த்தி tSV | ||||
_) ச (க்கிலி tSV | _) ச (க்கிலி tSV | ||||
_) சக் (ரவர்த்தி tSVk | |||||
_க) ச (க்ஸ்தான zV | _க) ச (க்ஸ்தான zV | ||||
சங்க (ர s.VNkV | சங்க (ர s.VNkV | ||||
_) ச (ட்டL08ஸ்கர tSV | _) ச (ட்டL08ஸ்கர tSV | ||||
_வரதா) ச (ாரி tS | _வரதா) ச (ாரி tS | ||||
_வேதா) ச (ாரி tS | _வேதா) ச (ாரி tS | ||||
_கிருஷ்ணமா) ச (ாரி tS | _கிருஷ்ணமா) ச (ாரி tS | ||||
_கோபால) ச (ாரி tS | |||||
_சங்கரா) ச (ாரி tS | _சங்கரா) ச (ாரி tS | ||||
_தேசிகா) ச (ாரி tS | _தேசிகா) ச (ாரி tS | ||||
_பட்டா) ச (ாரி tS | _பட்டா) ச (ாரி tS | ||||
_மத்வா) ச (ாரி tS | _மத்வா) ச (ாரி tS | ||||
அனந்தா) ச (ாரி tS | அனந்தா) ச (ாரி tS | ||||
அன்னமா) ச (ாரி tS | அன்னமா) ச (ாரி tS | ||||
ராஜகோபால) ச (ாரி tS | |||||
ராமானுஜா) ச (ாரி tS | ராமானுஜா) ச (ாரி tS | ||||
ஆ) ச (ாரிய_ tS | ஆ) ச (ாரிய_ tS | ||||
ஆ) ச (ாரியார tS | ஆ) ச (ாரியார tS | ||||
_) ப (ாகீரதி b | _) ப (ாகீரதி b | ||||
_) ப (ாக்கிக் b | _) ப (ாக்கிக் b | ||||
_) ப (ாக்கிய b | _) ப (ாக்கிய b | ||||
_) ப (ாக்டரி_ f | |||||
_) ப (ாக்டரியா b | |||||
_) ப (ாக்டரியி f | |||||
_) ப (ாக்டரியை f | |||||
_) பாக்ட (ீரியா ba:kt. | _) பாக்ட (ீரியா ba:kt. | ||||
_) பாக்த (ாத ba:gd | _) பாக்த (ாத ba:gd | ||||
_) ப (ாக்ய b | _) ப (ாக்ய b | ||||
_) பி (ராதித் p | _) பி (ராதித் p | ||||
_) பி (ராத்தல b | _) பி (ராத்தல b | ||||
_) பி (ராந்தி_ b | _) பி (ராந்தி_ b | ||||
_) பி (ராந்திய_ p | |||||
_) பி (ராந்தியங் p | _) பி (ராந்தியங் p | ||||
_) பி (ராந்தியத் p | _) பி (ராந்தியத் p | ||||
_) பி (ராந்தியம்_ p | _) பி (ராந்தியம்_ p | ||||
_) பி (ரித்தானி b | _) பி (ரித்தானி b | ||||
_) பிரின்சிப (ால prinsip | _) பிரின்சிப (ால prinsip | ||||
_) பி (ரிமிய p | _) பி (ரிமிய p | ||||
_) பி (ரியங்கள p | |||||
_) பிரியங்க (ா prijVNk | _) பிரியங்க (ா prijVNk | ||||
_) பி (ரியதர p | _) பி (ரியதர p | ||||
_) பி (ரியத்த p | |||||
_) பி (ரியன p | _) பி (ரியன p | ||||
_) பி (ரியப்பட p | _) பி (ரியப்பட p | ||||
_) பி (ரியம p | _) பி (ரியம p |
q kju: | q kju: | ||||
r a:r | r a:r | ||||
s Es | s Es | ||||
t thi: | |||||
t t#i: | |||||
u ju: | u ju: | ||||
v vi: | v vi: | ||||
w dVbVlju: | w dVbVlju: |
//================================ | //================================ | ||||
// Consonants | // 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 | .L02 n | ||||
.group i | .group i | ||||
i i | i i | ||||
i (A j | |||||
//i (A j | |||||
ia i@ | ia i@ | ||||
ià i@2 | ià i@2 | ||||
iá i@3 | iá i@3 | ||||
.group y | .group y | ||||
y i | y i | ||||
y (A j | |||||
// y (A j | |||||
ya i@ | ya i@ | ||||
yà i@2 | yà i@2 | ||||
yá i@3 | yá i@3 | ||||
yệ i@6 | yệ i@6 | ||||
// yêu i@U | // yêu i@U | ||||
y (L01 _^_EN | |||||
.group ỳ | .group ỳ | ||||
ỳ i2 | ỳ i2 |
REF_HASH_TAB **list; | REF_HASH_TAB **list; | ||||
const char *data_path; | const char *data_path; | ||||
int prev_table; | int prev_table; | ||||
int procedure_num; | |||||
int prev_mnemonic; | int prev_mnemonic; | ||||
if(f_report == NULL) | if(f_report == NULL) | ||||
j++; | 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); | fputc('\n',f_report); | ||||
} | } | ||||
} | } | ||||
sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp); | 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; | failed = 1; | ||||
} | } | ||||
} | } | ||||
strcpy(proc_names[n_procs], item_string); | strcpy(proc_names[n_procs], item_string); | ||||
phoneme_out = &phoneme_out2; | phoneme_out = &phoneme_out2; | ||||
sprintf(number_buf,"%.3dP", n_procs); | |||||
phoneme_out->mnemonic = StringToWord(number_buf); | |||||
} | } | ||||
phoneme_out->code = phcode; | phoneme_out->code = phcode; | ||||
make_envs(); | make_envs(); | ||||
#endif | #endif | ||||
wxLogStatus(_T("Compiling phoneme data: ")+wxString(path_source,wxConvLocal)); | |||||
n_envelopes = 0; | n_envelopes = 0; | ||||
error_count = 0; | error_count = 0; | ||||
resample_count = 0; | resample_count = 0; | ||||
memset(markers_used,0,sizeof(markers_used)); | |||||
memset(markers_used,0,sizeof(markers_used)); | |||||
f_errors = stderr; | f_errors = stderr; | ||||
if(error_count > 0) | 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); | wxLogError(report); | ||||
} | } | ||||
wxLogStatus(report + report_dict); | wxLogStatus(report + report_dict); | ||||
void CompileSampleRate() | void CompileSampleRate() | ||||
{ | { | ||||
long value; | 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) | if(value > 1000) | ||||
{ | { |
data_menu = new wxMenu; | data_menu = new wxMenu; | ||||
data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); | data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); | ||||
data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); | 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->AppendSeparator(); | ||||
data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); | data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); | ||||
data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); | data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014640; | ||||
int option_device_number = -1; | int option_device_number = -1; |
int ix; | int ix; | ||||
static char buf[5]; | static char buf[5]; | ||||
for(ix=0; ix<3; ix++) | |||||
for(ix=0; ix<4; ix++) | |||||
buf[ix] = word >> (ix*8); | buf[ix] = word >> (ix*8); | ||||
buf[4] = 0; | buf[4] = 0; | ||||
return(buf); | return(buf); |
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | 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_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 }; | 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() | // convert name string into a word of up to 4 characters, for the switch() | ||||
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; | |||||
} | } | ||||
else | else | ||||
if(name2 == L_pap) | if(name2 == L_pap) | ||||
case L('m','r'): // Marathi | case L('m','r'): // Marathi | ||||
case L('t','e'): // Telugu | 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.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
if(name2 == L('t','a')) | if(name2 == L('t','a')) | ||||
{ | { | ||||
SetupTranslator(tr,stress_lengths_ta, NULL); | |||||
tr->letter_bits_offset = OFFSET_TAMIL; | tr->letter_bits_offset = OFFSET_TAMIL; | ||||
tr->langopts.numbers = NUM_OMIT_1_THOUSAND ; | 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')) | if(name2 == L('m','r')) | ||||
{ | { | ||||
tr->letter_bits_offset = OFFSET_DEVANAGARI; | tr->letter_bits_offset = OFFSET_DEVANAGARI; | ||||
tr->letter_bits_offset = OFFSET_TELUGU; | tr->letter_bits_offset = OFFSET_TELUGU; | ||||
tr->langopts.numbers = 0x1; | tr->langopts.numbers = 0x1; | ||||
} | } | ||||
tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words | |||||
SetIndicLetters(tr); // call this after setting OFFSET_ | 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; | break; | ||||
char prefix_chars[0x3f + 2]; | char prefix_chars[0x3f + 2]; | ||||
int found=0; | int found=0; | ||||
int end_flags; | 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 first_char; | ||||
int last_char = 0; | int last_char = 0; | ||||
int add_plural_suffix = 0; | int add_plural_suffix = 0; | ||||
if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) | if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) | ||||
{ | { | ||||
// retranslating a 1-character word using a different language, say its name | // 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) | if(option_sayas == SAYAS_KEY) | ||||
if(ok) | if(ok) | ||||
{ | { | ||||
*p2 = '-'; // replace next space by hyphen | *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 | flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word | ||||
if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) | if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) | ||||
{ | { |