diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lang/dansk.lang | 14 | ||||
-rw-r--r-- | apps/lang/english-us.lang | 14 | ||||
-rw-r--r-- | apps/lang/english.lang | 14 | ||||
-rw-r--r-- | apps/talk.c | 45 |
4 files changed, 78 insertions, 9 deletions
diff --git a/apps/lang/dansk.lang b/apps/lang/dansk.lang index 536ecb28ec..aff651cc52 100644 --- a/apps/lang/dansk.lang +++ b/apps/lang/dansk.lang | |||
@@ -12652,3 +12652,17 @@ | |||
12652 | *: "Start auto-sluk ved opstart" | 12652 | *: "Start auto-sluk ved opstart" |
12653 | </voice> | 12653 | </voice> |
12654 | </phrase> | 12654 | </phrase> |
12655 | <phrase> | ||
12656 | id: VOICE_NUMERIC_TENS_SWAP_SEPARATOR | ||
12657 | desc: voice only, for speaking numbers in languages that swap the tens and ones fields. Leave blank for languages that do not need it, such as English ("231" => "two hundred thirty one") but other languages may speak it as "two hundred one [AND] thirty" | ||
12658 | user: core | ||
12659 | <source> | ||
12660 | *: "" | ||
12661 | </source> | ||
12662 | <dest> | ||
12663 | *: "" | ||
12664 | </dest> | ||
12665 | <voice> | ||
12666 | *: "og" | ||
12667 | </voice> | ||
12668 | </phrase> | ||
diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang index 14b33569d2..b926b4e37e 100644 --- a/apps/lang/english-us.lang +++ b/apps/lang/english-us.lang | |||
@@ -16013,3 +16013,17 @@ | |||
16013 | *: "Bit rate" | 16013 | *: "Bit rate" |
16014 | </voice> | 16014 | </voice> |
16015 | </phrase> | 16015 | </phrase> |
16016 | <phrase> | ||
16017 | id: VOICE_NUMERIC_TENS_SWAP_SEPARATOR | ||
16018 | desc: voice only, for speaking numbers in languages that swap the tens and ones fields. Leave blank for languages that do not need it, such as English ("231" => "two hundred thirty one") but other languages may speak it as "two hundred one [AND] thirty" | ||
16019 | user: core | ||
16020 | <source> | ||
16021 | *: "" | ||
16022 | </source> | ||
16023 | <dest> | ||
16024 | *: "" | ||
16025 | </dest> | ||
16026 | <voice> | ||
16027 | *: "" | ||
16028 | </voice> | ||
16029 | </phrase> | ||
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 67624aa2a3..60cb17d245 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -16080,3 +16080,17 @@ | |||
16080 | *: "Bit rate" | 16080 | *: "Bit rate" |
16081 | </voice> | 16081 | </voice> |
16082 | </phrase> | 16082 | </phrase> |
16083 | <phrase> | ||
16084 | id: VOICE_NUMERIC_TENS_SWAP_SEPARATOR | ||
16085 | desc: voice only, for speaking numbers in languages that swap the tens and ones fields. Leave blank for languages that do not need it, such as English ("231" => "two hundred thirty one") but other languages may speak it as "two hundred one [AND] thirty" | ||
16086 | user: core | ||
16087 | <source> | ||
16088 | *: "" | ||
16089 | </source> | ||
16090 | <dest> | ||
16091 | *: "" | ||
16092 | </dest> | ||
16093 | <voice> | ||
16094 | *: "" | ||
16095 | </voice> | ||
16096 | </phrase> | ||
diff --git a/apps/talk.c b/apps/talk.c index 73191c22c3..e627337162 100644 --- a/apps/talk.c +++ b/apps/talk.c | |||
@@ -1188,17 +1188,44 @@ int talk_number(long n, bool enqueue) | |||
1188 | talk_id(VOICE_HUNDRED, true); | 1188 | talk_id(VOICE_HUNDRED, true); |
1189 | } | 1189 | } |
1190 | 1190 | ||
1191 | /* combination indexing */ | 1191 | struct queue_entry tens_swap; |
1192 | if (ones > 20) | 1192 | if (get_clip(VOICE_NUMERIC_TENS_SWAP_SEPARATOR, &tens_swap) >= 0) |
1193 | { | 1193 | { |
1194 | int tens = ones/10 + 18; | 1194 | /* direct indexing */ |
1195 | talk_id(VOICE_ZERO + tens, true); | 1195 | if (ones <= 20) |
1196 | ones %= 10; | 1196 | { |
1197 | talk_id(VOICE_ZERO + ones, true); | ||
1198 | } | ||
1199 | else if (ones) | ||
1200 | { | ||
1201 | int tmp = ones % 10; | ||
1202 | if (tmp) | ||
1203 | { | ||
1204 | talk_id(VOICE_ZERO + tmp, true); | ||
1205 | talk_id(VOICE_NUMERIC_TENS_SWAP_SEPARATOR, true); | ||
1206 | } | ||
1207 | } | ||
1208 | /* combination indexing */ | ||
1209 | if (ones > 20) | ||
1210 | { | ||
1211 | int tens = ones/10 + 18; | ||
1212 | talk_id(VOICE_ZERO + tens, true); | ||
1213 | } | ||
1197 | } | 1214 | } |
1215 | else | ||
1216 | { | ||
1217 | /* combination indexing */ | ||
1218 | if (ones > 20) | ||
1219 | { | ||
1220 | int tens = ones/10 + 18; | ||
1221 | talk_id(VOICE_ZERO + tens, true); | ||
1222 | ones %= 10; | ||
1223 | } | ||
1198 | 1224 | ||
1199 | /* direct indexing */ | 1225 | /* direct indexing */ |
1200 | if (ones) | 1226 | if (ones) |
1201 | talk_id(VOICE_ZERO + ones, true); | 1227 | talk_id(VOICE_ZERO + ones, true); |
1228 | } | ||
1202 | 1229 | ||
1203 | /* add billion, million, thousand */ | 1230 | /* add billion, million, thousand */ |
1204 | if (mil) | 1231 | if (mil) |
@@ -1215,7 +1242,7 @@ int talk_number(long n, bool enqueue) | |||
1215 | static int talk_year(long year, bool enqueue) | 1242 | static int talk_year(long year, bool enqueue) |
1216 | { | 1243 | { |
1217 | int rem; | 1244 | int rem; |
1218 | if(year < 1100 || year >=2000) | 1245 | if(year < 1100 || (year >=2000 && year < 2100)) |
1219 | /* just say it as a regular number */ | 1246 | /* just say it as a regular number */ |
1220 | return talk_number(year, enqueue); | 1247 | return talk_number(year, enqueue); |
1221 | /* Say century */ | 1248 | /* Say century */ |