Index: conf/lang/fr/vm/sounds.xml =================================================================== --- conf/lang/fr/vm/sounds.xml (revision 16642) +++ conf/lang/fr/vm/sounds.xml (working copy) @@ -1,9 +1,9 @@ - - + + @@ -11,7 +11,8 @@ - + + @@ -19,7 +20,7 @@ - + @@ -27,7 +28,7 @@ - + @@ -35,7 +36,7 @@ - + @@ -43,54 +44,75 @@ - + - + - + + + + - + - + + + + - - - - - - + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - - - + @@ -98,8 +120,15 @@ - + + + + + + + + + @@ -107,25 +136,95 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -133,7 +232,7 @@ - + @@ -141,7 +240,7 @@ - + @@ -149,15 +248,17 @@ - + - + - + + + @@ -165,36 +266,35 @@ - + + + - + - + - + - + + + - - - - - - + @@ -202,35 +302,39 @@ - + - - + + - + - + + - + + - + + - + + @@ -238,9 +342,40 @@ - + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: conf/lang/fr/fr.xml =================================================================== --- conf/lang/fr/fr.xml (revision 16642) +++ conf/lang/fr/fr.xml (working copy) @@ -1,5 +1,5 @@ - + Index: src/mod/say/mod_say_fr/mod_say_fr.c =================================================================== --- src/mod/say/mod_say_fr/mod_say_fr.c (revision 16642) +++ src/mod/say/mod_say_fr/mod_say_fr.c (working copy) @@ -39,8 +39,9 @@ * * Anthony Minessale II * Michael B. Murdock + * Stephane Alnet * - * mod_say_fr.c -- Say for English + * mod_say_fr.c -- Say for French * */ @@ -80,10 +81,17 @@ if (a >= 48 && a <= 57) { say_file("digits/%d.wav", a - 48); } else { - if (type == SST_NAME_SPELLED) { - say_file("ascii/%d.wav", a); - } else if (type == SST_NAME_PHONETIC) { - say_file("phonetic-ascii/%d.wav", a); + switch(type) { + case SST_NAME_SPELLED: + case SST_URL: + case SST_EMAIL_ADDRESS: + say_file("ascii/%d.wav", a); + break; + case SST_NAME_PHONETIC: + say_file("phonetic-ascii/%d.wav", a); + break; + default: + break; } } } @@ -95,16 +103,33 @@ { if (a) { - say_file("digits/%d.wav", a); - say_file("digits/hundred.wav"); + if(a > 1) { + say_file("digits/%d.wav", a); + say_file("digits/hundred.wav"); + } else { + say_file("digits/hundred.wav"); + } } if (b) { if (b > 1) { - say_file("digits/%d0.wav", b); - } else { - say_file("digits/%d%d.wav", b, c); - c = 0; + /* fr-FR */ + if(b == 7 || b == 9) { + if(c == 1) { /* 71 and 91 */ + say_file("digits/%d%d.wav", b, c); + c = 0; + } else { /* 70, 72..79, 90, 92..99 */ + say_file("digits/%d0.wav", b-1); + c = c + 10; + } + } else { /* 20..69, 80..89 */ + say_file("digits/%d0.wav", b); + if(c == 1 && b != 8) { /* 21, 31, 41, 51, 61 */ + say_file("currency/and.wav"); + } + } + } else { /* 10..19 */ + c = c + 10; } } @@ -310,38 +335,26 @@ if (hours) { say_num(hours, SSM_PRONOUNCED); - if (hours == 1) { - say_file("time/hour.wav"); - } else { - say_file("time/hours.wav"); - } + say_file("time/hour.wav"); } else { say_file("digits/0.wav"); - say_file("time/hours.wav"); + say_file("time/hour.wav"); } if (minutes) { say_num(minutes, SSM_PRONOUNCED); - if (minutes == 1) { - say_file("time/minute.wav"); - } else { - say_file("time/minutes.wav"); - } + say_file("time/minute.wav"); } else { say_file("digits/0.wav"); - say_file("time/minutes.wav"); + say_file("time/minute.wav"); } if (seconds) { say_num(seconds, SSM_PRONOUNCED); - if (seconds == 1) { - say_file("time/second.wav"); - } else { - say_file("time/seconds.wav"); - } + say_file("time/second.wav"); } else { say_file("digits/0.wav"); - say_file("time/seconds.wav"); + say_file("time/second.wav"); } return SWITCH_STATUS_SUCCESS; @@ -370,36 +383,25 @@ if (say_date) { say_file("time/day-%d.wav", tm.tm_wday); + if(tm.tm_mday > 1) { + say_num(tm.tm_mday, SSM_PRONOUNCED); + } else { + say_num(tm.tm_mday, SSM_COUNTED); + } say_file("time/mon-%d.wav", tm.tm_mon); - say_num(tm.tm_mday, SSM_COUNTED); say_num(tm.tm_year + 1900, SSM_PRONOUNCED); } if (say_time) { - int32_t hour = tm.tm_hour, pm = 0; + int32_t hour = tm.tm_hour; - if (hour > 12) { - hour -= 12; - pm = 1; - } else if (hour == 12) { - pm = 1; - } else if (hour == 0) { - hour = 12; - pm = 0; - } - say_num(hour, SSM_PRONOUNCED); - - if (tm.tm_min > 9) { + say_file("time/hour.wav"); + if(tm.tm_min) { + say_file("currency/and.wav"); say_num(tm.tm_min, SSM_PRONOUNCED); - } else if (tm.tm_min) { - say_file("time/oh.wav"); - say_num(tm.tm_min, SSM_PRONOUNCED); - } else { - say_file("time/oclock.wav"); + say_file("time/minute.wav"); } - - say_file("time/%s.wav", pm ? "p-m" : "a-m"); } return SWITCH_STATUS_SUCCESS; @@ -434,17 +436,13 @@ /* If negative say "negative" */ if (sbuf[0] == '-') { - say_file("currency/negative.wav"); + say_file("currency/minus.wav"); dollars++; } /* Say dollar amount */ fr_say_general_count(session, dollars, type, method, args); - if (atoi(dollars) == 1) { - say_file("currency/dollar.wav"); - } else { - say_file("currency/dollars.wav"); - } + say_file("currency/euro.wav"); /* Say "and" */ say_file("currency/and.wav"); @@ -452,14 +450,10 @@ /* Say cents */ if (cents) { fr_say_general_count(session, cents, type, method, args); - if (atoi(cents) == 1) { - say_file("currency/cent.wav"); - } else { - say_file("currency/cents.wav"); - } + say_file("currency/cent.wav"); } else { say_file("digits/0.wav"); - say_file("currency/cents.wav"); + say_file("currency/cent.wav"); } return SWITCH_STATUS_SUCCESS; @@ -495,6 +489,16 @@ case SST_CURRENCY: say_cb = fr_say_money; break; + case SST_TELEPHONE_NUMBER: + case SST_TELEPHONE_EXTENSION: + case SST_URL: + case SST_EMAIL_ADDRESS: + case SST_POSTAL_ADDRESS: + case SST_ACCOUNT_NUMBER: + case SST_SHORT_DATE_TIME: + say_cb = fr_spell; + break; + default: switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown Say type=[%d]\n", type); break;