Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions radio/src/translations/tts/tts_cn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,19 @@ I18N_PLAY_FUNCTION(cn, playNumber, getvalue_t number, uint8_t unit, uint8_t att)

int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(CN_PROMPT_POINT_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down
12 changes: 9 additions & 3 deletions radio/src/translations/tts/tts_cz.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,14 @@ I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att)

int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, FEMALE);
if (qr.quot < 2) {
PUSH_NUMBER_PROMPT(CZ_PROMPT_CELA);
Expand All @@ -82,6 +85,10 @@ I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(CZ_PROMPT_CELYCH);
};
PLAY_NUMBER(qr.rem, 0, FEMALE);
// TODO: make sure this is correct for CZ
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
PUSH_UNIT_PROMPT(unit, 3);
return;
}
Expand Down Expand Up @@ -187,4 +194,3 @@ I18N_PLAY_FUNCTION(cz, playDuration, int seconds PLAY_DURATION_ATT)
}

LANGUAGE_PACK_DECLARE(cz, STR_VOICE_CZECH);

18 changes: 11 additions & 7 deletions radio/src/translations/tts/tts_da.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
Expand All @@ -19,7 +19,7 @@
* GNU General Public License for more details.
*/

#include "edgetx.h"
#include "edgetx.h"

enum DanishPrompts {
DA_PROMPT_NUMBERS_BASE = 0,
Expand All @@ -30,7 +30,7 @@ enum DanishPrompts {
DA_PROMPT_MINUS = DA_PROMPT_NUMBERS_BASE+111,
DA_PROMPT_POINT = DA_PROMPT_NUMBERS_BASE+112,
DA_PROMPT_UNITS_BASE = 113,
DA_PROMPT_POINT_BASE = 165, //.0 - .9
DA_PROMPT_POINT_BASE = 167, //.0 - .9
};


Expand All @@ -51,16 +51,21 @@ I18N_PLAY_FUNCTION(da, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
number = -number;
}


int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(DA_PROMPT_POINT_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down Expand Up @@ -125,4 +130,3 @@ I18N_PLAY_FUNCTION(da, playDuration, int seconds PLAY_DURATION_ATT)
}

LANGUAGE_PACK_DECLARE(da, STR_VOICE_DANISH);

38 changes: 21 additions & 17 deletions radio/src/translations/tts/tts_de.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ enum GermanPrompts {
DE_PROMPT_MINUS,
};

static inline bool hasDualUnits(uint8_t unit) { // true if unit has a secondary unit for value 1
static inline bool hasDualUnits(uint8_t unit) { // true if unit has a secondary unit for value 1
return (unit == UNIT_HOURS || // example with sec. unit: "null Stunden", "eine Stunde", "zwei Stunden", ...
unit == UNIT_MINUTES || // exmple without sec. unit "null Volt", "ein Volt", "zwei Volt", ...
unit == UNIT_SECONDS ||
unit == UNIT_FLOZ ||
unit == UNIT_SECONDS ||
unit == UNIT_FLOZ ||
unit == UNIT_MS ||
unit == UNIT_US ||
unit == UNIT_MPH ||
Expand Down Expand Up @@ -66,19 +66,23 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
int8_t mode = MODE(att);

if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}

div_t qr = div((int)number, 10);

if (qr.rem > 0) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(DE_PROMPT_COMMA);
PUSH_NUMBER_PROMPT(DE_PROMPT_NUMBERS_BASE + qr.rem);

if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1; // force secondary unit if unit has one
// skips the following integer processing
// skips the following integer processing
}
else {
number = qr.quot; // no remainder, continue with integer part
Expand All @@ -90,23 +94,23 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(DE_PROMPT_TAUSEND);
number %= 1000;
if (number == 0)
number = -1;
number = -1;
}

if ((number >= 1000) && (number < 2000)) {
PUSH_NUMBER_PROMPT(DE_PROMPT_EIN);
PUSH_NUMBER_PROMPT(DE_PROMPT_TAUSEND);
number %= 1000;
if (number == 0)
number = -1;
number = -1;
}

if ((number >= 200) && (number < 1000)) {
PUSH_NUMBER_PROMPT(DE_PROMPT_NULL + number / 100);
PUSH_NUMBER_PROMPT(DE_PROMPT_HUNDERT);
PUSH_NUMBER_PROMPT(DE_PROMPT_HUNDERT);
number %= 100;
if (number == 0)
number = -1;
number = -1;
}

if ((number >= 100) && (number < 200)) {
Expand All @@ -120,7 +124,7 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
if (number >= 0) {
if (number == 1) {
if(unit) {
if(hasDualUnits(unit) && unit != UNIT_RADIANS)
if(hasDualUnits(unit) && unit != UNIT_RADIANS)
PUSH_NUMBER_PROMPT(DE_PROMPT_EINE); // value is 1, has unit and unit has secondary unit -> "eine",
// except radians -> "ein"
else
Expand All @@ -129,12 +133,13 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
} else
PUSH_NUMBER_PROMPT(DE_PROMPT_NULL + 1); // value is 1, has no unit -> regular number "eins"
} else
PUSH_NUMBER_PROMPT(DE_PROMPT_NULL + number); // value is not 1, has no unit or unit has
PUSH_NUMBER_PROMPT(DE_PROMPT_NULL + number); // value is not 1, has no unit or unit has
// no secondary unit -> regular number
}

if(unit)
if(unit) {
DE_PUSH_UNIT_PROMPT(unit, number);
}
}

I18N_PLAY_FUNCTION(de, playDuration, int seconds PLAY_DURATION_ATT)
Expand Down Expand Up @@ -165,10 +170,9 @@ I18N_PLAY_FUNCTION(de, playDuration, int seconds PLAY_DURATION_ATT)
if (!IS_PLAY_LONG_TIMER() && seconds > 0) {
if (minutes)
PUSH_NUMBER_PROMPT(DE_PROMPT_UND);

PLAY_NUMBER(seconds, UNIT_SECONDS, 0);
}
}

LANGUAGE_PACK_DECLARE(de, STR_VOICE_DEUTSCH);

11 changes: 8 additions & 3 deletions radio/src/translations/tts/tts_en.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,21 @@ I18N_PLAY_FUNCTION(en, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(EN_PROMPT_MINUS);
number = -number;
}

int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(EN_PROMPT_POINT_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down
20 changes: 11 additions & 9 deletions radio/src/translations/tts/tts_es.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,25 +95,27 @@ I18N_PLAY_FUNCTION(es, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(ES_PROMPT_MENO);
number = -number;
}


int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem > 0) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(ES_PROMPT_VIRGOLA);
if (mode==2 && qr.rem < 10)
PUSH_NUMBER_PROMPT(ES_PROMPT_ZERO);
PLAY_NUMBER(qr.rem, unit, 0);
PLAY_NUMBER(qr.rem, 0, 0);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
PLAY_NUMBER(qr.quot, unit, 0);
number = qr.quot;
}
return;
}

