aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-30 18:44:35 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-30 18:44:35 +0000
commit3ac81c6a97acd2dbb639033d8e788fd57009f393 (patch)
tree858a5e0aacd534e41da212f491418b1e903efa63
parent475817bc2ca20cb004b6327fcd0bb2a7f430b31d (diff)
Recorded merge of revisions 204470 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r204470 | tilghman | 2009-06-30 13:36:24 -0500 (Tue, 30 Jun 2009) | 18 lines Recorded merge of revisions 204469 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r204469 | tilghman | 2009-06-30 13:23:35 -0500 (Tue, 30 Jun 2009) | 11 lines "tw" is the language specification for Twi (from Ghana) not Taiwanese. (closes issue #15346) Reported by: volivier Patches: 20090617__issue15346__1.4.diff.txt uploaded by tilghman (license 14) 20090617__issue15346__trunk.diff.txt uploaded by tilghman (license 14) 20090617__issue15346__1.6.0.diff.txt uploaded by tilghman (license 14) 20090617__issue15346__1.6.1.diff.txt uploaded by tilghman (license 14) 20090617__issue15346__1.6.2.diff.txt uploaded by tilghman (license 14) Tested by: volivier ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@204473 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--UPGRADE.txt19
-rw-r--r--apps/app_voicemail.c20
-rw-r--r--main/say.c49
3 files changed, 46 insertions, 42 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 339001ef3..f3040fdea 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -18,13 +18,6 @@
===
===========================================================
-From 1.6.1 to 1.6.2:
-
-* The res_indications module has been removed. Its functionality was important
- enough that most of it has been moved into the Asterisk core.
- Two applications previously provided by res_indications, PlayTones and
- StopPlayTones, have been moved into a new module, app_playtones.
-
From 1.6.0.1 to 1.6.1:
* The ast_agi_register_multiple() and ast_agi_unregister_multiple()
@@ -84,6 +77,11 @@ From 1.6.0.x to 1.6.1:
From 1.6.1 to 1.6.2:
+* The res_indications module has been removed. Its functionality was important
+ enough that most of it has been moved into the Asterisk core.
+ Two applications previously provided by res_indications, PlayTones and
+ StopPlayTones, have been moved into a new module, app_playtones.
+
* The default console now will use colors according to the default background
color, instead of forcing the background color to black. If you are using a
light colored background for your console, you may wish to use the option
@@ -114,3 +112,10 @@ From 1.6.1 to 1.6.2:
func_sprintf, and is no longer included in func_strings. If you use this
function and do not use 'autoload=yes' in modules.conf, you will need
to explicitly load func_sprintf for it to be available.
+
+* Support for Taiwanese was incorrectly supported with the "tw" language code.
+ In reality, the "tw" language code is reserved for the Twi language, native
+ to Ghana. If you were previously using the "tw" language code, you should
+ switch to using either "zh" (for Mandarin Chinese) or "zh_TW" for Taiwan
+ specific localizations.
+
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index d18d3db1e..96b71084b 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -6744,7 +6744,7 @@ 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 */
+ 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);
@@ -8101,7 +8101,7 @@ static int vm_intro_cz(struct ast_channel *chan,struct vm_state *vms)
}
/* CHINESE (Taiwan) syntax */
-static int vm_intro_tw(struct ast_channel *chan, struct vm_state *vms)
+static int vm_intro_zh(struct ast_channel *chan, struct vm_state *vms)
{
int res;
/* Introduce messages they have */
@@ -8180,8 +8180,8 @@ 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_multilang(chan, vms, "n");
- } else if (!strcasecmp(chan->language, "tw")) { /* CHINESE (Taiwan) syntax */
- return vm_intro_tw(chan, vms);
+ } 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 if (!strcasecmp(chan->language, "he")) { /* HEBREW syntax */
@@ -8271,7 +8271,7 @@ static int vm_instructions_en(struct ast_channel *chan, struct ast_vm_user *vmu,
return res;
}
-static int vm_instructions_tw(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int skipadvanced, int in_urgent)
+static int vm_instructions_zh(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int skipadvanced, int in_urgent)
{
int res = 0;
/* Play instructions and wait for new command */
@@ -8297,8 +8297,8 @@ static int vm_instructions_tw(struct ast_channel *chan, struct ast_vm_user *vmu,
static int vm_instructions(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int skipadvanced, int in_urgent)
{
- if (vms->starting && !strcasecmp(chan->language, "tw")) { /* CHINESE (Taiwan) syntax */
- return vm_instructions_tw(chan, vmu, vms, skipadvanced, in_urgent);
+ if (vms->starting && !strncasecmp(chan->language, "zh", 2)) { /* CHINESE (Taiwan) syntax */
+ return vm_instructions_zh(chan, vmu, vms, skipadvanced, in_urgent);
} else { /* Default to ENGLISH */
return vm_instructions_en(chan, vmu, vms, skipadvanced, in_urgent);
}
@@ -8752,7 +8752,7 @@ static int vm_browse_messages_pt(struct ast_channel *chan, struct vm_state *vms,
*
* \return zero on success, -1 on error.
*/
-static int vm_browse_messages_tw(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
+static int vm_browse_messages_zh(struct ast_channel *chan, struct vm_state *vms, struct ast_vm_user *vmu)
{
int cmd=0;
@@ -8793,8 +8793,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 if (!strncasecmp(chan->language, "zh", 2)) {
+ return vm_browse_messages_zh(chan, vms, vmu); /* CHINESE (Taiwan) */
} else if (!strcasecmp(chan->language, "he")) {
return vm_browse_messages_he(chan, vms, vmu); /* HEBREW */
} else { /* Default to English syntax */
diff --git a/main/say.c b/main/say.c
index 46b7d058e..ecde090c5 100644
--- a/main/say.c
+++ b/main/say.c
@@ -343,7 +343,7 @@ static int ast_say_number_full_no(struct ast_channel *chan, int num, const char
static int ast_say_number_full_pl(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd);
static int ast_say_number_full_pt(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd);
static int ast_say_number_full_se(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd);
-static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd);
+static int ast_say_number_full_zh(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd);
static int ast_say_number_full_gr(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd);
static int ast_say_number_full_ru(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd);
static int ast_say_number_full_ge(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd);
@@ -379,7 +379,7 @@ static int ast_say_date_with_format_it(struct ast_channel *chan, time_t t, const
static int ast_say_date_with_format_nl(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
static int ast_say_date_with_format_pl(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
static int ast_say_date_with_format_pt(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
-static int ast_say_date_with_format_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
+static int ast_say_date_with_format_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
static int ast_say_date_with_format_gr(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
static int ast_say_date_with_format_th(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone);
@@ -389,7 +389,7 @@ static int ast_say_time_fr(struct ast_channel *chan, time_t t, const char *ints,
static int ast_say_time_nl(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_time_pt(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_time_pt_BR(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
-static int ast_say_time_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
+static int ast_say_time_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_time_gr(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_time_ge(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_time_hu(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
@@ -402,7 +402,7 @@ static int ast_say_datetime_fr(struct ast_channel *chan, time_t t, const char *i
static int ast_say_datetime_nl(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_datetime_pt(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_datetime_pt_BR(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
-static int ast_say_datetime_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
+static int ast_say_datetime_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_datetime_gr(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_datetime_ge(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
static int ast_say_datetime_hu(struct ast_channel *chan, time_t t, const char *ints, const char *lang);
@@ -459,8 +459,8 @@ static int say_number_full(struct ast_channel *chan, int num, const char *ints,
return(ast_say_number_full_pt(chan, num, ints, language, options, audiofd, ctrlfd));
} else if (!strcasecmp(language, "se") ) { /* Swedish syntax */
return(ast_say_number_full_se(chan, num, ints, language, options, audiofd, ctrlfd));
- } else if (!strcasecmp(language, "tw") || !strcasecmp(language, "zh") ) { /* Taiwanese / Chinese syntax */
- return(ast_say_number_full_tw(chan, num, ints, language, audiofd, ctrlfd));
+ } else if (!strncasecmp(language, "zh", 2) ) { /* Taiwanese / Chinese syntax */
+ return(ast_say_number_full_zh(chan, num, ints, language, audiofd, ctrlfd));
} else if (!strcasecmp(language, "gr") ) { /* Greek syntax */
return(ast_say_number_full_gr(chan, num, ints, language, audiofd, ctrlfd));
} else if (!strcasecmp(language, "ru") ) { /* Russian syntax */
@@ -2239,8 +2239,8 @@ static int ast_say_number_full_se(struct ast_channel *chan, int num, const char
return res;
}
-/*! \brief ast_say_number_full_tw: Taiwanese / Chinese syntax */
-static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
+/*! \brief ast_say_number_full_zh: Taiwanese / Chinese syntax */
+static int ast_say_number_full_zh(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
{
int res = 0;
int playh = 0;
@@ -2315,7 +2315,7 @@ static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char
last_length = strlen(buf);
num -= ((num / 1000) * 1000);
} else if (num < 100000000) { /* 100,000,000 */
- res = ast_say_number_full_tw(chan, num / 10000, ints, language, audiofd, ctrlfd);
+ res = ast_say_number_full_zh(chan, num / 10000, ints, language, audiofd, ctrlfd);
if (res)
return res;
snprintf(buf, 10, "%d", num);
@@ -2325,7 +2325,7 @@ static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char
snprintf(fn, sizeof(fn), "digits/wan");
} else {
if (num < 1000000000) { /* 1,000,000,000 */
- res = ast_say_number_full_tw(chan, num / 100000000, ints, language, audiofd, ctrlfd);
+ res = ast_say_number_full_zh(chan, num / 100000000, ints, language, audiofd, ctrlfd);
if (res)
return res;
snprintf(buf, 10, "%d", num);
@@ -3425,8 +3425,8 @@ static int say_date_with_format(struct ast_channel *chan, time_t t, const char *
return (ast_say_date_with_format_pl(chan, t, ints, lang, format, tzone));
} else if (!strcasecmp(lang, "pt") || !strcasecmp(lang, "pt_BR")) { /* Portuguese syntax */
return (ast_say_date_with_format_pt(chan, t, ints, lang, format, tzone));
- } else if (!strcasecmp(lang, "tw") || !strcasecmp(lang, "zh") ) { /* Taiwanese / Chinese syntax */
- return (ast_say_date_with_format_tw(chan, t, ints, lang, format, tzone));
+ } else if (!strncasecmp(lang, "zh", 2) ) { /* Taiwanese / Chinese syntax */
+ return (ast_say_date_with_format_zh(chan, t, ints, lang, format, tzone));
} else if (!strcasecmp(lang, "th") ) { /* Thai syntax */
return (ast_say_date_with_format_th(chan, t, ints, lang, format, tzone));
} else if (!strcasecmp(lang, "gr") ) { /* Greek syntax */
@@ -5743,7 +5743,7 @@ int ast_say_date_with_format_pt(struct ast_channel *chan, time_t t, const char *
}
/* Taiwanese / Chinese syntax */
-int ast_say_date_with_format_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone)
+int ast_say_date_with_format_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang, const char *format, const char *tzone)
{
struct timeval when = { t, 0 };
struct ast_tm tm;
@@ -5935,7 +5935,7 @@ int ast_say_date_with_format_tw(struct ast_channel *chan, time_t t, const char *
/* Yesterday */
res = wait_file(chan, ints, "digits/yesterday", lang);
} else {
- res = ast_say_date_with_format_tw(chan, t, ints, lang, "YBdA", tzone);
+ res = ast_say_date_with_format_zh(chan, t, ints, lang, "YBdA", tzone);
}
}
break;
@@ -5960,14 +5960,14 @@ int ast_say_date_with_format_tw(struct ast_channel *chan, time_t t, const char *
res = wait_file(chan, ints, "digits/yesterday", lang);
} else if (beg_today - 86400 * 6 < t) {
/* Within the last week */
- res = ast_say_date_with_format_tw(chan, t, ints, lang, "A", tzone);
+ res = ast_say_date_with_format_zh(chan, t, ints, lang, "A", tzone);
} else {
- res = ast_say_date_with_format_tw(chan, t, ints, lang, "YBdA", tzone);
+ res = ast_say_date_with_format_zh(chan, t, ints, lang, "YBdA", tzone);
}
}
break;
case 'R':
- res = ast_say_date_with_format_tw(chan, t, ints, lang, "kM", tzone);
+ res = ast_say_date_with_format_zh(chan, t, ints, lang, "kM", tzone);
break;
case 'S':
/* Seconds */
@@ -5990,7 +5990,7 @@ int ast_say_date_with_format_tw(struct ast_channel *chan, time_t t, const char *
}
break;
case 'T':
- res = ast_say_date_with_format_tw(chan, t, ints, lang, "HMS", tzone);
+ res = ast_say_date_with_format_zh(chan, t, ints, lang, "HMS", tzone);
break;
case ' ':
case ' ':
@@ -6024,9 +6024,8 @@ static int say_time(struct ast_channel *chan, time_t t, const char *ints, const
return(ast_say_time_pt(chan, t, ints, lang));
} else if (!strcasecmp(lang, "pt_BR") ) { /* Brazilian Portuguese syntax */
return(ast_say_time_pt_BR(chan, t, ints, lang));
- } else if (!strcasecmp(lang, "tw") ) { /* Taiwanese syntax */
- } else if (!strcasecmp(lang, "tw") || !strcasecmp(lang, "zh") ) { /* Taiwanese / Chinese syntax */
- return(ast_say_time_tw(chan, t, ints, lang));
+ } else if (!strncasecmp(lang, "zh", 2) ) { /* Taiwanese / Chinese syntax */
+ return(ast_say_time_zh(chan, t, ints, lang));
} else if (!strcasecmp(lang, "gr") ) { /* Greek syntax */
return(ast_say_time_gr(chan, t, ints, lang));
} else if (!strcasecmp(lang, "th") ) {
@@ -6250,7 +6249,7 @@ int ast_say_time_th(struct ast_channel *chan, time_t t, const char *ints, const
}
/* Taiwanese / Chinese syntax */
-int ast_say_time_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang)
+int ast_say_time_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang)
{
struct timeval when = { t, 0 };
struct ast_tm tm;
@@ -6342,8 +6341,8 @@ static int say_datetime(struct ast_channel *chan, time_t t, const char *ints, co
return(ast_say_datetime_pt(chan, t, ints, lang));
} else if (!strcasecmp(lang, "pt_BR") ) { /* Brazilian Portuguese syntax */
return(ast_say_datetime_pt_BR(chan, t, ints, lang));
- } else if (!strcasecmp(lang, "tw") || !strcasecmp(lang, "zh") ) { /* Taiwanese / Chinese syntax */
- return(ast_say_datetime_tw(chan, t, ints, lang));
+ } else if (!strncasecmp(lang, "zh", 2) ) { /* Taiwanese / Chinese syntax */
+ return(ast_say_datetime_zh(chan, t, ints, lang));
} else if (!strcasecmp(lang, "gr") ) { /* Greek syntax */
return(ast_say_datetime_gr(chan, t, ints, lang));
} else if (!strcasecmp(lang, "th") ) { /* Thai syntax */
@@ -6639,7 +6638,7 @@ int ast_say_datetime_th(struct ast_channel *chan, time_t t, const char *ints, co
}
/* Taiwanese / Chinese syntax */
-int ast_say_datetime_tw(struct ast_channel *chan, time_t t, const char *ints, const char *lang)
+int ast_say_datetime_zh(struct ast_channel *chan, time_t t, const char *ints, const char *lang)
{
struct timeval when = { t, 0 };
struct ast_tm tm;