From d0bee7d66679b28f4e86ff623b64b751abb75fea Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 8 Jul 2015 23:58:05 +0200 Subject: [PATCH] Nederlands added --- .../src/firmwares/opentx/opentxinterface.h | 23 +- .../opentx/simulator/opentxsimulator.cpp | 11 +- radio/src/Makefile | 11 +- radio/src/gui/Taranis/menu_general.cpp | 2 + radio/src/translations/.gitignore | 1 + radio/src/translations/nl.h.txt | 1121 +++++++++++++++++ radio/src/translations/tts_nl.cpp | 225 ++++ radio/util/translate.py | 2 + 8 files changed, 1377 insertions(+), 19 deletions(-) create mode 100755 radio/src/translations/nl.h.txt create mode 100755 radio/src/translations/tts_nl.cpp diff --git a/companion/src/firmwares/opentx/opentxinterface.h b/companion/src/firmwares/opentx/opentxinterface.h index 70c008e32..d0ab7f7d2 100644 --- a/companion/src/firmwares/opentx/opentxinterface.h +++ b/companion/src/firmwares/opentx/opentxinterface.h @@ -89,26 +89,27 @@ class OpenTxFirmware: public Firmware { Firmware(id, name, board, new OpenTxEepromInterface(board)) { addLanguage("en"); + addLanguage("cz"); + addLanguage("de"); + addLanguage("es"); addLanguage("fr"); addLanguage("it"); - addLanguage("de"); - addLanguage("se"); - addLanguage("cz"); - addLanguage("es"); + addLanguage("nl"); addLanguage("pl"); addLanguage("pt"); + addLanguage("se"); addTTSLanguage("en"); - addTTSLanguage("fr"); - addTTSLanguage("it"); - addTTSLanguage("de"); - addTTSLanguage("se"); addTTSLanguage("cz"); - addTTSLanguage("sk"); + addTTSLanguage("es"); + addTTSLanguage("fr"); + addTTSLanguage("hu"); + addTTSLanguage("it"); + addTTSLanguage("nl"); addTTSLanguage("pl"); addTTSLanguage("pt"); - addTTSLanguage("es"); - addTTSLanguage("hu"); + addTTSLanguage("se"); + addTTSLanguage("sk"); } virtual Firmware * getFirmwareVariant(const QString & id); diff --git a/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp b/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp index 7098c9cef..e659ba799 100644 --- a/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp +++ b/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp @@ -265,13 +265,14 @@ namespace NAMESPACE { #include "radio/src/translations/tts_cz.cpp" #include "radio/src/translations/tts_de.cpp" #include "radio/src/translations/tts_es.cpp" -#include "radio/src/translations/tts_se.cpp" -#include "radio/src/translations/tts_it.cpp" #include "radio/src/translations/tts_fr.cpp" -#include "radio/src/translations/tts_pt.cpp" -#include "radio/src/translations/tts_sk.cpp" -#include "radio/src/translations/tts_pl.cpp" #include "radio/src/translations/tts_hu.cpp" +#include "radio/src/translations/tts_it.cpp" +#include "radio/src/translations/tts_nl.cpp" +#include "radio/src/translations/tts_pl.cpp" +#include "radio/src/translations/tts_pt.cpp" +#include "radio/src/translations/tts_se.cpp" +#include "radio/src/translations/tts_sk.cpp" #endif #if defined(LUA) diff --git a/radio/src/Makefile b/radio/src/Makefile index 8cc747757..7de64a557 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -238,7 +238,7 @@ TX_CADDY = NO IRPROTOS = NO # TRANSLATIONS -# Values = cz, de, en, fi, fr, it, se, es, pl, pt +# Values = cz, de, en, fi, fr, it, se, es, pl, pt, nl TRANSLATIONS = EN # TTS @@ -1043,7 +1043,7 @@ TARGET = opentx # List C++ source files here. (C dependencies are automatically generated.) ifeq ($(PCB), $(filter $(PCB), SKY9X 9XRPRO TARANIS)) - TTS_SRC = translations/tts_cz.cpp translations/tts_de.cpp translations/tts_en.cpp translations/tts_es.cpp translations/tts_fr.cpp translations/tts_it.cpp translations/tts_pt.cpp translations/tts_sk.cpp translations/tts_se.cpp translations/tts_pl.cpp translations/tts_hu.cpp + TTS_SRC = translations/tts_cz.cpp translations/tts_de.cpp translations/tts_en.cpp translations/tts_es.cpp translations/tts_fr.cpp translations/tts_it.cpp translations/tts_nl.cpp translations/tts_pt.cpp translations/tts_sk.cpp translations/tts_se.cpp translations/tts_pl.cpp translations/tts_hu.cpp else STD_TTS_SRC = translations/tts_$(shell sh -c "echo $(TTS) | tr '[:upper:]' '[:lower:]'").cpp TTS_SRC = $(shell sh -c "if test -f $(STD_TTS_SRC); then echo $(STD_TTS_SRC); else echo translations/tts_en.cpp; fi") @@ -1451,7 +1451,7 @@ bootloader.lbm: mv bootflash4.lbm $@ endif -tra: translations/en.h translations/cz.h translations/de.h translations/es.h translations/fi.h translations/fr.h translations/it.h translations/pl.h translations/pt.h translations/se.h +tra: translations/en.h translations/cz.h translations/de.h translations/es.h translations/fi.h translations/fr.h translations/it.h translations/nl.h translations/pl.h translations/pt.h translations/se.h lbm: fonts bitmaps elf: $(TARGET).elf @@ -1509,6 +1509,11 @@ translations/it.h: translations/it.h.txt @echo "Create Italian language specific header files" $(TRANSLATE) translations/it.h.txt translations/it.h it +translations/nl.h: translations/nl.h.txt + @echo + @echo "Create Nederlands language specific header files" + $(TRANSLATE) translations/nl.h.txt translations/nl.h nl + translations/pl.h: translations/pl.h.txt @echo @echo "Create Polish language specific header files" diff --git a/radio/src/gui/Taranis/menu_general.cpp b/radio/src/gui/Taranis/menu_general.cpp index f49703291..392edfe09 100755 --- a/radio/src/gui/Taranis/menu_general.cpp +++ b/radio/src/gui/Taranis/menu_general.cpp @@ -42,6 +42,7 @@ extern LP_CONST LanguagePack esLanguagePack; extern LP_CONST LanguagePack frLanguagePack; extern LP_CONST LanguagePack deLanguagePack; extern LP_CONST LanguagePack itLanguagePack; +extern LP_CONST LanguagePack nlLanguagePack; extern LP_CONST LanguagePack plLanguagePack; extern LP_CONST LanguagePack ptLanguagePack; extern LP_CONST LanguagePack skLanguagePack; @@ -57,6 +58,7 @@ const LanguagePack * LP_CONST languagePacks[] = { &frLanguagePack, &huLanguagePack, &itLanguagePack, + &nlLanguagePack, &plLanguagePack, &ptLanguagePack, &seLanguagePack, diff --git a/radio/src/translations/.gitignore b/radio/src/translations/.gitignore index f1029c186..e270edda0 100644 --- a/radio/src/translations/.gitignore +++ b/radio/src/translations/.gitignore @@ -5,6 +5,7 @@ /fi.h /fr.h /it.h +/nl.h /pl.h /pt.h /se.h diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt new file mode 100755 index 000000000..5211a5f2d --- /dev/null +++ b/radio/src/translations/nl.h.txt @@ -0,0 +1,1121 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * 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. + * + * !!!!! DO NOT EDIT en.h - EDIT en.h.txt INSTEAD !!!!!!! + * + * In order to make translations easier en.h.txt is parsed and national + * characters are replaced by bitmap codes. The result is en.h. + * See translate.py in the util folder for the list of character codes + * + * !!!!! DO NOT EDIT en.h - EDIT en.h.txt INSTEAD !!!!!!! + */ + + + +/* Formatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline + * \035 -horizontal tab (ARM only) + * \001 to \034 -extended spacing (value * FW/2) + * \0 -ends current string + */ + +// NON ZERO TERMINATED STRINGS +#define LEN_OFFON "\003" +#define TR_OFFON "OFF""ON\0" + +#define LEN_MMMINV "\003" +#define TR_MMMINV "---""INV" + +#define LEN_NCHANNELS "\004" +#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" + +#define LEN_VBEEPMODE "\005" +#define TR_VBEEPMODE "Quiet""Alarm""NoKey""All\0 " + +#define LEN_VBEEPLEN "\005" +#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" + +#define LEN_VRENAVIG "\003" +#define TR_VRENAVIG "No REaREb" + +#define LEN_VBLMODE TR("\004", "\010") +#define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ") + +#define LEN_TRNMODE "\003" +#define TR_TRNMODE "OFF"" +="" :=" + +#define LEN_TRNCHN "\003" +#define TR_TRNCHN "CH1CH2CH3CH4" + +#define LEN_UART3MODES "\015" +#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0" + +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + +#define LEN_POTTYPES "\017" +#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0" + +#define LEN_SLIDERTYPES "\006" +#define TR_SLIDERTYPES "None\0 ""Slider" + +#define LEN_DATETIME "\005" +#define TR_DATETIME "DATE:""TIME:" + +#define LEN_VLCD "\006" +#define TR_VLCD "NormalOptrex" + +#define LEN_VPERSISTENT "\014" +#define TR_VPERSISTENT "OFF\0 ""Flight\0 ""Manual Reset" + +#define LEN_COUNTRYCODES TR("\002", "\007") +#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") + +#define LEN_TARANIS_PROTOCOLS "\004" +#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2" + +#define LEN_XJT_PROTOCOLS "\004" +#define TR_XJT_PROTOCOLS "OFF\0""D16\0""D8\0 ""LR12" + +#define LEN_DSM_PROTOCOLS "\004" +#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" + +#define LEN_VTRIMINC TR("\006", "\013") +#define TR_VTRIMINC TR("Expo\0 ""ExFine""Fine\0 ""Medium""Coarse", "Exponential""Extra Fine\0""Fine\0 ""Medium\0 ""Coarse\0 ") + +#define LEN_VDISPLAYTRIMS "\006" +#define TR_VDISPLAYTRIMS "No\0 ""Change""Yes\0" + +#define LEN_VBEEPCOUNTDOWN "\006" +#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" + +#define LEN_VVARIOCENTER "\006" +#define TR_VVARIOCENTER "Tone\0 ""Silent" + +#define LEN_CURVE_TYPES "\010" +#define TR_CURVE_TYPES "Standard""Custom\0" + +#define LEN_RETA123 "\001" + +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_RETA123 "RETA1234LRLR" +#elif defined(PCBTARANIS) || defined(REVX) + #define TR_RETA123 "RETA123LR" +#elif defined(PCBSKY9X) + #define TR_RETA123 "RETA123a" +#elif defined(CPUM2560) + #define TR_RETA123 "RETA123ab" +#else + #define TR_RETA123 "RETA123" +#endif + +#define LEN_VPROTOS "\006" + +#if defined(PXX) + #define TR_PXX "PXX\0 " +#elif defined(DSM2) || defined(IRPROTOS) + #define TR_PXX "[PXX]\0" +#else + #define TR_PXX +#endif + +#if defined(DSM2) + #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " +#elif defined(IRPROTOS) + #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" +#else + #define TR_DSM2 +#endif + +#if defined(IRPROTOS) + #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" +#else + #define TR_IRPROTOS +#endif + +#if defined(CPUARM) + #define TR_XPPM +#else + #define TR_XPPM "PPM16\0""PPMsim" +#endif + +#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS + +#define LEN_POSNEG "\003" +#define TR_POSNEG "POS""NEG" + +#if defined(PCBSKY9X) && defined(REVX) + #define LEN_VOUTPUT_TYPE "\011" + #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" +#endif + +#define LEN_VCURVEFUNC "\003" +#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" + +#define LEN_VMLTPX "\010" +#define TR_VMLTPX "Add\0 ""Multiply""Replace\0" + +#define LEN_VMLTPX2 "\002" +#define TR_VMLTPX2 "+=""*="":=" + +#define LEN_VMIXTRIMS "\003" +#define TR_VMIXTRIMS "OFF""ON\0""Rud""Ele""Thr""Ail" + +#if LCD_W >= 212 + #define TR_CSWTIMER "Timer" + #define TR_CSWSTICKY "Stcky" + #define TR_CSWRANGE "Range" + #define TR_CSWSTAY "Edge\0" +#else + #define TR_CSWTIMER "Tim\0 " + #define TR_CSWSTICKY "Glue\0" + #if defined(CPUARM) + #define TR_CSWRANGE "Rnge\0" + #define TR_CSWSTAY "Edge\0" + #else + #define TR_CSWRANGE + #define TR_CSWSTAY + #endif +#endif + +#if defined(CPUARM) + #define TR_CSWEQUAL "a=x\0 " +#else + #define TR_CSWEQUAL +#endif + +#define LEN_VCSWFUNC "\005" +#if defined(CPUARM) +#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""ax""|a|b\0 ""ax\0 ""ax""|a|b\0 ""a= 212 + #define TR_SF_SAFETY "Override\0 " +#elif defined(OVERRIDE_CHANNEL_FUNCTION) + #define TR_SF_SAFETY "Overr.\0 " +#else + #define TR_SF_SAFETY "---\0 " +#endif + +#if defined(PCBTARANIS) + #define TR_SF_SCREENSHOT "Screenshot" +#else + #define TR_SF_SCREENSHOT +#endif + +#define TR_SF_RESERVE "[reserve]\0" + +#if defined(CPUARM) + #define TR_VFSWFUNC TR_SF_SAFETY "Trainer\0 ""Inst. Trim""Reset\0 ""Set \0 " TR_ADJUST_GVAR "Volume\0 " "SetFailsfe" "RangeCheck" "ModuleBind" TR_SOUND TR_PLAY_TRACK TR_PLAY_VALUE TR_SF_RESERVE TR_SF_PLAY_SCRIPT TR_SF_RESERVE TR_SF_BG_MUSIC TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_SF_SCREENSHOT TR_SF_TEST +#elif defined(PCBGRUVIN9X) + #define TR_VFSWFUNC TR_SF_SAFETY "Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC TR_SDCLOGS "Backlight\0" TR_SF_TEST +#else + #define TR_VFSWFUNC TR_SF_SAFETY "Trainer\0 ""Inst. Trim""Reset\0 " TR_ADJUST_GVAR TR_SOUND TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_VVARIO TR_HAPTIC "Backlight\0" TR_SF_TEST +#endif + +#define LEN_VFSWRESET TR("\004", "\011") + +#if defined(FRSKY) + #define TR_FSW_RESET_TELEM TR("Telm", "Telemetry") +#else + #define TR_FSW_RESET_TELEM +#endif + +#if ROTARY_ENCODERS == 2 + #define TR_FSW_RESET_ROTENC TR("REa\0""REb\0", "RotEnc A\0""RotEnc B\0") +#elif ROTARY_ENCODERS == 1 + #define TR_FSW_RESET_ROTENC TR("R.E.", "RotEnc\0 ") +#else + #define TR_FSW_RESET_ROTENC +#endif + +#if LCD_W >= 212 + #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " +#elif defined(CPUARM) + #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" +#else + #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2" +#endif + +#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC, TR_FSW_RESET_TIMERS "Flight\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC) + +#define LEN_FUNCSOUNDS TR("\004", "\006") +#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") + +#define LEN_VTELEMCHNS TR("\004", "\005") + +#if defined(CPUARM) + #define TR_TELEM_RESERVE TR("[--]", "[---]") + #define TR_TELEM_TIME TR("Time", "Time\0") + #define TR_SWR TR("SWR\0", "SWR\0 ") + #define TR_RX_BATT TR("[NA]", "[NA]\0") + #define TR_A3_A4 TR("A3\0 ""A4\0 ", "A3\0 ""A4\0 ") + #define TR_A3_A4_MIN TR("A3-\0""A4-\0", "A3-\0 ""A4-\0 ") +#else + #define TR_TELEM_RESERVE + #define TR_TELEM_TIME + #define TR_SWR + #define TR_RX_BATT + #define TR_A3_A4 + #define TR_A3_A4_MIN +#endif + +#define TR_ASPD_MAX TR("ASp+", "ASpd+") + +#if LCD_W >= 212 + #define TR_TELEM_RSSI_RX "RSSI\0" +#else + #define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ") +#endif + +#if defined(CPUARM) + #define TR_TELEM_TIMERS TR("Tmr1""Tmr2""Tmr3", "Tmr1\0""Tmr2\0""Tmr3\0") +#else + #define TR_TELEM_TIMERS TR("Tmr1""Tmr2", "Tmr1\0""Tmr2\0") +#endif + +#if LCD_W >= 212 + #define TR_VTELEMCHNS "---\0 ""Batt\0" TR_TELEM_TIME TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_TIMERS TR_SWR "Tx\0 " TR_TELEM_RSSI_RX TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0 ""Rpm\0 ""Fuel\0""T1\0 ""T2\0 ""Spd\0 ""Dist\0""GAlt\0""Cell\0""Cells""Vfas\0""Curr\0""Cnsp\0""Powr\0""AccX\0""AccY\0""AccZ\0""Hdg\0 ""VSpd\0""ASpd\0""dTE\0 " TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0 ""A2-\0 " TR_A3_A4_MIN "Alt-\0""Alt+\0""Rpm+\0""T1+\0 ""T2+\0 ""Spd+\0""Dst+\0" TR_ASPD_MAX "Cell-""Cels-""Vfas-""Curr+""Powr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0 ""Time\0" +#else + #define TR_VTELEMCHNS "---\0""Batt" TR_TELEM_TIME TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_TIMERS TR_SWR "Tx\0 " TR_TELEM_RSSI_RX TR_RX_BATT "A1\0 ""A2\0 " TR_A3_A4 "Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "A1-\0""A2-\0" TR_A3_A4_MIN "Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+" TR_ASPD_MAX "Cel-""Cls-""Vfs-""Cur+""Pwr+" TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE TR_TELEM_RESERVE "Acc\0""Time" +#endif + +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + +#if defined(CPUARM) + #define LEN_VUNITSSYSTEM TR("\006", "\010") + #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") + #define LEN_VTELEMUNIT "\003" + #define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""f/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz" +#else + #if defined(IMPERIAL_UNITS) + #define LENGTH_UNIT LENGTH_UNIT_IMP + #define SPEED_UNIT SPEED_UNIT_IMP + #else + #define LENGTH_UNIT LENGTH_UNIT_METR + #define SPEED_UNIT SPEED_UNIT_METR + #endif + #define LEN_VTELEMUNIT "\003" + #define TR_VTELEMUNIT "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT LENGTH_UNIT "@\0 ""%\0 ""mA\0""mAh""W\0 " +#endif + +#define STR_V (STR_VTELEMUNIT+1) +#define STR_A (STR_VTELEMUNIT+4) + +#define LEN_VALARM "\003" +#define TR_VALARM "---""Yel""Org""Red" + +#define LEN_VALARMFN "\001" +#define TR_VALARMFN "<>" + +#define LEN_VTELPROTO "\007" +#define TR_VTELPROTO "None\0 ""Hub\0 ""WSHHigh" + +#if defined(CPUARM) + #define LEN_AMPSRC TR("\003", "\005") + #define TR_AMPSRC TR("---""A1\0""A2\0""A3\0""A4\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells") + #define LEN_VOLTSRC TR("\003", "\005") + #define TR_VOLTSRC TR("A1\0""A2\0""A3\0""A4\0""FAS""Cel", "A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells") +#else + #define LEN_AMPSRC TR("\003", "\005") + #define TR_AMPSRC TR("---""A1\0""A2\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""FAS\0 ""Cells") +#endif + +#define LEN_VARIOSRC "\004" +#if defined(FRSKY_SPORT) + #define TR_VARIOSRC "VSpd""A1\0 ""A2\0 ""dTE\0" +#else + #define TR_VARIOSRC "Alt\0""Alt+""VSpd""A1\0 ""A2\0" +#endif + +#if defined(CPUARM) + #define LEN_VTELEMSCREENTYPE "\006" + #define TR_VTELEMSCREENTYPE "None\0 ""Nums\0 ""Bars\0 ""Script" +#else + #define LEN_VTELEMSCREENTYPE "\004" + #define TR_VTELEMSCREENTYPE "Nums""Bars" +#endif + +#define LEN_GPSFORMAT "\004" +#define TR_GPSFORMAT "DMS\0""NMEA" + +#define LEN2_VTEMPLATES 13 +#define LEN_VTEMPLATES "\015" +#define TR_VTEMPLATES "Clear Mixes\0\0""Simple 4-CH \0""Sticky-T-Cut\0""V-Tail \0""Elevon\\Delta\0""eCCPM \0""Heli Setup \0""Servo Test \0" + +#define LEN_VSWASHTYPE "\004" +#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0" + +#define LEN_VKEYS "\005" +#define TR_VKEYS TR("Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0", "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus") + +#define LEN_VRENCODERS "\003" +#define TR_VRENCODERS "REa""REb" + +#define LEN_VSWITCHES "\003" +#define LEN_VSRCRAW "\004" + +#define TR_STICKS_VSRCRAW TR("Rud\0""Ele\0""Thr\0""Ail\0", "\307Rud""\307Ele""\307Thr""\307Ail") +#define TR_TRIMS_VSRCRAW TR("TrmR""TrmE""TrmT""TrmA", "\313Rud""\313Ele""\313Thr""\313Ail") + +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_POTS_VSRCRAW "\310F1\0""\310F2\0""\310F3\0""\310F4\0""\311S1\0""\311S2\0""\311LS\0""\311RS\0" + #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0" +#elif defined(PCBTARANIS) + #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0" + #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0" +#else + #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " + #define TR_SW_VSRCRAW "3POS" + #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" +#endif + +#if defined(CPUARM) + #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12""L13""L14""L15""L16""L17""L18""L19""L20""L21""L22""L23""L24""L25""L26""L27""L28""L29""L30""L31""L32" +#else + #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" +#endif + +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") + +#if defined(PCBSKY9X) + #define TR_ROTARY_ENCODERS "REa\0" + #define TR_ROTENC_SWITCHES "REa" +#elif defined(PCBGRUVIN9X) || defined(PCBMEGA2560) + #define TR_ROTARY_ENCODERS "REa\0""REb\0" + #define TR_ROTENC_SWITCHES "REa""REb" +#else + #define TR_ROTARY_ENCODERS + #define TR_ROTENC_SWITCHES +#endif + +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" +#else + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#endif + +#if defined(HELI) + #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" +#else + #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" +#endif + +#if defined(CPUARM) + #define TR_RESERVE_VSRCRAW "[--]" + #define TR_EXTRA_VSRCRAW "Batt""Time" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3" +#else + #define TR_EXTRA_VSRCRAW +#endif + +#define TR_VSRCRAW "---\0" TR_STICKS_VSRCRAW TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW TR_TRIMS_VSRCRAW TR_SW_VSRCRAW TR_EXTRA_VSRCRAW + +#define LEN_VTMRMODES "\003" +#define TR_VTMRMODES "OFF""ON\0""THs""TH%""THt" + +#define LEN_VTRAINERMODES "\022" +#define TR_VTRAINERMODES "Master/Jack\0 ""Slave/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0" + +#define LEN_VFAILSAFE "\011" +#define TR_VFAILSAFE "Not set\0 ""Hold\0 ""Custom\0 ""No pulses""Receiver\0" + +#if defined(MAVLINK) + #define LEN_MAVLINK_BAUDS "\006" + #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" + #define LEN_MAVLINK_AC_MODES "\011" + #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " + #define LEN_MAVLINK_AP_MODES "\015" + #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " +#endif + +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + +// ZERO TERMINATED STRINGS +#if defined(COLORLCD) + #define INDENT "\007" + #define LEN_INDENT 1 + #define INDENT_WIDTH 12 + #define BREAKSPACE "\036" +#else + #define INDENT "\001" + #define LEN_INDENT 1 + #define INDENT_WIDTH (FW/2) + #define BREAKSPACE " " +#endif + +#if defined(PCBTARANIS) + #define TR_ENTER "[ENTER]" +#else + #define TR_ENTER "[MENU]" +#endif + +#define TR_EXIT "[EXIT]" + +#if defined(PCBTARANIS) + #define TR_POPUPS TR_EXIT "\010" "\010" "\010" "\010" TR_ENTER +#else + #define TR_POPUPS TR_ENTER "\010" TR_EXIT + #define OFS_EXIT sizeof(TR_ENTER) +#endif + +#define TR_MENUWHENDONE CENTER "\006" TR_ENTER " WHEN DONE" +#define TR_FREE "free" +#define TR_DELETEMODEL "DELETE" BREAKSPACE "MODEL" +#define TR_COPYINGMODEL "Copying model..." +#define TR_MOVINGMODEL "Moving model..." +#define TR_LOADINGMODEL "Loading model..." +#define TR_NAME "Name" +#define TR_MODELNAME "Model Name" +#define TR_PHASENAME "Mode Name" +#define TR_MIXNAME "Mix Name" +#define TR_INPUTNAME "Input Name" +#if defined(VIRTUALINPUTS) + #define TR_EXPONAME "Line Name" +#else + #define TR_EXPONAME "Expo Name" +#endif +#define TR_BITMAP "Model Image" +#define TR_TIMER TR("Timer", "Timer ") +#define TR_ELIMITS TR("E.Limits", "Extended Limits") +#define TR_ETRIMS TR("E.Trims", "Extended Trims") +#define TR_TRIMINC "Trim Step" +#define TR_DISPLAY_TRIMS TR("Show Trims", "Display Trims") +#define TR_TTRACE TR("T-Source", INDENT "Source") +#define TR_TTRIM TR("T-Trim", INDENT "Trim Idle Only") +#define TR_BEEPCTR TR("Ctr Beep", "Center Beep") +#define TR_USE_GLOBAL_FUNCS TR("Glob.Funcs", "Use Global Funcs") +#if defined(PCBSKY9X) && defined(REVX) + #define TR_OUTPUT_TYPE INDENT "Output" +#endif +#define TR_PROTO TR(INDENT "Proto", INDENT "Protocol") +#if defined(CPUARM) + #define TR_PPMFRAME INDENT "PPM frame" +#else + #define TR_PPMFRAME "PPM frame" +#endif +#define TR_MS "ms" +#define TR_SWITCH "Switch" +#define TR_TRIMS "Trims" +#define TR_FADEIN "Fade In" +#define TR_FADEOUT "Fade Out" +#define TR_DEFAULT "(default)" +#define TR_CHECKTRIMS CENTER "\006Check\012Trims" +#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) +#define TR_SWASHTYPE "Swash Type" +#define TR_COLLECTIVE TR("Collective", "Coll. pitch source") +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" +#define TR_SWASHRING "Swash Ring" +#define TR_ELEDIRECTION "ELE Direction" +#define TR_AILDIRECTION "AIL Direction" +#define TR_COLDIRECTION "PIT Direction" +#define TR_MODE INDENT "Mode" +#define TR_NOFREEEXPO "No free expo!" +#define TR_NOFREEMIXER "No free mixer!" +#define TR_INSERTMIX "INSERT MIX " +#define TR_EDITMIX "EDIT MIX " +#define TR_SOURCE INDENT "Source" +#define TR_WEIGHT "Weight" +#define TR_EXPO TR("Expo", "Exponential") +#define TR_SIDE "Side" +#define TR_DIFFERENTIAL "Differ" +#define TR_OFFSET INDENT "Offset" +#define TR_TRIM "Trim" +#define TR_DREX "DRex" +#define DREX_CHBOX_OFFSET 30 +#define TR_CURVE "Curve" +#define TR_FLMODE TR("Mode", "Modes") +#define TR_MIXWARNING "Warning" +#define TR_OFF "OFF" +#define TR_MULTPX "Multpx" +#define TR_DELAYDOWN "Delay Dn" +#define TR_DELAYUP "Delay Up" +#define TR_SLOWDOWN "Slow Dn" +#define TR_SLOWUP "Slow Up" +#define TR_MIXER "MIXER" +#define TR_CV "CV" +#define TR_GV "GV" +#define TR_ACHANNEL "A\004channel" +#define TR_RANGE INDENT "Range" +#define TR_CENTER INDENT "Center" +#define TR_BAR "Bar" +#define TR_ALARM INDENT "Alarm" +#define TR_USRDATA TR("UsrData","User Data") +#define TR_BLADES INDENT "Blades" +#define TR_SCREEN "Screen\001" +#define TR_SOUND_LABEL "Sound" +#define TR_LENGTH INDENT "Length" +#define TR_BEEP_LENGTH INDENT "Beep Length" +#define TR_SPKRPITCH INDENT "Beep Pitch" +#define TR_HAPTIC_LABEL "Haptic" +#define TR_HAPTICSTRENGTH INDENT "Strength" +#define TR_CONTRAST "Contrast" +#define TR_ALARMS_LABEL "Alarms" +#define TR_BATTERY_RANGE TR("Battery range","Battery meter range") +#define TR_BATTERYWARNING INDENT "Battery Low" +#define TR_INACTIVITYALARM INDENT "Inactivity" +#define TR_MEMORYWARNING INDENT "Memory Low" +#define TR_ALARMWARNING INDENT "Sound Off" +#define TR_RENAVIG "RotEnc Navig" +#define TR_THROTTLE_LABEL "Throttle" +#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP TR(INDENT "Minute", INDENT "Minute call") +#define TR_BEEPCOUNTDOWN INDENT "Countdown" +#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistent") +#define TR_BACKLIGHT_LABEL "Backlight" +#define TR_BLDELAY INDENT "Duration" +#define TR_BLONBRIGHTNESS INDENT "ON Brightness" +#define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness" +#define TR_BLCOLOR INDENT "Color" +#define TR_SPLASHSCREEN "Splash screen" +#define TR_THROTTLEWARNING TR(IF_CPUARM(INDENT) "T-Warning", INDENT "Throttle State") +#define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "S-Warning", INDENT "Switch Positions") +#define TR_POTWARNING TR(IF_CPUARM(INDENT) "Pot Warn.", INDENT "Pot Positions") +#define TR_TIMEZONE TR("Time Zone", INDENT "Time zone") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" +#define TR_RXCHANNELORD TR("Rx Channel Ord", "Default channel order") +#define TR_STICKS "Sticks" +#define TR_POTS "Pots" +#define TR_SWITCHES "Switches" +#define TR_SWITCHES_DELAY TR("Play delay", "Play Delay (sw. mid pos)") +#define TR_SLAVE CENTER "Slave" +#define TR_MODESRC "Mode\006% Source" +#define TR_MULTIPLIER "Multiplier" +#define TR_CAL "Cal" +#define TR_VTRIM "Trim- +" +#define TR_BG "BG:" +#if defined(COLORLCD) + #define TR_MENUTOSTART TR_ENTER " TO START" + #define TR_SETMIDPOINT "CENTER STICKS/SLIDERS" + #define TR_MOVESTICKSPOTS "MOVE STICKS/POTS" +#else + #define TR_MENUTOSTART CENTER "\010" TR_ENTER " TO START" + #define TR_SETMIDPOINT TR(CENTER "\004SET STICKS MIDPOINT", CENTER "\004CENTER STICKS/SLIDERS") + #define TR_MOVESTICKSPOTS CENTER "\006MOVE STICKS/POTS" +#endif +#define TR_RXBATT "Rx Batt:" +#define TR_TXnRX "Tx:\0Rx:" +#define OFS_RX 4 +#define TR_ACCEL "Acc:" +#define TR_NODATA CENTER "NO DATA" +#define TR_TOTTM1TM2THRTHP "\037\146TOT\036TM1\037\146TM2\036THR\037\146TH%" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" + +#if defined(CPUARM) + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" +#else + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" +#endif + +#define TR_MENUTORESET CENTER TR_ENTER " to reset" +#define TR_PPM_TRAINER "TR" +#define TR_CH "CH" +#define TR_MODEL "MODEL" +#define TR_FP "FM" +#define TR_MIX "MIX" +#define TR_EEPROMLOWMEM "EEPROM low mem" +#define TR_ALERT "\016ALERT" +#define TR_PRESSANYKEYTOSKIP "Press any key to skip" +#define TR_THROTTLENOTIDLE "Throttle not idle" +#define TR_ALARMSDISABLED "Alarms Disabled" +#define TR_PRESSANYKEY TR("\010Press any Key", "Press any Key") +#define TR_BADEEPROMDATA "Bad EEprom Data" +#define TR_EEPROMFORMATTING "Formatting EEPROM" +#define TR_EEPROMOVERFLOW "EEPROM overflow" +#define TR_MENURADIOSETUP "RADIO SETUP" +#define TR_MENUDATEANDTIME "DATE AND TIME" +#define TR_MENUTRAINER "TRAINER" +#define TR_MENUGLOBALFUNCS "GLOBAL FUNCTIONS" +#define TR_MENUVERSION "VERSION" +#define TR_MENUDIAG TR("SWITCHES", "SWITCH TEST") +#define TR_MENUANA TR("ANAS", "ANALOG INPUTS") +#define TR_MENUCALIBRATION "CALIBRATION" +#if defined(COLORLCD) + #define TR_TRIMS2OFFSETS "Trims >> Subtrims" +#else + #define TR_TRIMS2OFFSETS "\006Trims => Subtrims" +#endif +#define TR_MENUMODELSEL TR("MODELSEL", "MODEL SELECTION") +#define TR_MENUSETUP TR("SETUP", "MODEL SETUP") +#define TR_MENUFLIGHTPHASES "FLIGHT MODES" +#define TR_MENUFLIGHTPHASE "FLIGHT MODE" +#define TR_MENUHELISETUP "HELI SETUP" + +#if defined(VIRTUALINPUTS) + #define TR_MENUINPUTS "INPUTS" + #define TR_MENULIMITS "OUTPUTS" +#else + #define TR_MENUINPUTS "STICKS" + #define TR_MENULIMITS "SERVOS" +#endif + +#define TR_MENUCURVES "CURVES" +#define TR_MENUCURVE "CURVE" +#define TR_MENULOGICALSWITCH "LOGICAL SWITCH" +#define TR_MENULOGICALSWITCHES "LOGICAL SWITCHES" +#define TR_MENUCUSTOMFUNC "SPECIAL FUNCTIONS" +#define TR_MENUCUSTOMSCRIPTS "CUSTOM SCRIPTS" +#define TR_MENUCUSTOMSCRIPT "CUSTOM SCRIPT" +#define TR_MENUTELEMETRY "TELEMETRY" +#define TR_MENUTEMPLATES "TEMPLATES" +#define TR_MENUSTAT "STATS" +#define TR_MENUDEBUG "DEBUG" +#if defined(CPUARM) + #define TR_RXNUM TR(INDENT "RxNum", INDENT "Receiver No.") +#else + #define TR_RXNUM "RxNum" +#endif +#define TR_SYNCMENU "[Sync]" +#define TR_LIMIT INDENT "Limit" +#define TR_MINRSSI "Min Rssi" +#define TR_LATITUDE "Latitude" +#define TR_LONGITUDE "Longitude" +#define TR_GPSCOORD TR("GPS Coords", INDENT "Coordinate format") +#define TR_VARIO TR("Vario", "Variometer") +#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" +#define TR_PITCH_AT_MAX INDENT "Pitch at Max" +#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" +#define TR_POWEROFF "\027Power OFF..." +#define TR_SHUTDOWN "SHUTTING DOWN" +#define TR_SAVEMODEL "Saving model settings" +#define TR_BATT_CALIB "Battery Calib" +#define TR_CURRENT_CALIB "Current Calib" +#define TR_VOLTAGE TR(INDENT "Voltage",INDENT "Voltage Source") +#define TR_CURRENT TR(INDENT "Current",INDENT "Current Source") +#define TR_SELECT_MODEL "Select Model" +#define TR_CREATE_MODEL "Create Model" +#define TR_COPY_MODEL "Copy Model" +#define TR_MOVE_MODEL "Move Model" +#define TR_BACKUP_MODEL "Backup Model" +#define TR_DELETE_MODEL "Delete Model" +#define TR_RESTORE_MODEL "Restore Model" +#define TR_SDCARD_ERROR "SD Card Error" +#define TR_NO_SDCARD "No SD Card" +#define TR_SDCARD_FULL "SD Card Full" +#define TR_INCOMPATIBLE "Incompatible" +#define TR_WARNING "WARNING" +#define TR_EEPROMWARN "EEPROM" +#define TR_EEPROM_CONVERTING "Converting EEPROM" +#define TR_THROTTLEWARN "THROTTLE" +#define TR_ALARMSWARN "ALARMS" +#define TR_SWITCHWARN TR("SWITCH","CONTROL") +#define TR_FAILSAFEWARN "FAILSAFE" +#define TR_NO_FAILSAFE "Failsafe not set" +#define TR_KEYSTUCK "Key stuck" +#define TR_INVERT_THR TR("Invert Thr?","Invert Throttle?") +#define TR_SPEAKER_VOLUME INDENT "Volume" // TODO could be TR_VOLUME ? +#define TR_LCD "LCD" +#define TR_BRIGHTNESS INDENT "Brightness" +#define TR_CPU_TEMP "CPU Temp." +#define TR_CPU_CURRENT "Current" +#define TR_CPU_MAH "Consumpt." +#define TR_COPROC "CoProc." +#define TR_COPROC_TEMP "MB Temp." +#define TR_CAPAWARNING INDENT "Capacity Low" +#define TR_TEMPWARNING INDENT "Overheat" +#define TR_FUNC "Func" +#define TR_V1 "V1" +#define TR_V2 "V2" +#define TR_DURATION "Duration" +#define TR_DELAY "Delay" +#define TR_SD_CARD "SD CARD" +#define TR_SDHC_CARD "SD-HC CARD" +#define TR_NO_SOUNDS_ON_SD "No Sounds" BREAKSPACE "on SD" +#define TR_NO_MODELS_ON_SD "No Models" BREAKSPACE "on SD" +#define TR_NO_BITMAPS_ON_SD "No Bitmaps" BREAKSPACE "on SD" +#define TR_NO_SCRIPTS_ON_SD "No Scripts" BREAKSPACE "on SD" +#define TR_PLAY_FILE "Play" +#define TR_DELETE_FILE "Delete" +#define TR_COPY_FILE "Copy" +#define TR_RENAME_FILE "Rename" +#define TR_ASSIGN_BITMAP "Assign Bitmap" +#define TR_EXECUTE_FILE "Execute" +#define TR_REMOVED " removed" +#define TR_SD_INFO "Information" +#define TR_SD_FORMAT "Format" +#define TR_NA "N/A" +#define TR_HARDWARE "HARDWARE" +#define TR_FORMATTING "Formatting..." +#define TR_TEMP_CALIB "Temp. Calib" +#define TR_TIME "Time" +#define TR_BAUDRATE "BT Baudrate" +#define TR_SD_INFO_TITLE "SD INFO" +#define TR_SD_TYPE "Type:" +#define TR_SD_SPEED "Speed:" +#define TR_SD_SECTORS "Sectors:" +#define TR_SD_SIZE "Size:" +#define TR_TYPE INDENT "Type" +#define TR_GLOBAL_VARS "Global Variables" +#define TR_GLOBAL_V "GLOBAL V." +#define TR_GLOBAL_VAR "Global Variable" +#define TR_MENUGLOBALVARS "GLOBAL VARIABLES" +#define TR_OWN "Own" +#define TR_DATE "Date" +#define TR_ROTARY_ENCODER "R.Encs" +#define TR_CHANNELS_MONITOR "CHANNELS MONITOR" +#define TR_MIXERS_MONITOR "MIXERS MONITOR" +#define TR_PATH_TOO_LONG "Path too long" +#define TR_VIEW_TEXT "View text" +#define TR_FLASH_BOOTLOADER "Flash BootLoader" +#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" +#define TR_FLASH_INTERNAL_MODULE "Flash Internal Module" +#define TR_WRITING "\032Writing..." +#define TR_CONFIRM_FORMAT "Confirm Format?" +#define TR_INTERNALRF "Internal RF" +#define TR_EXTERNALRF "External RF" +#define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe mode") +#define TR_FAILSAFESET "FAILSAFE SETTINGS" +#define TR_MENUSENSOR "SENSOR" +#define TR_COUNTRYCODE "Country Code" +#define TR_VOICELANG "Voice Language" +#define TR_UNITSSYSTEM "Units" +#define TR_EDIT "Edit" +#define TR_INSERT_BEFORE "Insert Before" +#define TR_INSERT_AFTER "Insert After" +#define TR_COPY "Copy" +#define TR_MOVE "Move" +#define TR_PASTE "Paste" +#define TR_DELETE "Delete" +#define TR_INSERT "Insert" +#define TR_RESET_FLIGHT "Reset Flight" +#define TR_RESET_TIMER1 "Reset Timer1" +#define TR_RESET_TIMER2 "Reset Timer2" +#define TR_RESET_TIMER3 "Reset Timer3" +#define TR_RESET_TELEMETRY "Reset Telemetry" +#define TR_STATISTICS "Statistics" +#define TR_ABOUT_US "About" +#define TR_AND_SWITCH "AND Switch" +#define TR_SF "SF" +#define TR_GF "GF" +#define TR_SPEAKER INDENT "Speaker" +#define TR_BUZZER INDENT "Buzzer" +#define TR_BYTES "bytes" +#define TR_MODULE_BIND TR("[Bnd]", "[Bind]") +#define TR_MODULE_RANGE TR("[Rng]", "[Range]") +#define TR_RESET_BTN "[Reset]" +#define TR_SET "[Set]" +#define TR_TRAINER "Trainer Port" +#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" +#define TR_MODELIDUSED TR("ID already used","Model ID already used") +#define TR_MODULE INDENT "Module" +#define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") +#define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" +#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." +#define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "Channel Range") +#define TR_LOWALARM INDENT "Low Alarm" +#define TR_CRITICALALARM INDENT "Critical Alarm" +#define TR_ENABLE_POPUP "Enable Popup" +#define TR_DISABLE_POPUP "Disable Popup" +#define TR_CURVE_PRESET "Preset..." +#define TR_PRESET "Preset" +#define TR_MIRROR "Mirror" +#define TR_CLEAR "Clear" +#define TR_RESET "Reset" +#define TR_RESET_SUBMENU "Reset..." +#define TR_COUNT "Count" +#define TR_PT "pt" +#define TR_PTS "pts" +#define TR_SMOOTH "Smooth" +#define TR_COPY_STICKS_TO_OFS "Copy sticks to subtrim" +#define TR_COPY_TRIMS_TO_OFS "Copy trims to subtrim" +#define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "Persistent mAh") +#define TR_PREFLIGHT "Preflight Checks" +#define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display Checklist") +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") +#define TR_UART3MODE "Serial port" +#define TR_SCRIPT "Script" +#define TR_INPUTS "Inputs" +#define TR_OUTPUTS "Outputs" +#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" +#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" + +#if defined(MAVLINK) + #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" + #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" + #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" + #define TR_MAVLINK_BAUD_LABEL "Baudrate" + #define TR_MAVLINK_INFOS "INFOS" + #define TR_MAVLINK_MODE "MODE" + #define TR_MAVLINK_CUR_MODE "Current Mode" + #define TR_MAVLINK_ARMED "Armed" + #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" + #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" + #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" + #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" + #define TR_MAVLINK_NAV_MENU_TITLE "NAV" + #define TR_MAVLINK_COURSE "Course" + #define TR_MAVLINK_HEADING "Heading" + #define TR_MAVLINK_BEARING "Bearing" + #define TR_MAVLINK_ALTITUDE "Altitude" + #define TR_MAVLINK_GPS "GPS" + #define TR_MAVLINK_NO_FIX "NO Fix" + #define TR_MAVLINK_SAT "SAT" + #define TR_MAVLINK_HDOP "HDOP" + #define TR_MAVLINK_LAT "LAT" + #define TR_MAVLINK_LON "LON" +#endif + +// Taranis column headers +#define TR_PHASES_HEADERS { " Name ", " Switch ", " Rudder Trim ", " Elevator Trim ", " Throttle Trim ", " Aileron Trim ", " Fade In ", " Fade Out " } +#define TR_LIMITS_HEADERS { " Name ", " Subtrim ", " Min ", " Max ", " Direction ", " Curve ", " PPM Center ", " Subtrim mode " } +#define TR_CSW_HEADERS { " Function ", " V1 ", " V2 ", " V2 ", " AND Switch ", " Duration ", " Delay " } + +// About screen +#define TR_ABOUTUS TR(" ABOUT ", "ABOUT") + +#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-") +#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no") +#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed") +#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through") +#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!") + +#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" +#define TR_ABOUT_BERTRAND_2 "OpenTX main author" +#define TR_ABOUT_BERTRAND_3 "Companion9x co-author" + +#define TR_ABOUT_MIKE_1 "Mike Blandford" +#define TR_ABOUT_MIKE_2 "Code and drivers guru" +#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best") +#define TR_ABOUT_MIKE_4 "Inspirational" + +#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" +#define TR_ABOUT_ROMOLO_2 "Companion co-author" +#define TR_ABOUT_ROMOLO_3 "" + +#define TR_ABOUT_ANDRE_1 "Andre Bernet" +#define TR_ABOUT_ANDRE_2 "Functionality, usability," +#define TR_ABOUT_ANDRE_3 "debugging, documentation" + +#define TR_ABOUT_ROB_1 "Rob Thomson" +#define TR_ABOUT_ROB_2 "openrcforums webmaster" + +#define TR_ABOUT_KJELL_1 "Kjell Kernen" +#define TR_ABOUT_KJELL_2 "www.open-tx.org main author" +#define TR_ABOUT_KJELL_3 "OpenTX Recorder author" +#define TR_ABOUT_KJELL_4 "Companion contributor" + +#define TR_ABOUT_MARTIN_1 "Martin Hotar" +#define TR_ABOUT_MARTIN_2 "Graphics designer" + +#if defined(PCBTARANIS) + #define TR_ABOUT_HARDWARE_1 "FrSky" + #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" + #define TR_ABOUT_HARDWARE_3 "Firmware contributor" +#else + #define TR_ABOUT_HARDWARE_1 "Brent Nelson" + #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" + #define TR_ABOUT_HARDWARE_3 "" +#endif + +#define TR_ABOUT_PARENTS_1 "Parent projects" +#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)") +#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" +#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" + +#define TR_CHR_SHORT 's' +#define TR_CHR_LONG 'l' +#define TR_CHR_TOGGLE 't' +#define TR_CHR_HOUR 'h' +#define TR_CHR_INPUT 'I' // Values between A-I will work + +#define TR_BEEP_VOLUME "Beep Volume" +#define TR_WAV_VOLUME "Wav Volume" +#define TR_VARIO_VOLUME "Vario Volume" // TODO may be removed +#define TR_BG_VOLUME "Bg Volume" + +#define TR_TOP_BAR "Top Bar" +#define TR_ALTITUDE INDENT "Altitude" +#define TR_SCALE "Scale" +#define TR_VIEW_CHANNELS "View Channels" +#define TR_VIEW_NOTES "View Notes" +#define TR_MODS_FORBIDDEN "Modifications forbidden!" +#define TR_UNLOCKED "Unlocked" +#define TR_ID "ID" +#define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Curr. sensor" +#define TR_AUTOOFFSET "Auto Offset" +#define TR_ONLYPOSITIVE "Positive" +#define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" + +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_LOGICAL_SWITCHES "\312Logical Switches" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" +#define TR_MENU_TELEMETRY "\321Telemetry" +#define TR_MENU_OTHER "Other" +#define TR_MENU_INVERT "Invert" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" diff --git a/radio/src/translations/tts_nl.cpp b/radio/src/translations/tts_nl.cpp new file mode 100755 index 000000000..3fdf70a8f --- /dev/null +++ b/radio/src/translations/tts_nl.cpp @@ -0,0 +1,225 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Bertrand Songis + * - Jean-Pierre van Melis + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * 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 DutchPrompts { + NL_PROMPT_NUMBERS_BASE = 0, + NL_PROMPT_ZERO = NL_PROMPT_NUMBERS_BASE+0, //02-99 + NL_PROMPT_HUNDRED = NL_PROMPT_NUMBERS_BASE+100, //100,200 .. 900 + NL_PROMPT_THOUSAND = NL_PROMPT_NUMBERS_BASE+109, //1000 + NL_PROMPT_AND = NL_PROMPT_NUMBERS_BASE+110, + NL_PROMPT_MINUS = NL_PROMPT_NUMBERS_BASE+111, + NL_PROMPT_POINT = NL_PROMPT_NUMBERS_BASE+112, + NL_PROMPT_UNITS_BASE = 113, + NL_PROMPT_POINT_BASE = 165, //.0 - .9 +}; + +#if defined(VOICE) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#if defined(CPUARM) + #define NL_PUSH_UNIT_PROMPT(p, u) en_pushUnitPrompt((p), (u), id) +#else + #define NL_PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u)) + + + +#endif + +I18N_PLAY_FUNCTION(nl, pushUnitPrompt, int16_t number, uint8_t unitprompt) +{ + if (number == 1) + PUSH_NUMBER_PROMPT(unitprompt); + else + PUSH_NUMBER_PROMPT(unitprompt+1); +} + + + + +I18N_PLAY_FUNCTION(nl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) +{ + + + + + + + + + + + if (number < 0) { + PUSH_NUMBER_PROMPT(NL_PROMPT_MINUS); + number = -number; + } + +#if !defined(CPUARM) + if (unit) { + unit--; + convertUnit(number, unit); + if (IS_IMPERIAL_ENABLE()) { + if (unit == UNIT_DIST) { + unit = UNIT_FEET; + } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } + } + unit++; + } +#endif + + int8_t mode = MODE(att); + if (mode > 0) { +#if defined(CPUARM) + if (mode == 2) { + number /= 10; + } +#else + // we assume that we are PREC1 +#endif + div_t qr = div(number, 10); + if (qr.rem) { + PLAY_NUMBER(qr.quot, 0, 0); + PUSH_NUMBER_PROMPT(NL_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(NL_PROMPT_THOUSAND); + + number %= 1000; + if (number == 0) + number = -1; + } + if (number >= 100) { + + PUSH_NUMBER_PROMPT(NL_PROMPT_HUNDRED + (number/100)-1); + + number %= 100; + if (number == 0) + number = -1; + } + if (number >= 0) { + PUSH_NUMBER_PROMPT(NL_PROMPT_ZERO + number); + } + + + if (unit) { + NL_PUSH_UNIT_PROMPT(tmp, NL_PROMPT_UNITS_BASE + unit*2); + } +} + +I18N_PLAY_FUNCTION(nl, playDuration, int seconds PLAY_DURATION_ATT) +{ + if (seconds == 0) { + PLAY_NUMBER(seconds, 0, 0); + return; + } + + if (seconds < 0) { + PUSH_NUMBER_PROMPT(NL_PROMPT_MINUS); + seconds = -seconds; + } + + + uint8_t tmp = seconds / 3600; + seconds %= 3600; + if (tmp > 0 || IS_PLAY_TIME()) { + PLAY_NUMBER(tmp, UNIT_HOURS, 0); + + } + + tmp = seconds / 60; + seconds %= 60; + if (tmp > 0) { + PLAY_NUMBER(tmp, UNIT_MINUTES, 0); + if (seconds > 0) + + PUSH_NUMBER_PROMPT(NL_PROMPT_AND); + + + + + } + + + if (seconds > 0) { + PLAY_NUMBER(seconds, UNIT_SECONDS, 0); + + + + } +} + +LANGUAGE_PACK_DECLARE(nl, "Nederlands"); + +#endif diff --git a/radio/util/translate.py b/radio/util/translate.py index bad7896ae..d0a6f7958 100644 --- a/radio/util/translate.py +++ b/radio/util/translate.py @@ -109,6 +109,8 @@ translations = {'cz': [('\\200', u'á'), 'en': [], + 'nl': [], + 'all': [('\\306', u'Δ'), ('\\173', u'~'), ('\\036', u'\\n'),