diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-12 01:35:16 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-12 01:35:16 +0000 |
commit | 026ca5e13a51d0792155056b7573489e091f9177 (patch) | |
tree | 67b5923d2a53cae41707311eaf221d3c4d818a17 /apps | |
parent | fed49c347ee98500b516acd8e4d8be8e48c872f5 (diff) |
Merge Italian voicemail support (bug #2842)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4217 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rwxr-xr-x | apps/app_voicemail.c | 101 |
1 files changed, 96 insertions, 5 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 88d9af21c..039b74284 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -73,6 +73,7 @@ static int load_config(void); de - German es - Spanish fr - French + it = Italian nl - Dutch pt - Portuguese @@ -96,6 +97,17 @@ nl-om 'at'? Spanish also uses: vm-youhaveno + +Italian requires the following additional soundfile: + +For vm_intro_it: +vm-nuovo new +vm-nuovi new plural +vm-vecchio old +vm-vecchi old plural +Don't use vm-INBOX or vm-Old, because they are the name of the INBOX and Old folderS, spelled among others when you have to change folder. +For the above reasons, vm-INBOX and vm-Old are spelled plural, to make them sound more as folder name than an adjective. + */ struct baseio { @@ -2078,7 +2090,7 @@ static int get_folder(struct ast_channel *chan, int start) d = ast_play_and_wait(chan, "vm-for"); /* "for" */ if (d) return d; - if (!strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "fr") || !strcasecmp(chan->language, "pt")) { /* Spanish, French or Portuguese syntax */ + if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "fr") || !strcasecmp(chan->language, "pt")) { /* Italian, Spanish, French or Portuguese syntax */ d = ast_play_and_wait(chan, "vm-messages"); /* "messages */ if (d) return d; @@ -2413,6 +2425,8 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone); else if (!strcasecmp(chan->language,"nl")) /* DUTCH syntax */ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/nl-om' HM", NULL); + else if (!strcasecmp(chan->language,"it")) /* ITALIAN syntax */ + res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' 'digits/hours' k 'digits/e' M 'digits/minutes'", NULL); else res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL); #if 0 @@ -2670,6 +2684,60 @@ static int vm_intro(struct ast_channel *chan,struct vm_state *vms) return res; } +/* ITALIAN syntax */ +static int vm_intro_it(struct ast_channel *chan,struct vm_state *vms) +{ + /* Introduce messages they have */ + int res; + if (!vms->oldmessages && !vms->newmessages) { + res = ast_play_and_wait(chan, "vm-no"); + if (!res) + res = ast_play_and_wait(chan, "vm-message"); + } else { + res = ast_play_and_wait(chan, "vm-youhave"); + } + if (!res) { + if (vms->newmessages) { + if (!res) { + if ((vms->newmessages == 1)) { + res = ast_play_and_wait(chan, "digits/un"); + if (!res) + res = ast_play_and_wait(chan, "vm-message"); + if (!res) + res = ast_play_and_wait(chan, "vm-nuovo"); + } else { + res = say_and_wait(chan, vms->newmessages, chan->language); + if (!res) + res = ast_play_and_wait(chan, "vm-messages"); + if (!res) + res = ast_play_and_wait(chan, "vm-nuovi"); + } + } + if (vms->oldmessages && !res) + res = ast_play_and_wait(chan, "vm-and"); + } + if (vms->oldmessages) { + if (!res) { + if (vms->oldmessages == 1) { + res = ast_play_and_wait(chan, "digits/un"); + if (!res) + res = ast_play_and_wait(chan, "vm-message"); + if (!res) + res = ast_play_and_wait(chan, "vm-vecchio"); + } else { + res = say_and_wait(chan, vms->oldmessages, chan->language); + if (!res) + res = ast_play_and_wait(chan, "vm-messages"); + if (!res) + res = ast_play_and_wait(chan, "vm-vecchi"); + } + } + } + } + return res; +} + + /* GERMAN syntax */ static int vm_intro_de(struct ast_channel *chan,struct vm_state *vms) { @@ -2998,7 +3066,7 @@ static int vm_instructions(struct ast_channel *chan, struct vm_state *vms, int s if (vms->starting) { if (vms->lastmsg > -1) { res = ast_play_and_wait(chan, "vm-onefor"); - if (!strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "fr") || !strcasecmp(chan->language, "pt")) { /* Spanish, French & Portuguese Syntax */ + if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "fr") || !strcasecmp(chan->language, "pt")) { /* Italian, Spanish, French & Portuguese Syntax */ if (!res) res = ast_play_and_wait(chan, "vm-messages"); if (!res) @@ -3222,6 +3290,25 @@ static int vm_browse_messages(struct ast_channel *chan, struct vm_state *vms, st return cmd; } +/* ITALIAN syntax */ +static int vm_browse_messages_it(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu) +{ + int cmd=0; + + if (vms->lastmsg > -1) { + cmd = play_message(chan, vmu, vms); + } else { + cmd = ast_play_and_wait(chan, "vm-no"); + if (!cmd) + cmd = ast_play_and_wait(chan, "vm-message"); + if (!cmd) { + snprintf(vms->fn, sizeof(vms->fn), "vm-%s", vms->curbox); + cmd = ast_play_and_wait(chan, vms->fn); + } + } + return cmd; +} + /* SPANISH syntax */ static int vm_browse_messages_es(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu) { @@ -3476,6 +3563,8 @@ static int vm_execmain(struct ast_channel *chan, void *data) cmd = vm_intro_de(chan, &vms); } else if (!strcasecmp(chan->language, "es")) { /* SPANISH syntax */ cmd = vm_intro_es(chan, &vms); + } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN syntax */ + cmd = vm_intro_it(chan, &vms); } else if (!strcasecmp(chan->language, "fr")) { /* FRENCH syntax */ cmd = vm_intro_fr(chan, &vms); } else if (!strcasecmp(chan->language, "nl")) { /* DUTCH syntax */ @@ -3499,6 +3588,8 @@ static int vm_execmain(struct ast_channel *chan, void *data) case '5': if (!strcasecmp(chan->language, "es")) { /* SPANISH */ cmd = vm_browse_messages_es(chan, &vms, vmu); + } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN */ + cmd = vm_browse_messages_it(chan, &vms, vmu); } else if (!strcasecmp(chan->language, "pt")) { /* PORTUGUESE */ cmd = vm_browse_messages_pt(chan, &vms, vmu); } else { /* Default to English syntax */ @@ -3519,7 +3610,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) } if (useadsi) adsi_status2(chan, &vms); - if (!strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* SPANISH or PORTUGUESE */ + if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* ITALIAN or SPANISH or PORTUGUESE */ if (!cmd) cmd = ast_play_and_wait(chan, "vm-messages"); if (!cmd) @@ -3688,7 +3779,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) cmd = say_and_wait(chan, vms.curmsg + 1, chan->language); if (!cmd) cmd = ast_play_and_wait(chan, "vm-savedto"); - if (!strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* SPANISH or PORTUGUESE */ + if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* ITALIAN or SPANISH or PORTUGUESE */ if (!cmd) cmd = ast_play_and_wait(chan, "vm-messages"); if (!cmd) { @@ -3716,7 +3807,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) case '*': if (!vms.starting) { cmd = ast_play_and_wait(chan, "vm-onefor"); - if (!strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* Spanish or Portuguese syntax */ + if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt")) { /* Italian or Spanish or Portuguese syntax */ if (!cmd) cmd = ast_play_and_wait(chan, "vm-messages"); if (!cmd) |