if (number >= 1000) {
Expand Down
12 changes: 8 additions & 4 deletions radio/src/translations/tts/tts_fr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,21 @@ I18N_PLAY_FUNCTION(fr, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS);
number = -number;
}


int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(FR_PROMPT_VIRGULE_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down
12 changes: 8 additions & 4 deletions radio/src/translations/tts/tts_he.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,21 @@ I18N_PLAY_FUNCTION(he, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(HE_PROMPT_MINUS);
number = -number;
}


int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(HE_PROMPT_POINT_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down
14 changes: 9 additions & 5 deletions radio/src/translations/tts/tts_hu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ enum HungarianPrompts {
HU_PROMPT_MINUS = HU_PROMPT_NUMBERS_BASE+111,
HU_PROMPT_POINT = HU_PROMPT_NUMBERS_BASE+112,
HU_PROMPT_UNITS_BASE = 113,
HU_PROMPT_POINT_BASE = 165, //.0 - .9
HU_PROMPT_POINT_BASE = 167, //.0 - .9
};


Expand All @@ -50,17 +50,21 @@ I18N_PLAY_FUNCTION(hu, playNumber, getvalue_t number, uint8_t unit, uint8_t att)
PUSH_NUMBER_PROMPT(HU_PROMPT_MINUS);
number = -number;
}


int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(HU_PROMPT_POINT_BASE + qr.rem);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
number = -1;
}
else {
Expand Down
13 changes: 8 additions & 5 deletions radio/src/translations/tts/tts_it.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,20 @@ I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att)

int8_t mode = MODE(att);
if (mode > 0) {
uint8_t rem2 = 0;
if (mode == 2) {
number /= 10;
div_t qr2 = div((int)number, 10);
number = qr2.quot;
rem2 = qr2.rem;
}
div_t qr = div((int)number, 10);
if (qr.rem > 0) {
if (qr.rem || (mode == 2 && rem2)) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_NUMBER_PROMPT(IT_PROMPT_VIRGOLA);
if (mode==2 && qr.rem < 10)
PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO);
PLAY_NUMBER(qr.rem, 0, 0);
if (mode == 2 && rem2) {
PLAY_NUMBER(rem2, 0, 0);
}
}
else {
if (qr.quot==1) {
Expand Down Expand Up @@ -180,4 +184,3 @@ I18N_PLAY_FUNCTION(it, playDuration, int seconds PLAY_DURATION_ATT)
}

LANGUAGE_PACK_DECLARE(it, STR_VOICE_ITALIANO);

Loading