summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2007-06-14 21:02:19 +0000
committerRussell Bryant <russell@russellbryant.com>2007-06-14 21:02:19 +0000
commitab6fa304a434b1e07f970bf6069a7b065c5e7891 (patch)
tree7b96a9384fc11eae33771d04b3eb4b9e34c428a7 /apps
parent055d82cbce5ad588f4d612c49f56cd76f4c8bab6 (diff)
Add support for the tw language in voicemail
(issue #9964, ljmid) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@69348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rw-r--r--apps/app_voicemail.c115
1 files changed, 114 insertions, 1 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 675d96670..710072d91 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -246,6 +246,7 @@ static int load_config(void);
\arg \b gr - Greek
\arg \b no - Norwegian
\arg \b se - Swedish
+ \arg \b tw - Chinese (Taiwan)
German requires the following additional soundfile:
\arg \b 1F einE (feminine)
@@ -298,6 +299,15 @@ For vm_intro_it:
\arg \b vm-vecchio old
\arg \b vm-vecchi old plural
+Chinese (Taiwan) requires the following additional soundfile:
+\arg \b vm-tong A class-word for call (tong1)
+\arg \b vm-ri A class-word for day (ri4)
+\arg \b vm-you You (ni3)
+\arg \b vm-haveno Have no (mei2 you3)
+\arg \b vm-have Have (you3)
+\arg \b vm-listen To listen (yao4 ting1)
+
+
\note 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.
@@ -4402,6 +4412,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, "'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 (!strcasecmp(chan->language,"tw")) /* 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
@@ -5784,6 +5796,48 @@ static int vm_intro_ru(struct ast_channel *chan,struct vm_state *vms)
return res;
}
+/* CHINESE (Taiwan) syntax */
+static int vm_intro_tw(struct ast_channel *chan, struct vm_state *vms)
+{
+ int res;
+
+ /* Introduce messages they have */
+ res = ast_play_and_wait(chan, "vm-you");
+
+ if (!res && vms->newmessages) {
+ res = ast_play_and_wait(chan, "vm-have");
+ if (!res)
+ res = say_and_wait(chan, vms->newmessages, chan->language);
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-tong");
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-INBOX");
+ if (vms->oldmessages && !res)
+ res = ast_play_and_wait(chan, "vm-and");
+ else if (!res)
+ res = ast_play_and_wait(chan, "vm-messages");
+
+ }
+ if (!res && vms->oldmessages) {
+ res = ast_play_and_wait(chan, "vm-have");
+ if (!res)
+ res = say_and_wait(chan, vms->oldmessages, chan->language);
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-tong");
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-Old");
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-messages");
+ }
+ if (!res && !vms->oldmessages && !vms->newmessages) {
+ res = ast_play_and_wait(chan, "vm-haveno");
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-messages");
+ }
+ return res;
+}
+
+
static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
{
@@ -5823,12 +5877,14 @@ static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm
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, "tw")) { /* CHINESE (Taiwan) syntax */
+ return vm_intro_tw(chan, vms);
} else { /* Default to ENGLISH */
return vm_intro_en(chan, vms);
}
}
-static int vm_instructions(struct ast_channel *chan, struct vm_state *vms, int skipadvanced)
+static int vm_instructions_en(struct ast_channel *chan, struct vm_state *vms, int skipadvanced)
{
int res = 0;
/* Play instructions and wait for new command */
@@ -5875,6 +5931,40 @@ static int vm_instructions(struct ast_channel *chan, struct vm_state *vms, int s
return res;
}
+static int vm_instructions_tw(struct ast_channel *chan, struct vm_state *vms, int skipadvanced)
+{
+ int res = 0;
+ /* Play instructions and wait for new command */
+ while (!res) {
+ if (vms->lastmsg > -1) {
+ res = ast_play_and_wait(chan, "vm-listen");
+ if (!res)
+ res = vm_play_folder_name(chan, vms->vmbox);
+ if (!res)
+ res = ast_play_and_wait(chan, "press");
+ if (!res)
+ res = ast_play_and_wait(chan, "digits/1");
+ }
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-opts");
+ if (!res) {
+ vms->starting = 0;
+ return vm_instructions_en(chan,vms,skipadvanced);
+ }
+ }
+ return res;
+}
+
+static int vm_instructions(struct ast_channel *chan, struct vm_state *vms, int skipadvanced)
+{
+ if (vms->starting && !strcasecmp(chan->language, "tw")) { /* CHINESE (Taiwan) syntax */
+ return vm_instructions_tw(chan, vms, skipadvanced);
+ } else { /* Default to ENGLISH */
+ return vm_instructions_en(chan, vms, skipadvanced);
+ }
+}
+
+
static int vm_newuser(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, char *fmtc, signed char record_gain)
{
int cmd = 0;
@@ -6262,6 +6352,27 @@ static int vm_browse_messages_pt(struct ast_channel *chan, struct vm_state *vms,
return cmd;
}
+/* Chinese (Taiwan)syntax */
+static int vm_browse_messages_tw(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-you");
+ if (!cmd)
+ cmd = ast_play_and_wait(chan, "vm-haveno");
+ if (!cmd)
+ cmd = ast_play_and_wait(chan, "vm-messages");
+ if (!cmd) {
+ snprintf(vms->fn, sizeof(vms->fn), "vm-%s", vms->curbox);
+ cmd = ast_play_and_wait(chan, vms->fn);
+ }
+ }
+ return cmd;
+}
+
static int vm_browse_messages(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
{
if (!strcasecmp(chan->language, "es")) { /* SPANISH */
@@ -6272,6 +6383,8 @@ static int vm_browse_messages(struct ast_channel *chan, struct vm_state *vms, st
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 (!strcasecmp(chan->language, "tw")){
+ return vm_browse_messages_tw(chan, vms, vmu); /* CHINESE (Taiwan) */
} else { /* Default to English syntax */
return vm_browse_messages_en(chan, vms, vmu);
}