--- app_voicemail.c 2007-08-07 22:43:57.000000000 +0300 +++ app_voicemail_patched.c 2007-08-15 11:53:50.000000000 +0300 @@ -235,6 +235,7 @@ \arg \b gr - Greek \arg \b no - Norwegian \arg \b se - Swedish + \arg \b ua - Ukrainian German requires the following additional soundfile: \arg \b 1F einE (feminine) @@ -279,6 +280,11 @@ Spanish also uses: \arg \b vm-youhaveno +Ukrainian requires the following additional soundfile: +\arg \b vm-nove 'nove' +\arg \b vm-stare 'stare' +\arg \b digits/ua/1e 'odne' + Italian requires the following additional soundfile: For vm_intro_it: @@ -4835,6 +4841,19 @@ } } +static int vm_play_folder_name_ua(struct ast_channel *chan, char *mbox) +{ + int cmd; + + if (!strcasecmp(mbox, "vm-Family") || !strcasecmp(mbox, "vm-Friends") || !strcasecmp(mbox, "vm-Work")){ + cmd = ast_play_and_wait(chan, "vm-messages"); + return cmd ? cmd : ast_play_and_wait(chan, mbox); + } else { + cmd = ast_play_and_wait(chan, mbox); + return cmd ? cmd : ast_play_and_wait(chan, "vm-messages"); + } +} + static int vm_play_folder_name(struct ast_channel *chan, char *mbox) { int cmd; @@ -4846,6 +4865,8 @@ return vm_play_folder_name_gr(chan, mbox); } else if (!strcasecmp(chan->language, "pl")){ return vm_play_folder_name_pl(chan, mbox); + } else if (!strcasecmp(chan->language, "ua")){ /* Ukrainian syntax */ + return vm_play_folder_name_ua(chan, mbox); } else { /* Default English */ cmd = ast_play_and_wait(chan, mbox); return cmd ? cmd : ast_play_and_wait(chan, "vm-messages"); /* "messages */ @@ -5541,7 +5562,7 @@ if (!res && vms->oldmessages) { lastnum = get_lastdigits(vms->oldmessages); - dcnum = vms->newmessages - lastnum; + dcnum = vms->oldmessages - lastnum; if (dcnum) res = say_and_wait(chan, dcnum, chan->language); if (!res && lastnum) { @@ -5579,6 +5600,78 @@ return res; } +/* UKRAINIAN syntax */ +/* in ukrainian the syntax is different so we need the following files + * -------------------------------------------------------- + * /digits/ua/1e 'odne' + * vm-nove 'nove' + * vm-stare 'stare' + */ + +static int vm_intro_ua(struct ast_channel *chan,struct vm_state *vms) +{ + int res; + int lastnum = 0; + int dcnum; + + res = ast_play_and_wait(chan, "vm-youhave"); + if (!res && vms->newmessages) { + lastnum = get_lastdigits(vms->newmessages); + dcnum = vms->newmessages - lastnum; + if (dcnum) + res = say_and_wait(chan, dcnum, chan->language); + if (!res && lastnum) { + if (lastnum == 1) + res = ast_play_and_wait(chan, "digits/ua/1e"); + else + res = say_and_wait(chan, lastnum, chan->language); + } + + if (!res) + res = ast_play_and_wait(chan, (lastnum == 1) ? "vm-nove" : "vm-INBOX"); + + if (!res && vms->oldmessages) + res = ast_play_and_wait(chan, "vm-and"); + } + + if (!res && vms->oldmessages) { + lastnum = get_lastdigits(vms->oldmessages); + dcnum = vms->oldmessages - lastnum; + if (dcnum) + res = say_and_wait(chan, dcnum, chan->language); + if (!res && lastnum) { + if (lastnum == 1) + res = ast_play_and_wait(chan, "digits/ua/1e"); + else + res = say_and_wait(chan, lastnum, chan->language); + } + + if (!res) + res = ast_play_and_wait(chan, (lastnum == 1) ? "vm-stare" : "vm-Old"); + } + + if (!res && !vms->newmessages && !vms->oldmessages) { + lastnum = 0; + res = ast_play_and_wait(chan, "vm-no"); + } + + if (!res) { + switch (lastnum) { + case 1: + case 2: + case 3: + case 4: + res = ast_play_and_wait(chan, "vm-message"); + break; + default: + res = ast_play_and_wait(chan, "vm-messages"); + break; + } + } + + return res; +} + static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms) { @@ -5618,6 +5711,8 @@ return vm_intro_no(chan, vms); } else if (!strcasecmp(chan->language, "ru")) { /* RUSSIAN syntax */ return vm_intro_ru(chan, vms); + } else if (!strcasecmp(chan->language, "ua")) { /* UKRAINIAN syntax */ + return vm_intro_ua(chan, vms); } else { /* Default to ENGLISH */ return vm_intro_en(chan, vms); }