diff --git a/dictsource/de_rules b/dictsource/de_rules index 4c6e81a9..ae16129d 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -837,7 +837,6 @@ sst (@ sSt sch S - sch (en_ sC _) sh S sh (K S sou (nd saU @@ -863,6 +862,14 @@ _) safe _^_EN &) schaft (_S6 Saft + + ä) schen sC@n // but not wäschen + fe) schen sC@n + ie) schen sC@n + h) schen sC@n + ö) schen sC@n // but not löschen + äu) schen sC@n // but not täuschen + schein (lich S'aIn _) schul (@P5 S'u:l _) schul (d S'Ul diff --git a/dictsource/fr_list b/dictsource/fr_list index b2b1074d..4a637018 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2009-02-01 Michel Such +// Updated 2009-03-12 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -296,23 +296,23 @@ pr professeur $text *dot $capital // articles -le $u+ $nounf -le $u+ $verb $verbextend -la $u+ $nounf -la $u+ $verb $verbextend -les lez2 $u+ $nounf -les lez2 $u+ $verb $verbextend -un $u+ $nounf -une $u+ $nounf +le $nounf $u+ +le $verbextend $u +la $nounf $u+ +la $verbextend $u +les lez2 $nounf $u= +les lez2 $verbextend $u +un $nounf $u+ +une $nounf $u+ // conjonctions mais $u+ -ou u $u $brk +ou $u $brk eh $u $brk -et e $u $brk +et $u $brk ni $u $brk -car $u+ $brk +car $u $brk car $noun cependant $brk néanmoins $brk @@ -328,14 +328,19 @@ aussi $u+ certes $u+ dont dO~t2 $u -lorsque $u -puisque $u +lorsque lO2rsk@ $u+ +puisque pw^isk@ $u+ presque $u+ +que $u+ (parce que) parsk@ $u+ -que $u+ -qui $u+ $verbf +(parce qu'il) parskil $u+ +(parce qu'ils) parskilz2 $u+ +(parce qu'elle) parskE2l $u+ +(parce qu'elles) parskE2lz2 $u+ +(parce qu'on) parskO~n2 $u+ +tant tA~t2 $u+ +qui $verbf $u+ quoique $u -si $u quant kA~t2 $u // pronouns @@ -399,7 +404,7 @@ leurs $u $verb $verbextend (les leurs) le||lWr $u+ $verbf // prepositions -de $u +de $u $nounf du $u $nounf des dez2 $u $nounf @@ -421,7 +426,6 @@ en $u+ $verb $verbextend par $u+ parmi $u+ pour $u+ -tant tA~t2 $u+ autant $u+ tandis $u+ dès $u @@ -441,8 +445,8 @@ très $u // negative ne $u $verbf -pas $u+ -pas $noun +pas p'a2z2 +pas pa $noun plus $u+ guère $u+ jamais $u+ @@ -452,7 +456,7 @@ oui $u+ // questions quand kA~t2 $u+ quoi $u+ -où $brk $u+ +où $u+ comme kO2m $u+ comment $u+ pourquoi $u+ @@ -572,6 +576,7 @@ bus bys bus by $verb campus kA~pys cancer kA~sEr +catcher catcheur $text (chef d'oeuvre) chédeuvre $text (chef d'oeuvres) chédeuvres $text choeur kWr @@ -591,7 +596,7 @@ laser lazEr malus malys mapper _^_en mars mars -mieux mj'Y $u+ +mieux mjY $u+ mrs _^_en ours urs parangon parA~gO~ @@ -787,5 +792,5 @@ wallis wAlis futuna futuna zimbabwe zimbabwe -pest $1 + diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 5db3e5d2..cfa02224 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2009-02-19 Michel Such +// Updated: 2009-03-12 Michel Such // // Letter classes: @@ -257,6 +257,7 @@ _) ç' (P2v s em (p A~ en (_ A~n2 // en en (hA A~n // enharmonique +_C) en (j E~ // benjamin _) en (A A~n // enivrer C) en (d_ A~ // comprend dépend @@ -825,6 +826,7 @@ _) half _^_en o (rC O2 o (rX O2 _) os (_ Os + o (sC O2 s_) os (_ o x_) os (_ o C) o (se_ o2 @@ -954,7 +956,7 @@ C) oing (_ _^_en // going se) pt (_ t // sept se) pt (iè t // septième - _) puisqu' (P7 pyisk + _) puisqu' (P7 pw^isk // group p: English section pad (_ _^_en @@ -967,6 +969,7 @@ C) oing (_ _^_en // going q k // coq _) qu' (AP3 k _) qua (d kwA // quadrature + _) qua (drill ka // quadriller _a) qua kwA // aquarium _a) qu (if ku // aquifère _A) qui (dist kw^i // équidistant diff --git a/dictsource/it_rules b/dictsource/it_rules index d1f304c8..12ee599e 100644 --- a/dictsource/it_rules +++ b/dictsource/it_rules @@ -239,6 +239,7 @@ s (t s s (x s sc (Y S + sci (L01 S sch (Y sk sh (K S // foreign words K) sh S // foreign words diff --git a/dictsource/pt_list b/dictsource/pt_list index f5ced60c..70fc1ef7 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -175,11 +175,11 @@ _1C0 s'eIN ?2_0C s'eINtUs# _1C s'eINtu ?1_2C duz'eINtus# -?2_2C duz'eINtUs# +?2_2C duz'eINtUz ?1_3C tryz'eNtus# -?2_3C tRez'eNtUs# +?2_3C tRez'eNtUz ?1_5C kin^'eINtus# -?2_5C kin^'eINtUs# +?2_5C kin^'eINtUz ?1_0M1 m'il_ ?2_0M1 m'iU_ ?1_1M1 m'il_ @@ -194,7 +194,7 @@ _1M3 'u~mbilj'&U~ ?1_0M4 trilj'o~js# ?2_0M4 trilj'o~jz _1M4 'u~ntrilj'&U~ -_0and _i +_0and i _dpt _v'irgul& // _0Z2 seNt'Ezim& // 100ths // _0Z3 mil'Ezim& // 1000ths @@ -290,11 +290,11 @@ los $u ?2 este $u+ $nounf 'estSi // this ?2 estes $u+ $nounf 'estSis // these -?2 esta 'Est& $brk $u+ $nounf +?2 esta 'Est& $u+ $nounf ?2 neste $u+ $nounf n'estSi //in this ?2 nestes $u+ n'estSis //in these ?2 esse $u+ $nounf 'esi // that -essa 'Es& $brk $u+ +essa 'Es& $u+ desse d'esy $u+ nesse n'esy $u+ aquele &k'ely $u+ $nounf // that @@ -302,7 +302,7 @@ aquela $u+ daquele d&k'ely $u+ $nounf ?1 que ky $u -?2 que ke $u $pause +?2 que ke $u // possessive adjectives meu $u+ $nounf @@ -338,93 +338,93 @@ duma $u duns $u dumas $u -em $u $brk // in,on,at -no nu $u $brk $nounf -na $u $brk -?2 nos nus# $u $brk -nas $u $brk -num $u $brk -numa $u $brk -nuns $u $brk -numas $u $brk +em $u // in,on,at +no nu $u $nounf +na $u +?2 nos nus# $u +nas $u +num $u +numa $u +nuns $u +numas $u -por $u $brk // by,for,through -pelo $u $brk -?2 pela $u $brk p'el& -pelos $u $brk -?2 pelas $u $brk p'el&s +por $u // by,for,through +pelo $u +?2 pela $u p'el& +pelos $u +?2 pelas $u p'el&s -ao $u $brk -à ,a: $brk -aos $u $brk -às ,a:s $brk +ao $u +à ,a: +aos $u +às ,a:s -para $u $brk // for,to -pro $u $brk $nounf -pra $u $brk -pros $u $brk -pras $u $brk -prò $u $brk -prà $u $brk -pròs $u $brk -pràs $u $brk +para $u // for,to +pro $u $nounf +pra $u +pros $u +pras $u +prò $u +prà $u +pròs $u +pràs $u -com $u $brk // with -?2 sem $pause // without -?2 até $u $pause // until -?2 desde $u $pause // from,since -?2 entre $pause // between,among -?2 por $u $pause // by,for,through -?2 sobre s'obRy $pause // on,above,about -?2 sob $pause // under,below -?2 debaixo $pause // under,below +com $u // with +?2 sem // without +?2 até $u // until +?2 desde $u // from,since +?2 entre // between,among +?2 por $u // by,for,through +?2 sobre s'obRy // on,above,about +?2 sob // under,below +?2 debaixo // under,below -?2 durante $pause +?2 durante // conjunctions ?1 e i $u // and -?2 e i $u $pause // and -se $u $brk // if +?2 e i $u // and +se $u // if -?2 mas $u $pause // but -?2 porém $pause // however -?2 todavia $pause // yet -?2 contudo $pause // nevertheless +?2 mas $u // but +?2 porém // however +?2 todavia // yet +?2 contudo // nevertheless -?2 ou $u $pause // or -?2 quer $pause // whether +?2 ou $u // or +?2 quer // whether -?2 assim $pause // thus -?2 portanto $pause // therefore +?2 assim // thus +?2 portanto // therefore -?2 porque $pause // because -?2 pois $pause // because -?2 como $u $pause // as +?2 porque // because +?2 pois // because +?2 como $u // as -?2 embora $pause // although -?2 apesar $pause // despite +?2 embora // although +?2 apesar // despite -?2 caso $pause // if -?2 (desde que) d'esdZiki/ $pause // provided that -?2 (exceto se) es'Etusi/ $pause // unless -?2 (salvo se) s'alvusi/ $pause // unless +?2 caso // if +?2 (desde que) d'esdZiki/ // provided that +?2 (exceto se) es'Etusi/ // unless +?2 (salvo se) s'alvusi/ // unless -?2 (para que) p,a*&ki/ $pause // so that +?2 (para que) p,a*&ki/ // so that -?2 quando $pause // when -?2 onde $u $pause // where -?2 apenas $pause // as soon as -?2 mal $pause // as soon as, hardly -?2 (logo que) l'Oguki/ $pause // as soon as -?2 (antes que) '&~NtSiski/ $pause // before -?2 (depois que) dep'OIski/ $pause // after -?2 (sempre que) s'eNpriki/ $pause // whenever -?2 enquanto $pause // while +?2 quando // when +?2 onde $u // where +?2 apenas // as soon as +?2 mal // as soon as, hardly +?2 (logo que) l'Oguki/ // as soon as +?2 (antes que) '&~NtSiski/ // before +?2 (depois que) dep'OIski/ // after +?2 (sempre que) s'eNpriki/ // whenever +?2 enquanto // while // negative diff --git a/phsource/compile_report b/phsource/compile_report index 30f1bc08..04b98f34 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -71,25 +71,31 @@ b/b_ [b] base [b] hi [b] bn b/b@ [b] base + [b] fr [b] hi [b] bn b/b@2 [b] base [b] hi [b] bn b/ba [b] base + [b] fr [b] hi [b] bn b/be [b] base + [b] fr [b] hi [b] bn b/bi [b] base + [b] fr [b] hi [b;] ro [b] bn b/bo [b] base + [b] fr [b] hi [b] bn b/bu [b] base + [b] fr [b] hi [b] bn b/xb [b] base diff --git a/phsource/ph_french b/phsource/ph_french index 7915dc04..04e0a340 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -10,7 +10,7 @@ endphoneme phoneme @ vowel starttype (@) endtype (@) - length 170 + length 180 formants vowel/@_hgh before l/ DFT+l/l_@ before (r) DFT+r/xr @@ -19,7 +19,7 @@ endphoneme phoneme @2 vowel starttype (@) endtype (@) - length 150 + length 160 formants vowel/@_fr before (r) DFT+r3/r_@ endphoneme @@ -27,7 +27,7 @@ endphoneme phoneme a vowel starttype (a) endtype (a) - length 170 + length 180 formants vowel/a_6 after l l/la-15 before l/ DFT+l/l_a @@ -38,7 +38,7 @@ endphoneme phoneme a2 vowel starttype (a) endtype (a) - length 150 + length 165 formants vowel/a_6 after l l/la-15 before l/ DFT+l/l_a @@ -49,7 +49,7 @@ endphoneme phoneme e vowel starttype (e) endtype (e) - length 172 + length 175 formants vowel/e after l l/le-15 before l/ DFT-20+l/xl @@ -80,7 +80,7 @@ endphoneme phoneme i vowel starttype (i) endtype (i) - length 150 + length 160 formants vowel/i_3 linkout ; after l l/li-15 @@ -103,7 +103,7 @@ endphoneme phoneme o vowel starttype (o) endtype (o) - length 170 + length 180 formants vowel/o_3 after l l/lo-10 before (r) DFT+r/xr @@ -113,7 +113,7 @@ endphoneme phoneme o2 vowel starttype (o) endtype (o) - length 170 + length 180 formants vowel/o_2 after l l/lo-10 before l/ DFT+l/l_o @@ -144,7 +144,7 @@ endphoneme phoneme u vowel starttype (u) endtype (u) - length 170 + length 175 formants vowel/u_3 after l l/lu-20 before l/ DFT-20+l/l_u @@ -155,7 +155,7 @@ endphoneme phoneme u: // slitely longer than u vowel starttype (u) endtype (u) - length 220 + length 240 formants vowel/u_3 after l l/lu-20 before l/ DFT-20+l/l_u @@ -166,7 +166,7 @@ endphoneme phoneme y vowel starttype (u) endtype (u) - length 170 + length 180 formants vowel/y_2 after l l/lu-20 before l/ DFT-30+l/l_y @@ -177,7 +177,7 @@ endphoneme phoneme Y vowel starttype (@) endtype (@) - length 170 + length 180 formants vowel/y# after l l/l@-20 before l/ DFT-20+l/l_@ @@ -303,10 +303,16 @@ endphoneme phoneme b vcd blb stop - vowelout f1=0 f2=1000 -500 -300 f3=-300 80 - formants b/b+x/b%70 + vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk + formants b/b+x/b%80 before _ b/b_+x/b_ + before (a) b/ba+x/b%30 + before (@) b/b@+x/b%50 + before (e) b/be+x/b%50 + before (i) b/bi+x/b%50 before l/ b/b_+x/b_ + before (o) b/bo+x/b%50 + before (u) b/bu+x/b%70 before R b/b_+x/b_ after _ NULL after @ b/xb%50 diff --git a/src/dictionary.cpp b/src/dictionary.cpp index bcde4e75..0baeb246 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1111,7 +1111,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2)) { - // option: don't stress monosyllables except at end-of-clause (lang=fr) + // option: don't stress monosyllables except at end-of-clause vowel_stress[1] = 1; dictionary_flags |= FLAG_STRESS_END2; } diff --git a/src/extras.cpp b/src/extras.cpp index 4330fe57..484b998b 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -963,7 +963,7 @@ void ConvertToUtf8() int ix; FILE *f_in; FILE *f_out; - char buf[80]; + char buf[200]; wxString fname = wxFileSelector(_T("Convert file to UTF8"),wxString(path_home,wxConvLocal), _T(""),_T(""),_T("*"),wxOPEN); diff --git a/src/numbers.cpp b/src/numbers.cpp index a1459960..37719193 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -1033,7 +1033,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) if(tr->langopts.numbers & 0x200) { // remove vowel from the end of tens if units starts with a vowel (LANG=Italian) - if((ix = strlen(ph_tens)-1) >= 0) + if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) { if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 525cf8e3..d4a7e830 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.40.10 12.Mar.09"; +const char *version_string = "1.40.11 13.Mar.09"; const int version_phdata = 0x014000; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 0e94e2a1..5feefe4c 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -380,7 +380,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels - tr->langopts.numbers = 0x309; + tr->langopts.numbers = 0x109; tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands if(name2 == L_grc) @@ -483,7 +483,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->langopts.stress_rule = 3; // stress on final syllable - tr->langopts.stress_flags = 0x0024 + 0x1; // don't use secondary stress, monosyllables are unstressed + tr->langopts.stress_flags = 0x0024; // don't use secondary stress tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL; @@ -807,7 +807,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = 3; // stress on final syllable tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000; - tr->langopts.numbers = 0x269 + 0x4000 + NUM_ROMAN; + tr->langopts.numbers = 0x069 + 0x4000 + NUM_ROMAN; SetLetterVowel(tr,'y'); ResetLetterBits(tr,0x2); SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y diff --git a/src/translate.cpp b/src/translate.cpp index 55a04212..0f8d42b3 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1670,21 +1670,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa } else { - if(ph_code == phonPAUSE_CLAUSE) - { - int j; - for(j = n_ph_list2-1; j > 0; j--) - { - if(ph_list2[j].synthflags & SFLAG_PROMOTE_STRESS) - { - // lang=fr: stress monosyllables before conjunctions 'et' 'qui' etc - ph_list2[j].stress = 4; - } - if(ph_list2[j].sourceix != 0) - break; - } - } - if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING]) { if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) ||