diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index c61117021..0e15ee197 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -3,7 +3,7 @@ include(Bitmaps) set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S NV14) set(RADIO_LANGUAGES CN CZ DA DE EN ES FI FR IT JP PT SK SE PL HU NL TW) -set(TTS_LANGUAGES CN CZ DA DE EN ES FR IT JP PT SK SE PL HU NL RU) +set(TTS_LANGUAGES CN CZ DA DE EN ES FR HE IT JP PT SK SE PL HU NL RU) set(PCB "X9D+" CACHE STRING "Radio type, one of: ${PCB_TYPES}") set_property(CACHE PCB PROPERTY STRINGS ${PCB_TYPES}) diff --git a/radio/src/translations.h b/radio/src/translations.h index c1e878ba6..6cab60af0 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -848,6 +848,7 @@ extern const LanguagePack seLanguagePack; extern const LanguagePack skLanguagePack; extern const LanguagePack cnLanguagePack; extern const LanguagePack jpLanguagePack; +extern const LanguagePack heLanguagePack; extern const LanguagePack * const languagePacks[]; #if defined(LANGUAGE_PACKS_DEFINITION) @@ -860,6 +861,7 @@ const LanguagePack * const languagePacks[] = { &enLanguagePack, &esLanguagePack, &frLanguagePack, + &heLanguagePack, &huLanguagePack, &itLanguagePack, &jpLanguagePack, diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 3fef65c82..cb423e216 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -1253,6 +1253,7 @@ #define TR_VOICE_SWEDISH "瑞典语" #define TR_VOICE_TAIWANESE "中文-台湾国语" #define TR_VOICE_JAPANESE "日文" +#define TR_VOICE_HEBREW "希伯来语" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 045e36596..d55a4dab3 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -1255,6 +1255,7 @@ #define TR_VOICE_SWEDISH "Švédština" #define TR_VOICE_TAIWANESE "Tchajwanština" #define TR_VOICE_JAPANESE "Japonština" +#define TR_VOICE_HEBREW "Hebrejština" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index d31b235e3..bfa19726e 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -1268,6 +1268,7 @@ #define TR_VOICE_SWEDISH "Svensk" #define TR_VOICE_TAIWANESE "Taiwanesisk" #define TR_VOICE_JAPANESE "Japansk" +#define TR_VOICE_HEBREW "Hebraisk" #define TR_USBJOYSTICK_LABEL "USB joystik" #define TR_USBJOYSTICK_EXTMODE "Tilstand" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 346132cf1..d46262693 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -1254,6 +1254,7 @@ #define TR_VOICE_SWEDISH "Schwedisch" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanisch" +#define TR_VOICE_HEBREW "Hebräisch" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index c01eadbf3..ea834ddd5 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -1247,6 +1247,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Hebrew" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 3174b4494..a6fedaedf 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -1258,6 +1258,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Hebreo" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index b0b3d22af..688329312 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -1271,6 +1271,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Heprealainen" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index bfe3e0185..a1742e244 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -1275,6 +1275,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Hébreu" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 4542db6d8..10c5da8e6 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -1252,6 +1252,7 @@ #define TR_VOICE_SWEDISH "Svedese" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Giapponese" +#define TR_VOICE_HEBREW "Ebraico" #define TR_USBJOYSTICK_LABEL "Joystick USB" #define TR_USBJOYSTICK_EXTMODE "Modo" diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index b65c88f56..9068d409b 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -1248,6 +1248,7 @@ #define TR_VOICE_SWEDISH "スウェーデン-SV" #define TR_VOICE_TAIWANESE "中文-TW" #define TR_VOICE_JAPANESE "日本-JP" +#define TR_VOICE_HEBREW "ヘブライ語" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index 07fe6a027..14d9ec78b 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -1268,6 +1268,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Hebreeuws" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 25d1fa088..e6dc5c376 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -1252,6 +1252,7 @@ #define TR_VOICE_SWEDISH "Szwedzki" #define TR_VOICE_TAIWANESE "Tajwański" #define TR_VOICE_JAPANESE "Japonês" +#define TR_VOICE_HEBREW "Hebrajski" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index a939edc0f..3721e1795 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -1261,6 +1261,7 @@ #define TR_VOICE_SWEDISH "Swedish" #define TR_VOICE_TAIWANESE "Taiwanese" #define TR_VOICE_JAPANESE "Japanese" +#define TR_VOICE_HEBREW "Hebraico" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 051e665b7..7777cb85b 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -1292,6 +1292,7 @@ #define TR_VOICE_SWEDISH "Svenska" #define TR_VOICE_TAIWANESE "Taiwanesiska" #define TR_VOICE_JAPANESE "Japanska" +#define TR_VOICE_HEBREW "Hebreiska" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Läge" diff --git a/radio/src/translations/tts_he.cpp b/radio/src/translations/tts_he.cpp new file mode 100644 index 000000000..ecf578b2d --- /dev/null +++ b/radio/src/translations/tts_he.cpp @@ -0,0 +1,133 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "opentx.h" + +enum HebrewPrompts { + HE_PROMPT_NUMBERS_BASE = 0, + HE_PROMPT_ZERO = HE_PROMPT_NUMBERS_BASE+0, //02-99 + HE_PROMPT_HUNDRED = HE_PROMPT_NUMBERS_BASE+100, //100,200 .. 900 + HE_PROMPT_THOUSAND = HE_PROMPT_NUMBERS_BASE+109, //1000 + HE_PROMPT_AND = HE_PROMPT_NUMBERS_BASE+110, + HE_PROMPT_MINUS = HE_PROMPT_NUMBERS_BASE+111, + HE_PROMPT_POINT = HE_PROMPT_NUMBERS_BASE+112, + HE_PROMPT_UNITS_BASE = 113, + HE_PROMPT_POINT_BASE = 167, //.0 - .9 +}; + + + #define HE_PUSH_UNIT_PROMPT(u, p) he_pushUnitPrompt((u), (p), id) + +I18N_PLAY_FUNCTION(he, pushUnitPrompt, uint8_t unitprompt, int16_t number) +{ + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +} + +I18N_PLAY_FUNCTION(he, playNumber, getvalue_t number, uint8_t unit, uint8_t att) +{ + if (number < 0) { + PUSH_NUMBER_PROMPT(HE_PROMPT_MINUS); + number = -number; + } + + + int8_t mode = MODE(att); + if (mode > 0) { + if (mode == 2) { + number /= 10; + } + div_t qr = div((int)number, 10); + if (qr.rem) { + PLAY_NUMBER(qr.quot, 0, 0); + PUSH_NUMBER_PROMPT(HE_PROMPT_POINT_BASE + qr.rem); + number = -1; + } + else { + number = qr.quot; + } + } + + int16_t tmp = number; + + if (number >= 1000) { + PLAY_NUMBER(number / 1000, 0, 0); + PUSH_NUMBER_PROMPT(HE_PROMPT_THOUSAND); + number %= 1000; + if (number == 0) + number = -1; + } + if (number >= 100) { + PUSH_NUMBER_PROMPT(HE_PROMPT_HUNDRED + (number/100)-1); + number %= 100; + if (number == 0) + number = -1; + } + if (number >= 0) { + PUSH_NUMBER_PROMPT(HE_PROMPT_ZERO + number); + } + + if (unit) { + HE_PUSH_UNIT_PROMPT(unit, tmp); + } +} + +I18N_PLAY_FUNCTION(he, playDuration, int seconds PLAY_DURATION_ATT) +{ + if (seconds == 0) { + PLAY_NUMBER(seconds, 0, 0); + return; + } + + if (seconds < 0) { + PUSH_NUMBER_PROMPT(HE_PROMPT_MINUS); + seconds = -seconds; + } + + int hours, minutes; + hours = seconds / 3600; + seconds = seconds % 3600; + minutes = seconds / 60; + seconds = seconds % 60; + + if (IS_PLAY_LONG_TIMER() && seconds >= 30) { + minutes += 1; + } + + if (hours > 0 || IS_PLAY_TIME()) { + PLAY_NUMBER(hours, UNIT_HOURS, 0); + } + + if (minutes > 0) { + PLAY_NUMBER(minutes, UNIT_MINUTES, 0); + } + + if (!IS_PLAY_LONG_TIMER() && seconds > 0) { + if (minutes) + PUSH_NUMBER_PROMPT(HE_PROMPT_AND); + PLAY_NUMBER(seconds, UNIT_SECONDS, 0); + } +} + +LANGUAGE_PACK_DECLARE(he, TR_VOICE_HEBREW); + diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index e4d29dba1..37181d01b 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -1251,6 +1251,7 @@ #define TR_VOICE_SWEDISH "瑞典語" #define TR_VOICE_TAIWANESE "中文-台灣國語" #define TR_VOICE_JAPANESE "日文" +#define TR_VOICE_HEBREW "希伯來語" #define TR_USBJOYSTICK_LABEL "USB Joystick" #define TR_USBJOYSTICK_EXTMODE "Mode"