aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-12-03 21:03:30 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-12-03 21:03:30 +0000
commit9b0e7da45856ff96dcf479189ff6a07b09552a2d (patch)
tree158026732df4fb2d8073fb03a276504525fdea67
parent264e52dada64a3b6ad6bcff245d0af1b33044779 (diff)
Merged revisions 232854 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r232854 | tilghman | 2009-12-03 14:47:07 -0600 (Thu, 03 Dec 2009) | 15 lines Merged revisions 232820 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r232820 | tilghman | 2009-12-03 14:10:19 -0600 (Thu, 03 Dec 2009) | 8 lines Deprecate "cz" in favor of "cs". Also, change the use of language codes so that language registers as a prefix, rather than an exact match. (closes issue #16272) Reported by: patrol-cz Patches: 20091203__issue16272.diff.txt uploaded by tilghman (license 14) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@232864 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--apps/app_voicemail.c432
1 files changed, 279 insertions, 153 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 612358703..d33275493 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -5921,30 +5921,29 @@ leave_vm_out:
/* Can't think of how other diffs might be helpful, but I'm sure somebody will think of something. */
#endif
- if (the_zone) {
- 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,"pl")) /* POLISH syntax */
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q HM", NULL);
- else if (!strcasecmp(chan->language, "se")) /* SWEDISH syntax */
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' dB 'digits/at' k 'and' M", NULL);
- else if (!strcasecmp(chan->language, "no")) /* NORWEGIAN syntax */
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
- else if (!strcasecmp(chan->language, "de")) /* GERMAN syntax */
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
- 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 if (!strcasecmp(chan->language, "gr"))
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q H 'digits/kai' M ", NULL);
- else if (!strcasecmp(chan->language, "pt_BR"))
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Ad 'digits/pt-de' B 'digits/pt-de' Y 'digits/pt-as' HM ", NULL);
- else if (!strncasecmp(chan->language, "zh", 2)) /* CHINESE (Taiwan) syntax */
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "qR 'vm-received'", NULL);
- else {
- res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL);
- }
+ if (the_zone) {
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone);
+ } else if (!strncasecmp(chan->language, "de", 2)) { /* GERMAN syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
+ } else if (!strncasecmp(chan->language, "gr", 2)) { /* GREEK syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q H 'digits/kai' M ", NULL);
+ } else if (!strncasecmp(chan->language, "it", 2)) { /* 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 if (!strncasecmp(chan->language, "nl", 2)) { /* 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 (!strncasecmp(chan->language, "no", 2)) { /* NORWEGIAN syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q 'digits/at' HM", NULL);
+ } else if (!strncasecmp(chan->language, "pl", 2)) { /* POLISH syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Q HM", NULL);
+ } else if (!strncasecmp(chan->language, "pt_BR", 5)) { /* Brazillian PORTUGUESE syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' Ad 'digits/pt-de' B 'digits/pt-de' Y 'digits/pt-as' HM ", NULL);
+ } else if (!strncasecmp(chan->language, "se", 2)) { /* SWEDISH syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' dB 'digits/at' k 'and' M", NULL);
+ } else if (!strncasecmp(chan->language, "zh", 2)) { /* CHINESE (Taiwan) syntax */
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "qR 'vm-received'", NULL);
+ } else {
+ res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL);
+ }
#if 0
pbx_builtin_setvar_helper(chan, "DIFF_DAY", NULL);
#endif
@@ -6036,7 +6035,7 @@ leave_vm_out:
res = wait_file2(chan, vms, "vm-duration");
/* POLISH syntax */
- if (!strcasecmp(chan->language, "pl")) {
+ if (!strncasecmp(chan->language, "pl", 2)) {
div_t num = div(durationm, 10);
if (durationm == 1) {
@@ -6067,109 +6066,134 @@ leave_vm_out:
return res;
}
- static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
- {
- int res = 0;
- char filename[256], *cid;
- const char *origtime, *context, *category, *duration;
- struct ast_config *msg_cfg;
- struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };
+static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
+{
+ int res = 0;
+ char filename[256], *cid;
+ const char *origtime, *context, *category, *duration;
+ struct ast_config *msg_cfg;
+ struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };
- vms->starting = 0;
- make_file(vms->fn, sizeof(vms->fn), vms->curdir, vms->curmsg);
- adsi_message(chan, vms);
- if (!vms->curmsg)
- res = wait_file2(chan, vms, "vm-first"); /* "First" */
- else if (vms->curmsg == vms->lastmsg)
- res = wait_file2(chan, vms, "vm-last"); /* "last" */
- if (!res) {
- /* POLISH syntax */
- if (!strcasecmp(chan->language, "pl")) {
- if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
- int ten, one;
- char nextmsg[256];
- ten = (vms->curmsg + 1) / 10;
- one = (vms->curmsg + 1) % 10;
-
- if (vms->curmsg < 20) {
- snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", vms->curmsg + 1);
- res = wait_file2(chan, vms, nextmsg);
- } else {
- snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", ten * 10);
- res = wait_file2(chan, vms, nextmsg);
- if (one > 0) {
- if (!res) {
- snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", one);
- res = wait_file2(chan, vms, nextmsg);
- }
- }
- }
- }
- if (!res)
- res = wait_file2(chan, vms, "vm-message");
+ vms->starting = 0;
+ make_file(vms->fn, sizeof(vms->fn), vms->curdir, vms->curmsg);
+ adsi_message(chan, vms);
+ if (!vms->curmsg)
+ res = wait_file2(chan, vms, "vm-first"); /* "First" */
+ else if (vms->curmsg == vms->lastmsg)
+ res = wait_file2(chan, vms, "vm-last"); /* "last" */
+
+ snprintf(filename, sizeof(filename), "%s.txt", vms->fn);
+ RETRIEVE(vms->curdir, vms->curmsg, vmu->mailbox, vmu->context);
+ msg_cfg = ast_config_load(filename, config_flags);
+ if (!msg_cfg) {
+ ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename);
+ return 0;
+ }
+
+ /* POLISH syntax */
+ if (!strncasecmp(chan->language, "pl", 2)) {
+ if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
+ int ten, one;
+ char nextmsg[256];
+ ten = (vms->curmsg + 1) / 10;
+ one = (vms->curmsg + 1) % 10;
+
+ if (vms->curmsg < 20) {
+ snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", vms->curmsg + 1);
+ res = wait_file2(chan, vms, nextmsg);
} else {
- if (!strcasecmp(chan->language, "se")) /* SWEDISH syntax */
- res = wait_file2(chan, vms, "vm-meddelandet"); /* "message" */
- else /* DEFAULT syntax */ {
- res = wait_file2(chan, vms, "vm-message");
- }
- if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
+ snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", ten * 10);
+ res = wait_file2(chan, vms, nextmsg);
+ if (one > 0) {
if (!res) {
- res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, NULL);
+ snprintf(nextmsg, sizeof(nextmsg), "digits/n-%d", one);
+ res = wait_file2(chan, vms, nextmsg);
}
}
}
}
-
- /* Retrieve info from VM attribute file */
- make_file(vms->fn2, sizeof(vms->fn2), vms->curdir, vms->curmsg);
- snprintf(filename, sizeof(filename), "%s.txt", vms->fn2);
- RETRIEVE(vms->curdir, vms->curmsg, vmu->mailbox, vmu->context);
- msg_cfg = ast_config_load(filename, config_flags);
- if (!msg_cfg) {
- ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename);
- return 0;
+ if (!res)
+ res = wait_file2(chan, vms, "vm-message");
+ /* HEBREW syntax */
+ } else if (!strncasecmp(chan->language, "he", 2)) {
+ if (!vms->curmsg) {
+ res = wait_file2(chan, vms, "vm-message");
+ res = wait_file2(chan, vms, "vm-first");
+ } else if (vms->curmsg == vms->lastmsg) {
+ res = wait_file2(chan, vms, "vm-message");
+ res = wait_file2(chan, vms, "vm-last");
+ } else {
+ res = wait_file2(chan, vms, "vm-message");
+ res = wait_file2(chan, vms, "vm-number");
+ res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, "f");
}
-
- if (!(origtime = ast_variable_retrieve(msg_cfg, "message", "origtime"))) {
- ast_log(LOG_WARNING, "No origtime?!\n");
- DISPOSE(vms->curdir, vms->curmsg);
- ast_config_destroy(msg_cfg);
- return 0;
+ } else {
+ if (!strncasecmp(chan->language, "se", 2)) { /* SWEDISH syntax */
+ res = wait_file2(chan, vms, "vm-meddelandet"); /* "message" */
+ } else { /* DEFAULT syntax */
+ res = wait_file2(chan, vms, "vm-message");
+ }
+ if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
+ if (!res) {
+ res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, NULL);
+ }
+ if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
+ if (!res) {
+ res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, NULL);
+ }
+ }
}
+ }
- cid = ast_strdupa(ast_variable_retrieve(msg_cfg, "message", "callerid"));
- duration = ast_variable_retrieve(msg_cfg, "message", "duration");
- category = ast_variable_retrieve(msg_cfg, "message", "category");
+ /* Retrieve info from VM attribute file */
+ make_file(vms->fn2, sizeof(vms->fn2), vms->curdir, vms->curmsg);
+ snprintf(filename, sizeof(filename), "%s.txt", vms->fn2);
+ RETRIEVE(vms->curdir, vms->curmsg, vmu->mailbox, vmu->context);
+ msg_cfg = ast_config_load(filename, config_flags);
+ if (!msg_cfg) {
+ ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename);
+ return 0;
+ }
- context = ast_variable_retrieve(msg_cfg, "message", "context");
- if (!strncasecmp("macro", context, 5)) /* Macro names in contexts are useless for our needs */
- context = ast_variable_retrieve(msg_cfg, "message", "macrocontext");
- if (!res) {
- res = play_message_category(chan, category);
- }
- if ((!res) && (ast_test_flag(vmu, VM_ENVELOPE)))
- res = play_message_datetime(chan, vmu, origtime, filename);
- if ((!res) && (ast_test_flag(vmu, VM_SAYCID)))
- res = play_message_callerid(chan, vms, cid, context, 0);
- if ((!res) && (ast_test_flag(vmu, VM_SAYDURATION)))
- res = play_message_duration(chan, vms, duration, vmu->saydurationm);
- /* Allow pressing '1' to skip envelope / callerid */
- if (res == '1')
- res = 0;
+ if (!(origtime = ast_variable_retrieve(msg_cfg, "message", "origtime"))) {
+ ast_log(LOG_WARNING, "No origtime?!\n");
+ DISPOSE(vms->curdir, vms->curmsg);
ast_config_destroy(msg_cfg);
+ return 0;
+ }
- if (!res) {
- make_file(vms->fn, sizeof(vms->fn), vms->curdir, vms->curmsg);
- vms->heard[vms->curmsg] = 1;
- if ((res = wait_file(chan, vms, vms->fn)) < 0) {
- ast_log(LOG_WARNING, "Playback of message %s failed\n", vms->fn);
- res = 0;
- }
+ cid = ast_strdupa(ast_variable_retrieve(msg_cfg, "message", "callerid"));
+ duration = ast_variable_retrieve(msg_cfg, "message", "duration");
+ category = ast_variable_retrieve(msg_cfg, "message", "category");
+
+ context = ast_variable_retrieve(msg_cfg, "message", "context");
+ if (!strncasecmp("macro", context, 5)) /* Macro names in contexts are useless for our needs */
+ context = ast_variable_retrieve(msg_cfg, "message", "macrocontext");
+ if (!res) {
+ res = play_message_category(chan, category);
+ }
+ if ((!res) && (ast_test_flag(vmu, VM_ENVELOPE)))
+ res = play_message_datetime(chan, vmu, origtime, filename);
+ if ((!res) && (ast_test_flag(vmu, VM_SAYCID)))
+ res = play_message_callerid(chan, vms, cid, context, 0);
+ if ((!res) && (ast_test_flag(vmu, VM_SAYDURATION)))
+ res = play_message_duration(chan, vms, duration, vmu->saydurationm);
+ /* Allow pressing '1' to skip envelope / callerid */
+ if (res == '1')
+ res = 0;
+ ast_config_destroy(msg_cfg);
+
+ if (!res) {
+ make_file(vms->fn, sizeof(vms->fn), vms->curdir, vms->curmsg);
+ vms->heard[vms->curmsg] = 1;
+ if ((res = wait_file(chan, vms, vms->fn)) < 0) {
+ ast_log(LOG_WARNING, "Playback of message %s failed\n", vms->fn);
+ res = 0;
}
- DISPOSE(vms->curdir, vms->curmsg);
- return res;
}
+ DISPOSE(vms->curdir, vms->curmsg);
+ return res;
+}
#ifdef IMAP_STORAGE
static int imap_remove_file(char *dir, int msgnum)
@@ -6421,14 +6445,18 @@ static int vm_play_folder_name(struct ast_channel *chan, char *mbox)
{
int cmd;
- if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* Italian, Spanish, French or Portuguese syntax */
+ if ( !strncasecmp(chan->language, "it", 2) ||
+ !strncasecmp(chan->language, "es", 2) ||
+ !strncasecmp(chan->language, "pt", 2)) { /* Italian, Spanish, or Portuguese syntax */
cmd = ast_play_and_wait(chan, "vm-messages"); /* "messages */
return cmd ? cmd : ast_play_and_wait(chan, mbox);
- } else if (!strcasecmp(chan->language, "gr")) {
+ } else if (!strncasecmp(chan->language, "gr", 2)) {
return vm_play_folder_name_gr(chan, mbox);
- } else if (!strcasecmp(chan->language, "pl")) {
+ } else if (!strncasecmp(chan->language, "he", 2)) { /* Hebrew syntax */
+ return ast_play_and_wait(chan, mbox);
+ } else if (!strncasecmp(chan->language, "pl", 2)) {
return vm_play_folder_name_pl(chan, mbox);
- } else if (!strcasecmp(chan->language, "ua")) { /* Ukrainian syntax */
+ } else if (!strncasecmp(chan->language, "ua", 2)) { /* Ukrainian syntax */
return vm_play_folder_name_ua(chan, mbox);
} else { /* Default English */
cmd = ast_play_and_wait(chan, mbox);
@@ -6436,18 +6464,18 @@ static int vm_play_folder_name(struct ast_channel *chan, char *mbox)
}
}
-/* GREEK SYNTAX
+/* GREEK SYNTAX
In greek the plural for old/new is
different so we need the following files
- We also need vm-denExeteMynhmata because
+ We also need vm-denExeteMynhmata because
this syntax is different.
-
+
-> vm-Olds.wav : "Palia"
-> vm-INBOXs.wav : "Nea"
-> vm-denExeteMynhmata : "den exete mynhmata"
*/
-
-
+
+
static int vm_intro_gr(struct ast_channel *chan, struct vm_state *vms)
{
int res = 0;
@@ -6581,6 +6609,73 @@ static int vm_intro_multilang(struct ast_channel *chan, struct vm_state *vms, co
return res;
}
+/* Default Hebrew syntax */
+static int vm_intro_he(struct ast_channel *chan, struct vm_state *vms)
+{
+ int res=0;
+
+ /* Introduce messages they have */
+ if (!res) {
+ if ((vms->newmessages) || (vms->oldmessages)) {
+ res = ast_play_and_wait(chan, "vm-youhave");
+ }
+ /*
+ * The word "shtei" refers to the number 2 in hebrew when performing a count
+ * of elements. In Hebrew, there are 6 forms of enumerating the number 2 for
+ * an element, this is one of them.
+ */
+ if (vms->newmessages) {
+ if (!res) {
+ if (vms->newmessages == 1) {
+ res = ast_play_and_wait(chan, "vm-INBOX1");
+ } else {
+ if (vms->newmessages == 2) {
+ res = ast_play_and_wait(chan, "vm-shtei");
+ } else {
+ res = ast_say_number(chan, vms->newmessages, AST_DIGIT_ANY, chan->language, "f");
+ }
+ res = ast_play_and_wait(chan, "vm-INBOX");
+ }
+ }
+ if (vms->oldmessages && !res) {
+ res = ast_play_and_wait(chan, "vm-and");
+ if (vms->oldmessages == 1) {
+ res = ast_play_and_wait(chan, "vm-Old1");
+ } else {
+ if (vms->oldmessages == 2) {
+ res = ast_play_and_wait(chan, "vm-shtei");
+ } else {
+ res = ast_say_number(chan, vms->oldmessages, AST_DIGIT_ANY, chan->language, "f");
+ }
+ res = ast_play_and_wait(chan, "vm-Old");
+ }
+ }
+ }
+ if (!res && vms->oldmessages && !vms->newmessages) {
+ if (!res) {
+ if (vms->oldmessages == 1) {
+ res = ast_play_and_wait(chan, "vm-Old1");
+ } else {
+ if (vms->oldmessages == 2) {
+ res = ast_play_and_wait(chan, "vm-shtei");
+ } else {
+ res = ast_say_number(chan, vms->oldmessages, AST_DIGIT_ANY, chan->language, "f");
+ }
+ res = ast_play_and_wait(chan, "vm-Old");
+ }
+ }
+ }
+ if (!res) {
+ if (!vms->oldmessages && !vms->newmessages) {
+ if (!res) {
+ res = ast_play_and_wait(chan, "vm-nomessages");
+ }
+ }
+ }
+ }
+ return res;
+}
+
/* Default English syntax */
static int vm_intro_en(struct ast_channel *chan, struct vm_state *vms)
{
@@ -7124,7 +7219,7 @@ static int vm_intro_pt(struct ast_channel *chan, struct vm_state *vms)
* vm-no : no ( no messages )
*/
-static int vm_intro_cz(struct ast_channel *chan, struct vm_state *vms)
+static int vm_intro_cs(struct ast_channel *chan, struct vm_state *vms)
{
int res;
res = ast_play_and_wait(chan, "vm-youhave");
@@ -7238,37 +7333,46 @@ static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm
}
/* Play voicemail intro - syntax is different for different languages */
- if (!strcasecmp(chan->language, "de")) { /* GERMAN syntax */
+ if (0) {
+ } else if (!strncasecmp(chan->language, "cs", 2)) { /* CZECH syntax */
+ return vm_intro_cs(chan, vms);
+ } else if (!strncasecmp(chan->language, "cz", 2)) { /* deprecated CZECH syntax */
+ static int deprecation_warning = 0;
+ if (deprecation_warning++ % 10 == 0) {
+ ast_log(LOG_WARNING, "cz is not a standard language code. Please switch to using cs instead.\n");
+ }
+ return vm_intro_cs(chan, vms);
+ } else if (!strncasecmp(chan->language, "de", 2)) { /* GERMAN syntax */
return vm_intro_de(chan, vms);
- } else if (!strcasecmp(chan->language, "es")) { /* SPANISH syntax */
+ } else if (!strncasecmp(chan->language, "es", 2)) { /* SPANISH syntax */
return vm_intro_es(chan, vms);
- } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN syntax */
- return vm_intro_it(chan, vms);
- } else if (!strcasecmp(chan->language, "fr")) { /* FRENCH syntax */
+ } else if (!strncasecmp(chan->language, "fr", 2)) { /* FRENCH syntax */
return vm_intro_fr(chan, vms);
- } else if (!strcasecmp(chan->language, "nl")) { /* DUTCH syntax */
- return vm_intro_nl(chan, vms);
- } else if (!strcasecmp(chan->language, "pt")) { /* PORTUGUESE syntax */
- return vm_intro_pt(chan, vms);
- } else if (!strcasecmp(chan->language, "pt_BR")) { /* BRAZILIAN PORTUGUESE syntax */
- return vm_intro_pt_BR(chan, vms);
- } else if (!strcasecmp(chan->language, "cz")) { /* CZECH syntax */
- return vm_intro_cz(chan, vms);
- } else if (!strcasecmp(chan->language, "gr")) { /* GREEK syntax */
+ } else if (!strncasecmp(chan->language, "gr", 2)) { /* GREEK syntax */
return vm_intro_gr(chan, vms);
- } else if (!strcasecmp(chan->language, "pl")) { /* POLISH syntax */
+ } else if (!strncasecmp(chan->language, "he", 2)) { /* HEBREW syntax */
+ return vm_intro_he(chan, vms);
+ } else if (!strncasecmp(chan->language, "it", 2)) { /* ITALIAN syntax */
+ return vm_intro_it(chan, vms);
+ } else if (!strncasecmp(chan->language, "nl", 2)) { /* DUTCH syntax */
+ return vm_intro_nl(chan, vms);
+ } else if (!strncasecmp(chan->language, "no", 2)) { /* NORWEGIAN syntax */
+ return vm_intro_no(chan, vms);
+ } else if (!strncasecmp(chan->language, "pl", 2)) { /* POLISH syntax */
return vm_intro_pl(chan, vms);
- } else if (!strcasecmp(chan->language, "se")) { /* SWEDISH syntax */
+ } else if (!strncasecmp(chan->language, "pt_BR", 5)) { /* BRAZILIAN PORTUGUESE syntax */
+ return vm_intro_pt_BR(chan, vms);
+ } else if (!strncasecmp(chan->language, "pt", 2)) { /* PORTUGUESE syntax */
+ return vm_intro_pt(chan, vms);
+ } else if (!strncasecmp(chan->language, "ru", 2)) { /* RUSSIAN syntax */
+ return vm_intro_multilang(chan, vms, "n");
+ } else if (!strncasecmp(chan->language, "se", 2)) { /* SWEDISH syntax */
return vm_intro_se(chan, vms);
- } else if (!strcasecmp(chan->language, "no")) { /* NORWEGIAN syntax */
- return vm_intro_no(chan, vms);
- } else if (!strcasecmp(chan->language, "ru")) { /* RUSSIAN syntax */
+ } else if (!strncasecmp(chan->language, "ua", 2)) { /* UKRAINIAN syntax */
return vm_intro_multilang(chan, vms, "n");
} else if (!strncasecmp(chan->language, "zh", 2)) { /* CHINESE (Taiwan) syntax */
return vm_intro_zh(chan, vms);
- } else if (!strcasecmp(chan->language, "ua")) { /* UKRAINIAN syntax */
- return vm_intro_multilang(chan, vms, "n");
- } else { /* Default to ENGLISH */
+ } else { /* Default to ENGLISH */
return vm_intro_en(chan, vms);
}
}
@@ -7663,6 +7767,23 @@ static int vm_browse_messages_en(struct ast_channel *chan, struct vm_state *vms,
return cmd;
}
+/* Hebrew Syntax */
+static int vm_browse_messages_he(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 {
+ if (!strcasecmp(vms->fn, "INBOX")) {
+ cmd = ast_play_and_wait(chan, "vm-nonewmessages");
+ } else {
+ cmd = ast_play_and_wait(chan, "vm-nomessages");
+ }
+ }
+ return cmd;
+}
+
/* ITALIAN syntax */
static int vm_browse_messages_it(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
{
@@ -7743,17 +7864,19 @@ static int vm_browse_messages_zh(struct ast_channel *chan, struct vm_state *vms,
static int vm_browse_messages(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
{
- if (!strcasecmp(chan->language, "es")) { /* SPANISH */
+ if (!strncasecmp(chan->language, "es", 2)) { /* SPANISH */
return vm_browse_messages_es(chan, vms, vmu);
- } else if (!strcasecmp(chan->language, "it")) { /* ITALIAN */
+ } else if (!strncasecmp(chan->language, "gr", 2)) { /* GREEK */
+ return vm_browse_messages_gr(chan, vms, vmu);
+ } else if (!strncasecmp(chan->language, "he", 2)) { /* HEBREW */
+ return vm_browse_messages_he(chan, vms, vmu);
+ } else if (!strncasecmp(chan->language, "it", 2)) { /* ITALIAN */
return vm_browse_messages_it(chan, vms, vmu);
- } else if (!strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* PORTUGUESE */
+ } else if (!strncasecmp(chan->language, "pt", 2)) { /* PORTUGUESE */
return vm_browse_messages_pt(chan, vms, vmu);
- } else if (!strcasecmp(chan->language, "gr")) {
- return vm_browse_messages_gr(chan, vms, vmu); /* GREEK */
- } else if (!strncasecmp(chan->language, "zh", 2)) {
- return vm_browse_messages_zh(chan, vms, vmu); /* CHINESE (Taiwan) */
- } else { /* Default to English syntax */
+ } else if (!strncasecmp(chan->language, "zh", 2)) { /* CHINESE (Taiwan) */
+ return vm_browse_messages_zh(chan, vms, vmu);
+ } else { /* Default to English syntax */
return vm_browse_messages_en(chan, vms, vmu);
}
}
@@ -8335,6 +8458,9 @@ static int vm_execmain(struct ast_channel *chan, void *data)
case '*':
if (!vms.starting) {
cmd = ast_play_and_wait(chan, "vm-onefor");
+ if (!strncasecmp(chan->language, "he", 2)) {
+ cmd = ast_play_and_wait(chan, "vm-for");
+ }
if (!cmd)
cmd = vm_play_folder_name(chan, vms.vmbox);
if (!cmd)