|
|
|
@ -402,7 +402,7 @@ static int wait_file(struct ast_channel *chan, const char *ints, const char *fil
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full: call language-specific functions */
|
|
|
|
|
/*! \brief ast_say_number_full: call language-specific functions */
|
|
|
|
|
/* Called from AGI */
|
|
|
|
|
int ast_say_number_full(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
@ -446,13 +446,13 @@ int ast_say_number_full(struct ast_channel *chan, int num, const char *ints, con
|
|
|
|
|
return(ast_say_number_full_en(chan, num, ints, language, audiofd, ctrlfd));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number: call language-specific functions without file descriptors */
|
|
|
|
|
/*! \brief ast_say_number: call language-specific functions without file descriptors */
|
|
|
|
|
int ast_say_number(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options)
|
|
|
|
|
{
|
|
|
|
|
return(ast_say_number_full(chan, num, ints, language, options, -1, -1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_en: English syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_en: English syntax */
|
|
|
|
|
/* This is the default syntax, if no other syntax defined in this file is used */
|
|
|
|
|
static int ast_say_number_full_en(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
@ -526,7 +526,7 @@ static int exp10_int(int power)
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_cz: Czech syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_cz: Czech syntax */
|
|
|
|
|
/* files needed:
|
|
|
|
|
* 1m,2m - gender male
|
|
|
|
|
* 1w,2w - gender female
|
|
|
|
@ -641,7 +641,7 @@ static int ast_say_number_full_cz(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_da: Danish syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_da: Danish syntax */
|
|
|
|
|
/* New files:
|
|
|
|
|
In addition to English, the following sounds are required: "1N", "millions", "and" and "1-and" through "9-and"
|
|
|
|
|
*/
|
|
|
|
@ -749,7 +749,7 @@ static int ast_say_number_full_da(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_de: German syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_de: German syntax */
|
|
|
|
|
/* New files:
|
|
|
|
|
In addition to English, the following sounds are required:
|
|
|
|
|
"millions"
|
|
|
|
@ -889,7 +889,7 @@ static int ast_say_number_full_de(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_en_GB: British and Norwegian syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_en_GB: British and Norwegian syntax */
|
|
|
|
|
/* New files:
|
|
|
|
|
In addition to American English, the following sounds are required: "and"
|
|
|
|
|
*/
|
|
|
|
@ -965,7 +965,7 @@ static int ast_say_number_full_en_GB(struct ast_channel *chan, int num, const ch
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_es: Spanish syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_es: Spanish syntax */
|
|
|
|
|
/* New files:
|
|
|
|
|
Requires a few new audios:
|
|
|
|
|
1F.gsm: feminine 'una'
|
|
|
|
@ -1071,7 +1071,7 @@ static int ast_say_number_full_es(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_fr: French syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_fr: French syntax */
|
|
|
|
|
/* Extra sounds needed:
|
|
|
|
|
1F: feminin 'une'
|
|
|
|
|
et: 'and' */
|
|
|
|
@ -1163,7 +1163,7 @@ static int ast_say_number_full_fr(struct ast_channel *chan, int num, const char
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_he: Hebrew syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_he: Hebrew syntax */
|
|
|
|
|
/* Extra sounds needed:
|
|
|
|
|
1F: feminin 'one'
|
|
|
|
|
ve: 'and'
|
|
|
|
@ -1307,7 +1307,7 @@ static int ast_say_number_full_he(struct ast_channel *chan, int num,
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_it: Italian */
|
|
|
|
|
/*! \brief ast_say_number_full_it: Italian */
|
|
|
|
|
static int ast_say_number_full_it(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
|
int res = 0;
|
|
|
|
@ -1460,7 +1460,7 @@ static int ast_say_number_full_it(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_nl: dutch syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_nl: dutch syntax */
|
|
|
|
|
/* New files: digits/nl-en
|
|
|
|
|
*/
|
|
|
|
|
static int ast_say_number_full_nl(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
|
|
|
|
@ -1537,7 +1537,7 @@ static int ast_say_number_full_nl(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_no: Norwegian syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_no: Norwegian syntax */
|
|
|
|
|
/* New files:
|
|
|
|
|
In addition to American English, the following sounds are required: "and", "1N"
|
|
|
|
|
*/
|
|
|
|
@ -2018,7 +2018,7 @@ static int ast_say_number_full_pt(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_se: Swedish syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_se: Swedish syntax */
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
int res = 0;
|
|
|
|
@ -2090,7 +2090,7 @@ static int ast_say_number_full_se(struct ast_channel *chan, int num, const char
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_tw: Taiwanese syntax */
|
|
|
|
|
/*! \brief ast_say_number_full_tw: Taiwanese syntax */
|
|
|
|
|
static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
|
int res = 0;
|
|
|
|
@ -2156,7 +2156,7 @@ static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--- determine last digits for thousands/millions (ru) */
|
|
|
|
|
/*! \brief determine last digits for thousands/millions (ru) */
|
|
|
|
|
static int get_lastdigits_ru(int num) {
|
|
|
|
|
if (num < 20) {
|
|
|
|
|
return num;
|
|
|
|
@ -2169,8 +2169,8 @@ static int get_lastdigits_ru(int num) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_number_full_ru: Russian syntax */
|
|
|
|
|
/*--- additional files:
|
|
|
|
|
/*! \brief ast_say_number_full_ru: Russian syntax */
|
|
|
|
|
/*! \brief additional files:
|
|
|
|
|
n00.gsm (one hundred, two hundred, ...)
|
|
|
|
|
thousand.gsm
|
|
|
|
|
million.gsm
|
|
|
|
@ -2262,7 +2262,7 @@ static int ast_say_number_full_ru(struct ast_channel *chan, int num, const char
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_enumeration_full: call language-specific functions */
|
|
|
|
|
/*! \brief ast_say_enumeration_full: call language-specific functions */
|
|
|
|
|
/* Called from AGI */
|
|
|
|
|
int ast_say_enumeration_full(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
@ -2278,13 +2278,13 @@ int ast_say_enumeration_full(struct ast_channel *chan, int num, const char *ints
|
|
|
|
|
return(ast_say_enumeration_full_en(chan, num, ints, language, audiofd, ctrlfd));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_enumeration: call language-specific functions without file descriptors */
|
|
|
|
|
/*! \brief ast_say_enumeration: call language-specific functions without file descriptors */
|
|
|
|
|
int ast_say_enumeration(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options)
|
|
|
|
|
{
|
|
|
|
|
return(ast_say_enumeration_full(chan, num, ints, language, options, -1, -1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_enumeration_full_en: English syntax */
|
|
|
|
|
/*! \brief ast_say_enumeration_full_en: English syntax */
|
|
|
|
|
/* This is the default syntax, if no other syntax defined in this file is used */
|
|
|
|
|
static int ast_say_enumeration_full_en(struct ast_channel *chan, int num, const char *ints, const char *language, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
@ -2383,7 +2383,7 @@ static int ast_say_enumeration_full_en(struct ast_channel *chan, int num, const
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_enumeration_full_da: Danish syntax */
|
|
|
|
|
/*! \brief ast_say_enumeration_full_da: Danish syntax */
|
|
|
|
|
static int ast_say_enumeration_full_da(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
|
/* options can be: '' or 'm' male gender; 'f' female gender; 'n' neuter gender; 'p' plural */
|
|
|
|
@ -2546,7 +2546,7 @@ static int ast_say_enumeration_full_da(struct ast_channel *chan, int num, const
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*--- ast_say_enumeration_full_de: German syntax */
|
|
|
|
|
/*! \brief ast_say_enumeration_full_de: German syntax */
|
|
|
|
|
static int ast_say_enumeration_full_de(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
|
|
|
|
|
{
|
|
|
|
|
/* options can be: '' or 'm' male gender; 'f' female gender; 'n' neuter gender; 'p' plural */
|
|
|
|
|