diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index a42ee6058..19bdc7933 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -2,7 +2,7 @@ include(CMakeForceCompiler) include(Bitmaps) set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S SKY9X 9XRPRO AR9X NV14) -set(RADIO_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL CN) +set(RADIO_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL CN TW) set(TTS_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL RU) set(PCB "X9D+" CACHE STRING "Radio type, one of: ${PCB_TYPES}") diff --git a/radio/src/fonts/CMakeLists.txt b/radio/src/fonts/CMakeLists.txt index b9566e3c0..9de1b6acc 100644 --- a/radio/src/fonts/CMakeLists.txt +++ b/radio/src/fonts/CMakeLists.txt @@ -9,11 +9,7 @@ set(CJK_FONT_BOLD "Noto/NotoSansCJKsc-Bold") #set(FONT "Ubuntu/Ubuntu-Regular") #set(FONT_BOLD "Ubuntu/Ubuntu-Bold") -if(TRANSLATIONS STREQUAL CN) - set(subset all) -else() - string(TOLOWER ${TRANSLATIONS} subset) -endif() +string(TOLOWER ${TRANSLATIONS} subset) add_truetype_font_target(9 9 ${subset} none) add_truetype_font_target(13 13 ${subset} none) diff --git a/radio/src/fonts/std/font_04x06_extra.png b/radio/src/fonts/std/font_04x06_extra.png index c8df54ee0..aa90d53ec 100644 Binary files a/radio/src/fonts/std/font_04x06_extra.png and b/radio/src/fonts/std/font_04x06_extra.png differ diff --git a/radio/src/fonts/std/font_05x07_extra.png b/radio/src/fonts/std/font_05x07_extra.png index e71a06b47..8b7cb813d 100644 Binary files a/radio/src/fonts/std/font_05x07_extra.png and b/radio/src/fonts/std/font_05x07_extra.png differ diff --git a/radio/src/fonts/std/font_10x14_extra.png b/radio/src/fonts/std/font_10x14_extra.png index 5050a46e6..77b66edaa 100644 Binary files a/radio/src/fonts/std/font_10x14_extra.png and b/radio/src/fonts/std/font_10x14_extra.png differ diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index db3c29c33..0c2f623b1 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -202,7 +202,7 @@ void getCharPattern(PatternData * pattern, unsigned char c, LcdFlags flags) else { pattern->width = 5; pattern->height = 7; - pattern->data = (c < 0xC0) ? &font_5x7[(c-0x20)*5] : &font_5x7_extra[(c-0xC0)*5]; + pattern->data = &font_5x7[(c - 0x20) * 5]; } #else pattern->width = 5; @@ -218,7 +218,7 @@ uint8_t getCharWidth(char c, LcdFlags flags) return getPatternWidth(&pattern); } -void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags) +void lcdDrawChar(coord_t x, coord_t y, uint8_t c, LcdFlags flags) { const unsigned char * q; @@ -277,16 +277,12 @@ void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags) else #endif { -#if !defined(BOOT) - q = (c < 0x80) ? &font_5x7[(c-0x20)*5] : &font_5x7_extra[(c-0x80)*5]; -#else - q = &font_5x7[(c-0x20)*5]; -#endif + q = &font_5x7[(c - 0x20) * 5]; lcdPutPattern(x, y, q, 5, 7, flags); } } -void lcdDrawChar(coord_t x, coord_t y, char c) +void lcdDrawChar(coord_t x, coord_t y, uint8_t c) { lcdDrawChar(x, y, c, 0); } @@ -713,7 +709,7 @@ void drawSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att) #endif { drawStringWithIndex(x, y, "LUA", qr.quot+1, att); - lcdDrawChar(lcdLastRightPos, y, 'a'+qr.rem, att); + lcdDrawChar(lcdLastRightPos, y, 'a' + qr.rem, att); } } #endif diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index 25a225806..d367f0b14 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -98,8 +98,8 @@ extern coord_t lcdNextPos; extern volatile uint32_t lcdInputs ; #endif -void lcdDrawChar(coord_t x, coord_t y, char c); -void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags); +void lcdDrawChar(coord_t x, coord_t y, uint8_t c); +void lcdDrawChar(coord_t x, coord_t y, uint8_t c, LcdFlags flags); void lcdDrawCenteredText(coord_t y, const char * s, LcdFlags flags = 0); void lcdDrawText(coord_t x, coord_t y, const char * s, LcdFlags flags); void lcdDrawTextAtIndex(coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags); diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp index cd21caeee..cabc266af 100644 --- a/radio/src/gui/212x64/lcd.cpp +++ b/radio/src/gui/212x64/lcd.cpp @@ -214,12 +214,12 @@ void getCharPattern(PatternData * pattern, unsigned char c, LcdFlags flags) else { pattern->width = 5; pattern->height = 7; - pattern->data = (c < 0x80) ? &font_5x7[(c - 0x20) * 5] : &font_5x7_extra[(c - 0x80) * 5]; + pattern->data = &font_5x7[(c - 0x20) * 5]; } #else pattern->width = 5; pattern->height = 7; - pattern->data = &font_5x7[(c-0x20) * 5]; + pattern->data = &font_5x7[(c - 0x20) * 5]; #endif } @@ -230,7 +230,7 @@ uint8_t getCharWidth(char c, LcdFlags flags) return getPatternWidth(&pattern); } -void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags) +void lcdDrawChar(coord_t x, coord_t y, uint8_t c, LcdFlags flags) { lcdNextPos = x - 1; #if defined(BOOT) @@ -243,7 +243,7 @@ void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags) #endif } -void lcdDrawChar(coord_t x, coord_t y, char c) +void lcdDrawChar(coord_t x, coord_t y, uint8_t c) { lcdDrawChar(x, y, c, 0); } diff --git a/radio/src/gui/212x64/lcd.h b/radio/src/gui/212x64/lcd.h index a8880ec90..f8b87552e 100644 --- a/radio/src/gui/212x64/lcd.h +++ b/radio/src/gui/212x64/lcd.h @@ -100,8 +100,8 @@ extern coord_t lcdNextPos; #define DISPLAY_END (displayBuf + DISPLAY_BUFFER_SIZE) #define ASSERT_IN_DISPLAY(p) assert((p) >= displayBuf && (p) < DISPLAY_END) -void lcdDrawChar(coord_t x, coord_t y, char c); -void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags mode); +void lcdDrawChar(coord_t x, coord_t y, uint8_t c); +void lcdDrawChar(coord_t x, coord_t y, uint8_t c, LcdFlags mode); void lcdDrawCenteredText(coord_t y, const char * s, LcdFlags flags = 0); void lcdDrawText(coord_t x, coord_t y, const char * s, LcdFlags mode); void lcdDrawTextAtIndex(coord_t x, coord_t y, const char * s,uint8_t idx, LcdFlags mode); diff --git a/radio/src/gui/colorlcd/lcd.cpp b/radio/src/gui/colorlcd/lcd.cpp index 94b86b23b..f70683f5b 100644 --- a/radio/src/gui/colorlcd/lcd.cpp +++ b/radio/src/gui/colorlcd/lcd.cpp @@ -29,10 +29,7 @@ uint8_t getMappedChar(uint8_t c) { uint8_t result; - if (c < 0x80) - result = c - 0x20; - else - result = c - 0x80 + 32 + 26 + 6 + 26 + 5; // 96; + result = c - 0x20; // TRACE("getMappedChar '%c' (0x%x) = %d", c, c, result); @@ -61,7 +58,7 @@ int getTextWidth(const char * s, int len, LcdFlags flags) int result = 0; for (int i = 0; len == 0 || i < len; ++i) { - unsigned int c = uint8_t(*s); + unsigned c = uint8_t(*s); if (!c) { break; } diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 13c28fae5..b0f916bcc 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -1024,9 +1024,8 @@ void ModelSetupPage::build(FormWindow * window) TimerData * timer = &g_model.timers[i]; // Timer label - char timerLabel[8]; - strAppendStringWithIndex(timerLabel, STR_TIMER, i + 1); - new Subtitle(window, grid.getLineSlot(), timerLabel); + strAppendStringWithIndex(reusableBuffer.moduleSetup.msg, STR_TIMER, i + 1); + new Subtitle(window, grid.getLineSlot(), reusableBuffer.moduleSetup.msg); grid.nextLine(); auto group = new FormGroup(window, grid.getFieldSlot(), FORM_BORDER_FOCUS_ONLY | PAINT_CHILDREN_FIRST); diff --git a/radio/src/gui/common/stdlcd/fonts.cpp b/radio/src/gui/common/stdlcd/fonts.cpp index 18f376bf2..e0641570c 100644 --- a/radio/src/gui/common/stdlcd/fonts.cpp +++ b/radio/src/gui/common/stdlcd/fonts.cpp @@ -22,6 +22,7 @@ const unsigned char font_5x7[] = { #include "font_05x07.lbm" +#include "font_05x07_extra.lbm" #if defined(TRANSLATIONS_DE) #include "font_de_05x07.lbm" #elif defined(TRANSLATIONS_CZ) @@ -129,10 +130,6 @@ const unsigned char font_4x6_extra[] = { #include "font_04x06_extra.lbm" }; -const unsigned char font_5x7_extra[] = { -#include "font_05x07_extra.lbm" -}; - const unsigned char font_10x14_extra[] = { #include "font_10x14_extra.lbm" }; diff --git a/radio/src/gui/common/stdlcd/fonts.h b/radio/src/gui/common/stdlcd/fonts.h index ee880bb05..a6e59c399 100644 --- a/radio/src/gui/common/stdlcd/fonts.h +++ b/radio/src/gui/common/stdlcd/fonts.h @@ -30,7 +30,6 @@ extern const unsigned char font_10x14[]; extern const unsigned char font_4x6[]; extern const unsigned char font_8x10[]; extern const unsigned char font_22x38_num[]; - extern const unsigned char font_5x7_extra[]; extern const unsigned char font_10x14_extra[]; extern const unsigned char font_4x6_extra[]; #endif diff --git a/radio/src/targets/horus/libopenui_config.h b/radio/src/targets/horus/libopenui_config.h index 2182517be..3ea472efe 100644 --- a/radio/src/targets/horus/libopenui_config.h +++ b/radio/src/targets/horus/libopenui_config.h @@ -169,7 +169,7 @@ constexpr LcdFlags MENU_FONT = FONT(STD); constexpr LcdFlags TABLE_HEADER_FONT = FONT(STD); constexpr LcdFlags TABLE_BODY_FONT = FONT(STD); -constexpr int CJK_FIRST_LETTER_INDEX = 189; +constexpr int CJK_FIRST_LETTER_INDEX = 128 - 32 + 21; constexpr coord_t CHAR_SPACING = 0; #define ROTARY_ENCODER_SPEED() rotencSpeed diff --git a/radio/src/targets/nv14/libopenui_config.h b/radio/src/targets/nv14/libopenui_config.h index a19246e18..9bb6d1c9d 100644 --- a/radio/src/targets/nv14/libopenui_config.h +++ b/radio/src/targets/nv14/libopenui_config.h @@ -173,7 +173,7 @@ constexpr LcdFlags MENU_FONT = FONT(STD); constexpr LcdFlags TABLE_HEADER_FONT = FONT(STD); constexpr LcdFlags TABLE_BODY_FONT = FONT(STD); -constexpr int CJK_FIRST_LETTER_INDEX = 168; +constexpr int CJK_FIRST_LETTER_INDEX = 128 - 32 + 21; constexpr coord_t CHAR_SPACING = 0; #endif // _LIBOPENUI_CONFIG_H_ diff --git a/radio/src/translations.h b/radio/src/translations.h index 6a801634b..1575f6b9d 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -55,6 +55,8 @@ #define LEN_SPECIAL_CHARS 0 #elif defined(TRANSLATIONS_CN) #include "translations/cn.h" +#elif defined(TRANSLATIONS_TW) +#include "translations/tw.h" #define LEN_SPECIAL_CHARS 0 #else #include "translations/en.h" diff --git a/radio/src/translations/CMakeLists.txt b/radio/src/translations/CMakeLists.txt index 5d7155a38..59d048a1c 100644 --- a/radio/src/translations/CMakeLists.txt +++ b/radio/src/translations/CMakeLists.txt @@ -4,9 +4,6 @@ foreach(translation ${translations}) get_filename_component(language ${translation} NAME_WE) get_filename_component(path ${translation} DIRECTORY) set(target ${language}.h) - if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL NV14) - set(language all) - endif() if(PYTHONINTERP_FOUND) add_custom_command( OUTPUT ${target} diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt index 6d9bb69d3..2d9ac47ef 100644 --- a/radio/src/translations/cn.h.txt +++ b/radio/src/translations/cn.h.txt @@ -56,7 +56,7 @@ #define TR_VBLMODE "关闭" "按键" "操控" "全部" "开启" #define LEN_TRNMODE "\004" -#define TR_TRNMODE "关\0" "相加" "替换" +#define TR_TRNMODE "关\0 " "相加" "替换" #define LEN_TRNCHN "\003" #define TR_TRNCHN "CH1CH2CH3CH4" @@ -76,27 +76,25 @@ #define LEN_VLCD "\006" #define TR_VLCD "Normal" "Optrex" -#define LEN_VPERSISTENT "\014" -#define TR_VPERSISTENT "OFF\0 " "Flight\0 " "Manual Reset" +#define LEN_VPERSISTENT "\016" +#define TR_VPERSISTENT "禁用\0 " "随飞行记录复位" "随手动复位\0 " #define LEN_COUNTRY_CODES "\004" #define TR_COUNTRY_CODES "美国" "日本" "欧洲" -#define LEN_USBMODES "\008" -#define TR_USBMODES "询问\0 " "游戏柄 \0 " "U盘 \0 " "串行\0 " +#define LEN_USBMODES "\006" +#define TR_USBMODES "询问\0 " "游戏柄" "U盘\0 " "串行\0 " -#define LEN_JACK_MODES "\006" -#define TR_JACK_MODES "询问\0" "音频\0" "教练\0" +#define LEN_JACK_MODES "\004" +#define TR_JACK_MODES "询问" "音频" "教练" #define LEN_TELEMETRY_PROTOCOLS "\017" -#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry" - -#define TR_MULTI_CUSTOM "自定义" +#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 " "FrSky D\0 " "FrSky D (cable)" "TBS Crossfire\0 " "Spektrum\0 " "AFHDS2A IBUS\0 " "Multi Telemetry" #define LEN_VTRIMINC "\004" #define TR_VTRIMINC "指数" "很小" "较小" "中等" "较大" -#define LEN_VDISPLAYTRIMS "\008" +#define LEN_VDISPLAYTRIMS "\010" #define TR_VDISPLAYTRIMS "不显示\0 " "改变时\0 " "始终显示" #define LEN_VBEEPCOUNTDOWN "\004" @@ -113,154 +111,121 @@ #define LEN_RETA123 "\001" -#if defined(PCBHORUS) - #define TR_RETA123 "RETA13245LR" -#elif defined(PCBX9E) - #define TR_RETA123 "RETA1234LRLR" -#elif defined(PCBTARANIS) || defined(REVX) - #define TR_RETA123 "RETA123LR" -#elif defined(PCBSKY9X) - #define TR_RETA123 "RETA123a" -#else - #define TR_RETA123 "RETA123" -#endif - -#if defined(PCBSKY9X) && defined(REVX) - #define LEN_VOUTPUT_TYPE "\011" - #define TR_VOUTPUT_TYPE "OpenDrain""PushPull\0" -#endif +#define TR_RETA123 "RETA13245LR" #define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" +#define TR_VCURVEFUNC "---" "x>0" "x<0" "|x|" "f>0" "f<0" "|f|" #define LEN_VMLTPX "\004" -#define TR_VMLTPX "相加""相乘""替换" +#define TR_VMLTPX "相加" "相乘" "替换" #define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" +#define TR_VMLTPX2 "+=" "*=" ":=" #define LEN_VMIXTRIMS "\004" #if defined(PCBHORUS) - #define TR_VMIXTRIMS "禁用""启用""Rud""Ele""Thr""Ail""T5\0""T6\0" + #define TR_VMIXTRIMS "禁用" "启用" "Rud\0" "Ele\0" "Thr\0" "Ail\0" "T5\0 " "T6\0 " #else - #define TR_VMIXTRIMS "禁用""启用""Rud""Ele""Thr""Ail" + #define TR_VMIXTRIMS "禁用" "启用" "Rud\0" "Ele\0" "Thr\0" "Ail\0" #endif -#if LCD_W >= 212 - #define TR_CSWTIMER "定时\0" - #define TR_CSWSTICKY "粘滞\0" - #define TR_CSWRANGE "范围\0" - #define TR_CSWSTAY "边沿\0" -#else - #define TR_CSWTIMER "Tim\0 " - #define TR_CSWSTICKY "Stky\0" - #define TR_CSWRANGE "Rnge\0" - #define TR_CSWSTAY "Edge\0" -#endif +#define TR_CSWTIMER "定时\0 " +#define TR_CSWSTICKY "粘滞\0 " +#define TR_CSWRANGE "范围\0 " +#define TR_CSWSTAY "边沿\0 " - #define TR_CSWEQUAL "a=x\0 " +#define TR_CSWEQUAL "a=x\0 " -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""ax""|a|b\0 ""ax\0 " "ax\0" "|a|b\0 " "a= 212 - #define TR_SF_SAFETY "锁定通道值   " -#elif defined(OVERRIDE_CHANNEL_FUNCTION) - #define TR_SF_SAFETY "Overr.\0 " +#if defined(OVERRIDE_CHANNEL_FUNCTION) + #define TR_SF_SAFETY "锁定通道值\0 " #else - #define TR_SF_SAFETY "---\0 " + #define TR_SF_SAFETY "---\0 " #endif -#define TR_SF_SCREENSHOT "截屏      " -#define TR_SF_RESERVE "[保留]\0 " +#define TR_SF_SCREENSHOT "截屏\0 " +#define TR_SF_RESERVE "[保留]\0 " -#define TR_VFSWFUNC TR_SF_SAFETY "教练     " "摇杆值存储到微调" "复位      " "设置      " TR_ADJUST_GVAR "音量    " "设置失控保护   " "测距模式    " "模块对频    " 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 "背光      " TR_SF_SCREENSHOT TR_SF_TEST +#define TR_VFSWFUNC TR_SF_SAFETY "教练\0 " "摇杆值存储到微调" "复位\0 " "设置\0 " TR_ADJUST_GVAR "音量\0 " "设置失控保护\0 " "测距模式\0 " "模块对频\0 " 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 "背光\0 " TR_SF_SCREENSHOT TR_SF_TEST -#define LEN_VFSWRESET TR("\004", "\008") +#define LEN_VFSWRESET TR("\004", "\010") #define TR_FSW_RESET_TELEM TR("Telm", "回传参数") -#if LCD_W >= 212 - #define TR_FSW_RESET_TIMERS "计时器1\0 ""计时器2\0 ""计时器3\0 " -#else - #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" -#endif +#define TR_FSW_RESET_TIMERS "计时器1\0" "计时器2\0" "计时器3\0" -#define TR_VFSWRESET TR(TR_FSW_RESET_TIMERS "All\0" TR_FSW_RESET_TELEM, TR_FSW_RESET_TIMERS "Flight\0 " TR_FSW_RESET_TELEM) +#define TR_VFSWRESET TR_FSW_RESET_TIMERS "Flight\0 " TR_FSW_RESET_TELEM -#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_FUNCSOUNDS "\006" +#define TR_FUNCSOUNDS "Beep1\0" "Beep2\0" "Beep3\0" "Warn1\0" "Warn2\0" "Cheep\0" "Ratata" "Tick\0 " "Siren\0" "Ring\0 " "SciFi\0" "Robot\0" "Chirp\0" "Tada\0 " "Crickt" "AlmClk" #define LEN_VTELEMCHNS "\004" -#define LENGTH_UNIT_IMP "ft\0" -#define SPEED_UNIT_IMP "mph" -#define LENGTH_UNIT_METR "m\0 " -#define SPEED_UNIT_METR "kmh" +#define LENGTH_UNIT_IMP "ft\0 " +#define SPEED_UNIT_IMP "mph\0" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh\0" + +#define LEN_VUNITSSYSTEM "\004" +#define TR_VUNITSSYSTEM "公制" "英制" -#define LEN_VUNITSSYSTEM TR("\006", "\004") -#define TR_VUNITSSYSTEM TR("Metric""Imper.", "公制""英制") #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 ""mW\0""dB\0""rpm""g\0 ""@\0 ""rad""ml\0""fOz""mlm""Hz\0""mS\0""uS\0" +#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 " "mW\0" "dB\0" "rpm" "g\0 " "@\0 " "rad" "ml\0" "fOz" "mlm" "Hz\0" "mS\0" "uS\0" #define STR_V (STR_VTELEMUNIT+1) #define STR_A (STR_VTELEMUNIT+4) @@ -269,130 +234,105 @@ #define TR_VTELEMSCREENTYPE "禁用\0 " "数值\0 " "条形图" "脚本\0 " #define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "DMS\0""NMEA" +#define TR_GPSFORMAT "DMS\0" "NMEA" -#define LEN2_VTEMPLATES 12 -#define LEN_VTEMPLATES "\014" -#define TR_TEMPLATE_CLEAR_MIXES "Clear Mixes " -#define TR_TEMPLATE_SIMPLE_4CH "Simple 4-CH " -#define TR_TEMPLATE_STICKY_TCUT "Sticky-T-Cut" -#define TR_TEMPLATE_VTAIL "V-Tail " -#define TR_TEMPLATE_DELTA "Elevon\\Delta" -#define TR_TEMPLATE_ECCPM "eCCPM " -#define TR_TEMPLATE_HELI "Heli Setup " -#define TR_TEMPLATE_SERVO_TEST "Servo Test " +#define LEN2_VTEMPLATES 12 +#define LEN_VTEMPLATES "\014" +#define TR_TEMPLATE_CLEAR_MIXES "Clear Mixes\0" +#define TR_TEMPLATE_SIMPLE_4CH "Simple 4-CH\0" +#define TR_TEMPLATE_STICKY_TCUT "Sticky-T-Cut" +#define TR_TEMPLATE_VTAIL "V-Tail\0 " +#define TR_TEMPLATE_DELTA "Elevon\\Delta" +#define TR_TEMPLATE_ECCPM "eCCPM\0 " +#define TR_TEMPLATE_HELI "Heli Setup\0 " +#define TR_TEMPLATE_SERVO_TEST "Servo Test\0 " #define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0" +#define TR_VSWASHTYPE "---\0" "120\0" "120X" "140\0" "90\0" -#if defined(PCBHORUS) - #define LEN_VKEYS "\004" - #define TR_VKEYS "菜单" "退出" "确认" "向上" "向下" "向右" "向左" -#elif defined(PCBXLITE) - #define LEN_VKEYS "\005" - #define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0" -#elif defined(RADIO_T12) - #define LEN_VKEYS "\005" - #define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0" -#elif defined(PCBTARANIS) - #define LEN_VKEYS "\005" - #define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus" -#else - #define LEN_VKEYS "\005" - #define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0" -#endif +#define LEN_VKEYS "\004" +#define TR_VKEYS "菜单" "退出" "确认" "向上" "向下" "向右" "向左" #define LEN_VSWITCHES "\003" #define LEN_VSRCRAW "\004" -#define TR_STICKS_VSRCRAW "\207Rud""\207Ele""\207Thr""\207Ail" +#define TR_STICKS_VSRCRAW STR_CHAR_STICK "Rud" STR_CHAR_STICK "Ele" STR_CHAR_STICK "Thr" STR_CHAR_STICK "Ail" #if defined(PCBHORUS) - #define TR_TRIMS_VSRCRAW "\213Rud""\213Ele""\213Thr""\213Ail""\213T5\0""\213T6\0" + #define TR_TRIMS_VSRCRAW STR_CHAR_TRIM "Rud" STR_CHAR_TRIM "Ele" STR_CHAR_TRIM "Thr" STR_CHAR_TRIM "Ail" STR_CHAR_TRIM "T5\0" STR_CHAR_TRIM "T6\0" #else - #define TR_TRIMS_VSRCRAW "\213Rud""\213Ele""\213Thr""\213Ail" + #define TR_TRIMS_VSRCRAW STR_CHAR_TRIM "Rud" STR_CHAR_TRIM "Ele" STR_CHAR_TRIM "Thr" STR_CHAR_TRIM "Ail" #endif #if defined(PCBHORUS) - #define TR_TRIMS_SWITCHES "\213Rl""\213Rr""\213Ed""\213Eu""\213Td""\213Tu""\213Al""\213Ar""\2135d""\2135u""\2136d""\2136u" + #define TR_TRIMS_SWITCHES STR_CHAR_TRIM "Rl" STR_CHAR_TRIM "Rr" STR_CHAR_TRIM "Ed" STR_CHAR_TRIM "Eu" STR_CHAR_TRIM "Td" STR_CHAR_TRIM STR_CHAR_TRIM "Tu" STR_CHAR_TRIM "Al" STR_CHAR_TRIM "Ar" STR_CHAR_TRIM "5d" STR_CHAR_TRIM "5u" STR_CHAR_TRIM "6d" STR_CHAR_TRIM "6u" #else - #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\213Rl""\213Rr""\213Ed""\213Eu""\213Td""\213Tu""\213Al""\213Ar") + #define TR_TRIMS_SWITCHES TR("tRl" "tRr" "tEd" "tEu" "tTd" "tTu" "tAl" "tAr", STR_CHAR_TRIM "Rl" STR_CHAR_TRIM "Rr" STR_CHAR_TRIM "Ed" STR_CHAR_TRIM "Eu" STR_CHAR_TRIM "Td" STR_CHAR_TRIM "Tu" STR_CHAR_TRIM "Al" STR_CHAR_TRIM "Ar") #endif -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS "REa\0" - #define TR_ROTENC_SWITCHES "REa" -#else - #define TR_ROTARY_ENCODERS - #define TR_ROTENC_SWITCHES -#endif +#define TR_ROTARY_ENCODERS +#define TR_ROTENC_SWITCHES -#define TR_ON_ONE_SWITCHES "ON\0""One" +#define TR_ON_ONE_SWITCHES "ON\0" "One" #if defined(GYRO) - #define TR_GYR_VSRCRAW "GyrX""GyrY" + #define TR_GYR_VSRCRAW "GyrX" "GyrY" #else #define TR_GYR_VSRCRAW #endif #if defined(HELI) - #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" + #define TR_CYC_VSRCRAW "CYC1" "CYC2" "CYC3" #else - #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" + #define TR_CYC_VSRCRAW "[C1]" "[C2]" "[C3]" #endif #define TR_RESERVE_VSRCRAW "[--]" -#define TR_EXTRA_VSRCRAW "Batt""Time""GPS\0" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3" +#define TR_EXTRA_VSRCRAW "Batt" "Time" "GPS\0" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1" "Tmr2" "Tmr3" #define LEN_VTMRMODES "\004" -#define TR_VTMRMODES "OFF\0""ON\0 ""Strt""THs\0""TH%\0""THt" +#define TR_VTMRMODES "OFF\0" "ON\0 " "Strt" "THs\0" "TH%\0" "THt" #define LEN_VTRAINERMODES "\022" -#define TR_VTRAINER_MASTER_OFF "禁用\0 " -#define TR_VTRAINER_MASTER_JACK "教练主机/音频插孔\0 " -#define TR_VTRAINER_SLAVE_JACK "学生从机/音频插孔\0 " -#define TR_VTRAINER_MASTER_SBUS_MODULE "教练主机/SBUS模块\0 " -#define TR_VTRAINER_MASTER_CPPM_MODULE "教练从机/CPPM模块\0 " -#define TR_VTRAINER_MASTER_BATTERY "教练主机/串口\0 " -#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "教练主机/蓝牙\0 " "教练从机/蓝牙\0 ") -#define TR_VTRAINER_MULTI "Master/Multi" +#define TR_VTRAINER_MASTER_OFF "禁用\0 " +#define TR_VTRAINER_MASTER_JACK "教练主机/音频插孔\0" +#define TR_VTRAINER_SLAVE_JACK "学生从机/音频插孔\0" +#define TR_VTRAINER_MASTER_SBUS_MODULE "教练主机/SBUS模块\0" +#define TR_VTRAINER_MASTER_CPPM_MODULE "教练从机/CPPM模块\0" +#define TR_VTRAINER_MASTER_BATTERY "教练主机/串口\0 " +#define TR_VTRAINER_BLUETOOTH TR("Master/BT\0 ""Slave/BT\0 ", "教练主机/蓝牙\0 " "教练从机/蓝牙\0 ") +#define TR_VTRAINER_MULTI "教练主机/多协议\0 " -#define LEN_VFAILSAFE "\008" +#define LEN_VFAILSAFE "\010" #define TR_VFAILSAFE "未设置\0 " "失控保持" "自定义\0 " "无脉冲\0 " "接收机\0 " #define LEN_VSENSORTYPES "\006" #define TR_VSENSORTYPES "自定义" "运算\0 " #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "加\0 " "平均值\0 " "最小值\0 " "最大值\0 " "乘\0 " "总计值\0 " "单节电池\0" "Consumpt\0 " "距离\0 " +#define TR_VFORMULAS "加\0 " "平均值\0 " "最小值\0 " "最大值\0 " "乘\0 " "总计值\0 " "单节电池" "消耗量\0 " "距离\0 " #define LEN_VPREC "\004" -#define TR_VPREC "0.--""0.0 ""0.00" +#define TR_VPREC "0.--" "0.0 " "0.00" -#define LEN_VCELLINDEX "\007" -#define TR_VCELLINDEX "最低值\0""1\0 " "2\0 " "3\0 " "4\0 " "5\0 " "6\0 " "最高值\0" "差值\0" +#define LEN_VCELLINDEX "\006" +#define TR_VCELLINDEX "最低值" "1\0 " "2\0 " "3\0 " "4\0 " "5\0 " "6\0 " "最高值" "差值\0 " #define LEN_GYROS "\004" -#define TR_GYROS "GyrX""GyrY" +#define TR_GYROS "GyrX" "GyrY" #define LEN_TEXT_SIZE "\004" #define TR_TEXT_SIZE "标准" "小\0 " "较小" "中等" "双倍" -#define LEN_SUBTRIMMODES "\017" -#define TR_SUBTRIMMODES STR_CHAR_DELTA" (center only)""= (symetrical) " +#define LEN_SUBTRIMMODES "\010" +#define TR_SUBTRIMMODES STR_CHAR_DELTA "(中点)\0 " "= (整体)" // ZERO TERMINATED STRINGS -#if defined(COLORLCD) - #define INDENT - #define LEN_INDENT 3 - #define INDENT_WIDTH 12 - #define BREAKSPACE "\036" -#else - #define INDENT "\001" - #define LEN_INDENT 1 - #define INDENT_WIDTH (FW/2) - #define BREAKSPACE " " -#endif + +#define INDENT +#define LEN_INDENT 3 +#define INDENT_WIDTH 12 +#define BREAKSPACE "\036" #if defined(PCBFRSKY) #define TR_ENTER "[ENTER]" @@ -402,19 +342,10 @@ #define TR_ENTER "[MENU]" #endif -#if defined(COLORLCD) - #define TR_EXIT "RTN" - #define TR_OK TR_ENTER -#else - #define TR_EXIT "EXIT" - #define TR_OK TR("\010" "\010" "\010" "[OK]", "\010" "\010" "\010" "\010" "\010" "[OK]") -#endif +#define TR_EXIT "RTN" +#define TR_OK TR_ENTER -#if defined(PCBTARANIS) - #define TR_POPUPS_ENTER_EXIT TR(TR_EXIT "\010" TR_ENTER, TR_EXIT "\010" "\010" "\010" "\010" TR_ENTER) -#else - #define TR_POPUPS_ENTER_EXIT TR_ENTER "\010" TR_EXIT -#endif +#define TR_POPUPS_ENTER_EXIT TR_ENTER "\010" TR_EXIT #define TR_FREE "空闲" #define TR_DELETEMODEL "删除" BREAKSPACE "模型" @@ -439,13 +370,10 @@ #define TR_TTRIM_SW TR("T-Trim-Sw", INDENT "微调选择") #define TR_BEEPCTR TR("Ctr Beep", "中点蜂鸣") #define TR_USE_GLOBAL_FUNCS TR("Glob.Funcs", "全局功能可介入") -#if defined(PCBSKY9X) && defined(REVX) - #define TR_OUTPUT_TYPE INDENT "Output" -#endif #define TR_PROTO TR(INDENT "Proto", INDENT "协议") - #define TR_PPMFRAME INDENT "PPM帧" - #define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "刷新速率") - #define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "注意: 输出电平为电池电压: ") +#define TR_PPMFRAME INDENT "PPM帧" +#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "刷新速率") +#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "注意: 输出电平为电池电压: ") #define TR_WARN_5VOLTS "注意: 输出电平是5V" #define TR_MS "ms" #define TR_FREQUENCY INDENT "频率" @@ -464,7 +392,7 @@ #define TR_ELEDIRECTION "俯仰方向" #define TR_AILDIRECTION "横滚方向" #define TR_COLDIRECTION "螺距方向" -#define TR_MODE "摇杆模式" +#define TR_MODE "模式" #define TR_SUBTYPE INDENT "子类型" #define TR_NOFREEEXPO "指数曲线已满!" #define TR_NOFREEMIXER "混控数量已满!" @@ -473,7 +401,7 @@ #define TR_EXPO TR("Expo", "指数") #define TR_SIDE "单边" #define TR_DIFFERENTIAL "差动" -#define TR_OFFSET "偏移量" +#define TR_OFFSET "偏移量" #define TR_TRIM "使用微调" #define TR_DREX "DRex" #define DREX_CHBOX_OFFSET 30 @@ -488,13 +416,9 @@ #define TR_DELAYUP "上行延时" #define TR_SLOWDOWN TR("Slow dn", "下行慢动作") #define TR_SLOWUP "上行慢动作" -#define TR_MIXES "混控" +#define TR_MIXES "混控设置" #define TR_CV "曲线" -#if defined(PCBNV14) #define TR_GV "GV" -#else -#define TR_GV TR("G", "GV") -#endif #define TR_ACHANNEL "A\004通道" #define TR_RANGE INDENT "范围" #define TR_CENTER INDENT "中点" @@ -551,7 +475,7 @@ #define TR_STICKS "摇杆" #define TR_POTS "电位器" #define TR_SWITCHES "开关" -#define TR_SWITCHES_DELAY TR("Play delay", "延时播放 (开关经过)") +#define TR_SWITCHES_DELAY TR("Play delay", "延时播放(开关经过)") #define TR_SLAVE CENTER "从机" #define TR_MODESRC "Mode\006% Source" #define TR_MULTIPLIER "倍率" @@ -564,15 +488,10 @@ #define TR_MENUTOSTART "按 [Enter] 键开始" #define TR_SETMIDPOINT "将摇杆/旋钮/滑块居中后按[Enter]开始" #define TR_MOVESTICKSPOTS "转动摇杆/旋钮/滑块到最大边界后按[Enter]结束" -#elif defined(COLORLCD) +#else #define TR_MENUTOSTART TR_ENTER " 开始" #define TR_SETMIDPOINT "将摇杆、旋钮和滑块居中" #define TR_MOVESTICKSPOTS "转动摇杆、旋钮和滑块到最大边界" -#else - #define TR_MENUTOSTART CENTER "\010" TR_ENTER " 开始" - #define TR_SETMIDPOINT TR(CENTER "\004SET STICKS MIDPOINT", CENTER "\004将摇杆/旋钮/滑块居中") - #define TR_MOVESTICKSPOTS CENTER "\006转动摇杆/旋钮/滑块到最大边界" - #define TR_MENUWHENDONE CENTER "\006" TR_ENTER " 结束" #endif #define TR_RXBATT "Rx Batt:" #define TR_TXnRX "Tx:\0Rx:" @@ -615,11 +534,7 @@ #define TR_MENU_RADIO_SWITCHES TR("SWITCHES", "开关及按键测试") #define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "类比输入测试") #define TR_MENUCALIBRATION "校准" -#if defined(COLORLCD) - #define TR_TRIMS2OFFSETS "将当前微调量保存至中点" -#else - #define TR_TRIMS2OFFSETS "\006Trims => Subtrims" -#endif +#define TR_TRIMS2OFFSETS "将当前微调量保存至中点" #define TR_CHANNELS2FAILSAFE "将当前所有通道值保存至接收机失控保护" #define TR_CHANNEL2FAILSAFE "将当前通道值保存至接收机失控保护" #define TR_MENUMODELSEL TR("MODELSEL", "模型选择") @@ -628,8 +543,8 @@ #define TR_MENUFLIGHTMODE "飞行模式" #define TR_MENUHELISETUP "直升机设置" - #define TR_MENUINPUTS "输入设置" - #define TR_MENULIMITS "输出这种" +#define TR_MENUINPUTS "输入设置" +#define TR_MENULIMITS "输出设置" #define TR_MENUCURVES "曲线设置" #define TR_MENUCURVE "曲线" #define TR_MENULOGICALSWITCH "逻辑开关" @@ -647,8 +562,9 @@ #define TR_MONITOR_SWITCHES "逻辑开关查看" #define TR_MONITOR_OUTPUT_DESC "输出查看" #define TR_MONITOR_MIXER_DESC "混控查看" - #define TR_RECEIVER_NUM TR("RxNum", "接收机ID.") - #define TR_RECEIVER "接收机ID" +#define TR_RECEIVER_NUM TR("RxNum", "接收机编号") +#define TR_RECEIVER "接收机ID" +#define TR_MULTI_CUSTOM "自定义" #define TR_MULTI_RFTUNE TR("Freq tune", "频率微调") #define TR_MULTI_RFPOWER "发射功率" #define TR_MULTI_TELEMETRY "回传" @@ -693,7 +609,7 @@ #define TR_SYNCMENU "[Sync]" #define TR_LIMIT INDENT "限制" #define TR_MINRSSI "Min Rssi" -#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "Use FlySky RSSI value without rescalling") +#define TR_FLYSKY_TELEMETRY TR("FlySky RSSI #", "使用 FlySky RSSI 值无需重缩放") #define TR_LATITUDE "纬度" #define TR_LONGITUDE "经度" #define TR_GPS_COORDS_FORMAT TR("GPS Coords", "方向角格式") @@ -705,8 +621,8 @@ #define TR_SAVE_MODEL "正在存储模型" #define TR_BATT_CALIB TR("Batt. 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_VOLTAGE TR(INDENT "Voltage", INDENT "电压来源") +#define TR_CURRENT TR(INDENT "Current", INDENT "电流来源") #define TR_SELECT_MODEL "选择模型" #define TR_SELECT_MODE "选择模式" #define TR_CREATE_CATEGORY "创建分类" @@ -791,7 +707,7 @@ #define TR_COPROC_TEMP "主板温度" #define TR_CAPAWARNING INDENT "电流过低" #define TR_TEMPWARNING INDENT "过热" -#define TR_TTL_WARNING "Warning: use only TLL or 5v" +#define TR_TTL_WARNING "注意: 串口仅能使用TTL电平或5V" #define TR_FUNC "功能" #define TR_V1 "V1" #define TR_V2 "V2" @@ -830,12 +746,8 @@ #define TR_BLUETOOTH_LOCAL_ADDR "本机地址" #define TR_BLUETOOTH_PIN_CODE "PIN码" #define TR_BAUDRATE "蓝牙带宽" -#define LEN_BLUETOOTH_MODES "\011" -#if defined(PCBX9E) -#define TR_BLUETOOTH_MODES "---\0 ""启用\0 " -#else -#define TR_BLUETOOTH_MODES "---\0 ""回传""教练\0" -#endif +#define LEN_BLUETOOTH_MODES "\004" +#define TR_BLUETOOTH_MODES "---\0" "回传" "教练" #define TR_SD_INFO_TITLE "存储卡详情" #define TR_SD_TYPE "类型:" @@ -846,7 +758,7 @@ #define TR_GLOBAL_VARS "全局变量" #define TR_GVARS "全局变量" #define TR_GLOBAL_VAR "全局变量" -#define TR_MENU_GLOBAL_VARS "全局变量功能" +#define TR_MENU_GLOBAL_VARS "全局变量功能" #define TR_OWN "Own" #define TR_DATE "日期" #define TR_MONTHS { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" } @@ -859,7 +771,7 @@ #define TR_PATH_TOO_LONG "路径太长" #define TR_VIEW_TEXT "查看文本" #define TR_FLASH_BOOTLOADER "更新引导程序" -#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Port", "从 S.Port 端口刷新外设") +#define TR_FLASH_EXTERNAL_DEVICE TR("Flash S.Port", "从 S.Port 端口更新外设固件") #define TR_FLASH_RECEIVER_OTA "Flash receiver OTA" #define TR_FLASH_RECEIVER_BY_EXTERNAL_MODULE_OTA "Flash RX by ext. OTA" #define TR_FLASH_RECEIVER_BY_INTERNAL_MODULE_OTA "Flash RX by int. OTA" @@ -867,12 +779,12 @@ #define TR_FLASH_FLIGHT_CONTROLLER_BY_INTERNAL_MODULE_OTA "Flash FC by int. OTA" #define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "刷新蓝牙模块") #define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit" -#define TR_CURRENT_VERSION "Current version: " +#define TR_CURRENT_VERSION "当前版本: " #define TR_FLASH_INTERNAL_MODULE TR("Flash int. module", "更新内置模块固件") #define TR_FLASH_INTERNAL_MULTI TR("Flash Int. Multi", "更新内置多协议模块固件") #define TR_FLASH_EXTERNAL_MODULE TR("Flash ext. module", "更新外置模块固件") #define TR_FLASH_EXTERNAL_MULTI TR("Flash Ext. Multi", "更新外置多协议模块固件") -#define TR_FIRMWARE_UPDATE_ERROR TR("FW update error", "固件更新失败固件") +#define TR_FIRMWARE_UPDATE_ERROR TR("FW update error", "固件更新失败") #define TR_FIRMWARE_UPDATE_SUCCESS "固件更新成功" #define TR_WRITING "正在写入..." #define TR_CONFIRM_FORMAT "是否格式化?" @@ -883,7 +795,7 @@ #define TR_TELEMETRY_DISABLED "禁用回传" #define TR_MORE_OPTIONS_AVAILABLE "更多可用选项" #define TR_NO_MODULE_INFORMATION "无模块信息" -#define TR_EXTERNALRF "外汇射频" +#define TR_EXTERNALRF "外置射频" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "失控保护模式") #define TR_FAILSAFESET "失控保护设置" #define TR_REG_ID "Reg. ID" @@ -954,7 +866,7 @@ #define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "接收机选项") #define TR_DEL_BUTTON BUTTON(TR("Del", "删除")) #define TR_RESET_BTN BUTTON("复位") -#define TR_DEBUG "Debug" +#define TR_DEBUG "调试" #define TR_KEYS_BTN BUTTON("按键") #define TR_ANALOGS_BTN BUTTON(TR("Anas", "类比")) #define TR_TOUCH_NOTFOUND "未找到触摸硬件" @@ -963,11 +875,7 @@ #define TR_TRAINER "教练" #define TR_CHANS "通道" #define TR_ANTENNAPROBLEM CENTER "发射机天线故障!" -#if defined(COLORLCD) - #define TR_MODELIDUSED "ID已使用:" -#else - #define TR_MODELIDUSED TR("ID used in:","接收机编号已使用:") -#endif +#define TR_MODELIDUSED "ID已使用:" #define TR_MODULE "模块" #define TR_RX_NAME "接收机名称" #define TR_TELEMETRY_TYPE TR("Type", "回传类型") @@ -985,7 +893,7 @@ #define LEN_ANTENNA_MODES "\010" #define TR_ANTENNA_MODES "内置天线""询问\0 ""基于模型""外置天线" #else -#define LEN_ANTENNA_MODES "\011" +#define LEN_ANTENNA_MODES "\010" #define TR_ANTENNA_MODES "内置天线""询问\0 ""基于模型""外置天线" #endif #define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "请使用内置天线") @@ -1015,9 +923,9 @@ #define TR_PT "点" #define TR_PTS "点" #define TR_SMOOTH "平滑" -#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "当前摇杆位置保存为中点微调") +#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "当前摇杆位置保存为中点") #define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Cpy min/max to all", "当前所有通道中点/低位/高位保存为所有输出值") -#define TR_COPY_TRIMS_TO_OFS TR("Cpy trim->subtrim", "当前微调按钮值保存到中点微调") +#define TR_COPY_TRIMS_TO_OFS TR("Cpy trim->subtrim", "当前微调按钮值保存到中点") #define TR_INCDEC "增减" #define TR_GLOBALVAR "全局变量" #define TR_MIXSOURCE "混控源" @@ -1061,7 +969,7 @@ #define TR_LIMITS_HEADERS_CURVE "曲线" #define TR_LIMITS_HEADERS_PPMCENTER "PPM中点" #define TR_LIMITS_HEADERS_SUBTRIMMODE "微调模式" -#define TR_INVERTED "Inverted" +#define TR_INVERTED "反向" #define TR_LSW_HEADERS_FUNCTION "功能" #define TR_LSW_HEADERS_V1 "V1" @@ -1221,19 +1129,19 @@ #define TR_BAR1_COLOR "主条形图颜色" #define TR_TEXT_COLOR "文本颜色" #define TR_TEXT_VIEWER "文本视图" -#define TR_MENU_INPUTS "\214输入" -#define TR_MENU_LUA "\222LUA脚本" -#define TR_MENU_STICKS "\207摇杆" -#define TR_MENU_POTS "\210旋钮" -#define TR_MENU_MAX "\215固定值MAX" -#define TR_MENU_HELI "\216斜盘混控CYC" -#define TR_MENU_TRIMS "\213微调" -#define TR_MENU_SWITCHES "\212开关" -#define TR_MENU_LOGICAL_SWITCHES "\212逻辑开关" -#define TR_MENU_TRAINER "\217教练" -#define TR_MENU_CHANNELS "\220通道" -#define TR_MENU_GVARS "\211全局变量" -#define TR_MENU_TELEMETRY "\221回传" +#define TR_MENU_INPUTS STR_CHAR_INPUT "输入" +#define TR_MENU_LUA STR_CHAR_LUA "LUA脚本" +#define TR_MENU_STICKS STR_CHAR_STICK "摇杆" +#define TR_MENU_POTS STR_CHAR_POT "旋钮" +#define TR_MENU_MAX STR_CHAR_FUNCTION "固定值MAX" +#define TR_MENU_HELI STR_CHAR_CYC "斜盘混控CYC" +#define TR_MENU_TRIMS STR_CHAR_TRIM "微调" +#define TR_MENU_SWITCHES STR_CHAR_SWITCH "开关" +#define TR_MENU_LOGICAL_SWITCHES STR_CHAR_SWITCH "逻辑开关" +#define TR_MENU_TRAINER STR_CHAR_TRAINER "教练" +#define TR_MENU_CHANNELS STR_CHAR_CHANNEL "通道" +#define TR_MENU_GVARS STR_CHAR_SLIDER "全局变量" +#define TR_MENU_TELEMETRY STR_CHAR_TELEMETRY "回传" #define TR_MENU_DISPLAY "显示" #define TR_MENU_OTHER "其它" #define TR_MENU_INVERT "反向" diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index d4a0a8012..2f5a68a9e 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -308,18 +308,18 @@ #define LEN_INPUTNAMES "\004" #define TR_INPUTNAMES "Sme\0""Vys\0""Pln\0""Kri\0" -#define TR_STICKS_VSRCRAW "\307Smě""\307Výš""\307Pln""\307Kři" +#define TR_STICKS_VSRCRAW STR_CHAR_STICK "Smě" STR_CHAR_STICK "Výš" STR_CHAR_STICK "Pln" STR_CHAR_STICK "Kři" #if defined(PCBHORUS) - #define TR_TRIMS_VSRCRAW "\313Smě""\313Výš""\313Pln""\313Kři""\313T5\0""\313T6\0" + #define TR_TRIMS_VSRCRAW STR_CHAR_TRIM "Smě" STR_CHAR_TRIM "Výš" STR_CHAR_TRIM "Pln" STR_CHAR_TRIM "Kři" STR_CHAR_TRIM "T5\0" STR_CHAR_TRIM "T6\0" #else - #define TR_TRIMS_VSRCRAW "\313Smě""\313Výš""\313Pln""\313Kři" + #define TR_TRIMS_VSRCRAW STR_CHAR_TRIM "Smě" STR_CHAR_TRIM "Výš" STR_CHAR_TRIM "Pln" STR_CHAR_TRIM "Kři" #endif #if defined(PCBHORUS) - #define TR_TRIMS_SWITCHES "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp""\3135d""\3135n""\3136d""\3136n" + #define TR_TRIMS_SWITCHES STR_CHAR_TRIM "Sl" STR_CHAR_TRIM "Sp" STR_CHAR_TRIM "Vd" STR_CHAR_TRIM "Vn" STR_CHAR_TRIM "Pd" STR_CHAR_TRIM "Pn" STR_CHAR_TRIM "Kl" STR_CHAR_TRIM "Kp" STR_CHAR_TRIM "5d" STR_CHAR_TRIM "5n" STR_CHAR_TRIM "6d" STR_CHAR_TRIM "6n" #else - #define TR_TRIMS_SWITCHES TR("tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp", "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp") + #define TR_TRIMS_SWITCHES TR("tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp", STR_CHAR_TRIM "Sl" STR_CHAR_TRIM "Sp" STR_CHAR_TRIM "Vd" STR_CHAR_TRIM "Vn" STR_CHAR_TRIM "Pd" STR_CHAR_TRIM "Pn" STR_CHAR_TRIM "Kl" STR_CHAR_TRIM "Kp") #endif #if defined(PCBSKY9X) @@ -1229,19 +1229,19 @@ #define TR_TEXT_COLOR "Text color" #define TR_TEXT_VIEWER "Prohlížeč textu" -#define TR_MENU_INPUTS "\314Vstupy" -#define TR_MENU_LUA "\322Lua skripty" -#define TR_MENU_STICKS "\307Páky" -#define TR_MENU_POTS "\310Potenciometry" -#define TR_MENU_MAX "\315MAX" -#define TR_MENU_HELI "\316Cyklika" -#define TR_MENU_TRIMS "\313Trimy" -#define TR_MENU_SWITCHES "\312Spínače" -#define TR_MENU_LOGICAL_SWITCHES "\312Logické spínače" -#define TR_MENU_TRAINER "\317Trenér" -#define TR_MENU_CHANNELS "\320Kanály" -#define TR_MENU_GVARS "\311Glob.proměnné" -#define TR_MENU_TELEMETRY "\321Telemetrie" +#define TR_MENU_INPUTS STR_CHAR_INPUT "Vstupy" +#define TR_MENU_LUA STR_CHAR_LUA "Lua skripty" +#define TR_MENU_STICKS STR_CHAR_STICK "Páky" +#define TR_MENU_POTS STR_CHAR_POT "Potenciometry" +#define TR_MENU_MAX STR_CHAR_FUNCTION "MAX" +#define TR_MENU_HELI STR_CHAR_CYC "Cyklika" +#define TR_MENU_TRIMS STR_CHAR_TRIM "Trimy" +#define TR_MENU_SWITCHES STR_CHAR_SWITCH "Spínače" +#define TR_MENU_LOGICAL_SWITCHES STR_CHAR_SWITCH "Logické spínače" +#define TR_MENU_TRAINER STR_CHAR_TRAINER "Trenér" +#define TR_MENU_CHANNELS STR_CHAR_CHANNEL "Kanály" +#define TR_MENU_GVARS STR_CHAR_SLIDER "Glob.proměnné" +#define TR_MENU_TELEMETRY STR_CHAR_TELEMETRY "Telemetrie" #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Ostatní" #define TR_MENU_INVERT "Invertovat" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 6dac4c4ef..e1b0edbd4 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -314,18 +314,18 @@ #define LEN_VSWITCHES "\003" #define LEN_VSRCRAW "\004" -#define TR_STICKS_VSRCRAW "\307Sei""\307Höh""\307Gas""\307Que" +#define TR_STICKS_VSRCRAW STR_CHAR_STICK "Sei" STR_CHAR_STICK "Höh" STR_CHAR_STICK "Gas" STR_CHAR_STICK "Que" #if defined(PCBHORUS) - #define TR_TRIMS_VSRCRAW "\313Sei""\313Höh""\313Gas""\313Que""\313T5\0""\313T6\0" + #define TR_TRIMS_VSRCRAW STR_CHAR_TRIM "Sei" STR_CHAR_TRIM "Höh" STR_CHAR_TRIM "Gas" STR_CHAR_TRIM "Que" STR_CHAR_TRIM "T5\0" STR_CHAR_TRIM "T6\0" #else - #define TR_TRIMS_VSRCRAW TR("TrmS""TrmH""TrmG""TrmQ", "\313Sei""\313Höh""\313Gas""\313que") + #define TR_TRIMS_VSRCRAW TR("TrmS""TrmH""TrmG""TrmQ", STR_CHAR_TRIM "Sei" STR_CHAR_TRIM "Höh" STR_CHAR_TRIM "Gas" STR_CHAR_TRIM "que") #endif #if defined(PCBHORUS) - #define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar""\3135d""\3135u""\3136d""\3136u" + #define TR_TRIMS_SWITCHES STR_CHAR_TRIM "Rl" STR_CHAR_TRIM "Rr" STR_CHAR_TRIM "Ed" STR_CHAR_TRIM "Eu" STR_CHAR_TRIM "Td" STR_CHAR_TRIM "Tu" STR_CHAR_TRIM "Al" STR_CHAR_TRIM "Ar" STR_CHAR_TRIM "5d" STR_CHAR_TRIM "5u" STR_CHAR_TRIM "6d" STR_CHAR_TRIM "6u" #else - #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") + #define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", STR_CHAR_TRIM "Rl" STR_CHAR_TRIM "Rr" STR_CHAR_TRIM "Ed" STR_CHAR_TRIM "Eu" STR_CHAR_TRIM "Td" STR_CHAR_TRIM "Tu" STR_CHAR_TRIM "Al" STR_CHAR_TRIM "Ar") #endif #if defined(PCBSKY9X) @@ -1242,19 +1242,19 @@ #define TR_TEXT_COLOR "Text color" #define TR_TEXT_VIEWER "Text Viewer" // ----------------------------- Symbole für Auswahlliste---------- -#define TR_MENU_INPUTS "\314Inputs" -#define TR_MENU_LUA "\322Lua Skripte" -#define TR_MENU_STICKS "\307Knüppel" -#define TR_MENU_POTS "\310Potis" -#define TR_MENU_MAX "\315MAX" -#define TR_MENU_HELI "\316Heli-TS CYC1-3" -#define TR_MENU_TRIMS "\313Trimmung" -#define TR_MENU_SWITCHES "\312Schalter" -#define TR_MENU_LOGICAL_SWITCHES "\312Log. Schalter" -#define TR_MENU_TRAINER "\317Trainer" -#define TR_MENU_CHANNELS "\320Kanäle" -#define TR_MENU_GVARS "\311Glob. Vars" -#define TR_MENU_TELEMETRY "\321Telemetrie" +#define TR_MENU_INPUTS STR_CHAR_INPUT "Inputs" +#define TR_MENU_LUA STR_CHAR_LUA "Lua Skripte" +#define TR_MENU_STICKS STR_CHAR_STICK "Knüppel" +#define TR_MENU_POTS STR_CHAR_POT "Potis" +#define TR_MENU_MAX STR_CHAR_FUNCTION "MAX" +#define TR_MENU_HELI STR_CHAR_CYC "Heli-TS CYC1-3" +#define TR_MENU_TRIMS STR_CHAR_TRIM "Trimmung" +#define TR_MENU_SWITCHES STR_CHAR_SWITCH "Schalter" +#define TR_MENU_LOGICAL_SWITCHES STR_CHAR_SWITCH "Log. Schalter" +#define TR_MENU_TRAINER STR_CHAR_TRAINER "Trainer" +#define TR_MENU_CHANNELS STR_CHAR_CHANNEL "Kanäle" +#define TR_MENU_GVARS STR_CHAR_SLIDER "Glob. Vars" +#define TR_MENU_TELEMETRY STR_CHAR_TELEMETRY "Telemetrie" #define TR_MENU_DISPLAY "TELM-SEITEN" #define TR_MENU_OTHER "Weitere" #define TR_MENU_INVERT "Invertieren" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index ffc803f9f..5bf6819b3 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -166,7 +166,7 @@ #define TR_CSWEQUAL "a=x\0 " #define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""ax""|a|b\0 ""ax\0 ""ax""|a|b\0 ""a0" "x<0" "|x|" "f>0" "f<0" "|f|" + +#define LEN_VMLTPX "\004" +#define TR_VMLTPX "相加" "相乘" "替換" + +#define LEN_VMLTPX2 "\002" +#define TR_VMLTPX2 "+=" "*=" ":=" + +#define LEN_VMIXTRIMS "\004" + +#if defined(PCBHORUS) + #define TR_VMIXTRIMS "禁用" "啟用" "Rud\0" "Ele\0" "Thr\0" "Ail\0" "T5\0 " "T6\0 " +#else + #define TR_VMIXTRIMS "禁用" "啟用" "Rud\0" "Ele\0" "Thr\0" "Ail\0" +#endif + + #define TR_CSWTIMER "定時\0 " + #define TR_CSWSTICKY "粘滯\0 " + #define TR_CSWRANGE "範圍\0 " + #define TR_CSWSTAY "邊沿\0 " + + #define TR_CSWEQUAL "a=x\0 " + +#define LEN_VCSWFUNC "\006" +#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 " "a>x\0 " "ax\0" "|a|b\0 " "a" +#define TR_BT_SELECT_DEVICE "選擇設備" +#define TR_DISCOVER "發現" +#define TR_BUTTON_INIT BUTTON("初始化") +#define TR_WAITING "等待..." +#define TR_RECEIVER_DELETE "是否刪除接收機?" +#define TR_RECEIVER_RESET "是否重啟接收機?" +#define TR_SHARE "分享" +#define TR_BIND "對頻" +#define TR_REGISTER TR("Reg", "註冊") +#define TR_MODULE_RANGE BUTTON(TR("Rng", "測距")) +#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "接收機選項") +#define TR_DEL_BUTTON BUTTON(TR("Del", "刪除")) +#define TR_RESET_BTN BUTTON("重啟") +#define TR_DEBUG "調試" +#define TR_KEYS_BTN BUTTON("按鍵") +#define TR_ANALOGS_BTN BUTTON(TR("Anas", "類比")) +#define TR_TOUCH_NOTFOUND "未找到觸摸硬件" +#define TR_TOUCH_EXIT "點擊屏幕退出" +#define TR_SET BUTTON("設置") +#define TR_TRAINER "教練" +#define TR_CHANS "通道" +#define TR_ANTENNAPROBLEM CENTER "發射機天線故障!" +#define TR_MODELIDUSED "ID已使用:" +#define TR_MODULE "模塊" +#define TR_RX_NAME "接收機名稱" +#define TR_TELEMETRY_TYPE TR("Type", "回傳類型") +#define TR_TELEMETRY_SENSORS "傳感器" +#define TR_VALUE "數值" +#define TR_REPEAT "循環" +#define TR_ENABLE "啟用" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "單位" +#define TR_TELEMETRY_NEWSENSOR INDENT "添加新傳感器..." +#define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "通道範圍") +#define TR_RXFREQUENCY TR("Rx Freqency", "接收機端口輸出頻率") +#define TR_ANTENNACONFIRM1 "外置天線" +#if defined(PCBX12S) +#define LEN_ANTENNA_MODES "\010" +#define TR_ANTENNA_MODES "內置天線""詢問\0 ""基於模型""外置天線" +#else +#define LEN_ANTENNA_MODES "\010" +#define TR_ANTENNA_MODES "內置天線""詢問\0 ""基於模型""外置天線" +#endif +#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "請使用內置天線") +#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "請使用外置天線") +#define TR_ANTENNACONFIRM2 TR("Check antenna", "請確認天線安裝完好!") +#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "請使用FLEX版本" +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "請使用FCC版本" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "請使用EU版本" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "經認證的韌體" +#define TR_LOWALARM INDENT "信號弱警告" +#define TR_CRITICALALARM INDENT "信號極弱警告" +#define TR_RSSIALARM_WARN "RSSI" +#define TR_NO_RSSIALARM TR(INDENT "Alarms disabled", "回傳警告已禁止") +#define TR_DISABLE_ALARM TR(INDENT "Disable alarms", INDENT "禁止回傳警告") +#define TR_ENABLE_POPUP "允許彈窗" +#define TR_DISABLE_POPUP "禁止彈窗" +#define TR_POPUP "彈窗提示" +#define TR_MIN "最小" +#define TR_MAX "最大" +#define TR_CURVE_PRESET "預設..." +#define TR_PRESET "預設" +#define TR_MIRROR "鏡像" +#define TR_CLEAR "清除" +#define TR_RESET "重啟" +#define TR_RESET_SUBMENU "重啟..." +#define TR_COUNT "點數" +#define TR_PT "點" +#define TR_PTS "點" +#define TR_SMOOTH "平滑" +#define TR_COPY_STICKS_TO_OFS TR("Cpy stick->subtrim", "當前搖杆位置保存為中點") +#define TR_COPY_MIN_MAX_TO_OUTPUTS TR("Cpy min/max to all", "當前所有通道中點/低位/高位保存為所有輸出值") +#define TR_COPY_TRIMS_TO_OFS TR("Cpy trim->subtrim", "當前微調按鈕值保存到中點") +#define TR_INCDEC "增減" +#define TR_GLOBALVAR "全局變量" +#define TR_MIXSOURCE "混控源" +#define TR_CONSTANT "不變化" +#define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "關機保持 mAh") +#define TR_PREFLIGHT "初始位置檢查" +#define TR_CHECKLIST TR(INDENT "Checklist", INDENT "顯示列表") +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS 偏移量") +#define TR_AUX_SERIAL_MODE "端口" +#define TR_AUX2_SERIAL_MODE "端口 2" +#define TR_SCRIPT "腳本" +#define TR_INPUTS "輸入" +#define TR_OUTPUTS "輸出" +#define STR_EEBACKUP "EEPROM 數據備份" +#define STR_FACTORYRESET "恢復出廠設置" +#define TR_CONFIRMRESET TR("Erase ALL", "是否清除所有模型和設置數據?") +#define TR_TOO_MANY_LUA_SCRIPTS "Lua腳本數量超出限制!" +#define TR_SPORT_UPDATE_POWER_MODE "SP 電源" +#define LEN_SPORT_UPDATE_POWER_MODES "\004" +#define TR_SPORT_UPDATE_POWER_MODES "自動""開啟" +#define TR_NO_TELEMETRY_SCREENS "無回傳頁面" +#define TR_TOUCH_PANEL "觸摸屏:" + +// Horus and Taranis column headers +#define TR_PHASES_HEADERS_NAME "名稱" +#define TR_PHASES_HEADERS_SW "開關" +#define TR_PHASES_HEADERS_RUD_TRIM "方向微調" +#define TR_PHASES_HEADERS_ELE_TRIM "俯仰微調" +#define TR_PHASES_HEADERS_THT_TRIM "油門微調" +#define TR_PHASES_HEADERS_AIL_TRIM "橫滾微調" +#define TR_PHASES_HEADERS_CH5_TRIM "微調 5" +#define TR_PHASES_HEADERS_CH6_TRIM "微調 6" +#define TR_PHASES_HEADERS_FAD_IN "漸入" +#define TR_PHASES_HEADERS_FAD_OUT "漸出" + +#define TR_LIMITS_HEADERS_NAME "名稱" +#define TR_LIMITS_HEADERS_SUBTRIM "中點" +#define TR_LIMITS_HEADERS_MIN "低位" +#define TR_LIMITS_HEADERS_MAX "高位" +#define TR_LIMITS_HEADERS_DIRECTION "方向" +#define TR_LIMITS_HEADERS_CURVE "曲線" +#define TR_LIMITS_HEADERS_PPMCENTER "PPM中點" +#define TR_LIMITS_HEADERS_SUBTRIMMODE "微調模式" +#define TR_INVERTED "反向" + +#define TR_LSW_HEADERS_FUNCTION "功能" +#define TR_LSW_HEADERS_V1 "V1" +#define TR_LSW_HEADERS_V2 "V2" +#define TR_LSW_HEADERS_ANDSW "與開關" +#define TR_LSW_HEADERS_DURATION "持續時間" +#define TR_LSW_HEADERS_DELAY "延時" + +#define TR_GVAR_HEADERS_NAME "名稱" +#define TR_GVAR_HEADERS_FM0 "FM0值" +#define TR_GVAR_HEADERS_FM1 "FM1值" +#define TR_GVAR_HEADERS_FM2 "FM2值" +#define TR_GVAR_HEADERS_FM3 "FM3值" +#define TR_GVAR_HEADERS_FM4 "FM4值" +#define TR_GVAR_HEADERS_FM5 "FM5值" +#define TR_GVAR_HEADERS_FM6 "FM6值" +#define TR_GVAR_HEADERS_FM7 "FM7值" +#define TR_GVAR_HEADERS_FM8 "FM8值" + +// Horus footer descriptions +#define TR_LSW_DESCRIPTIONS { "比較類型或功能", "第一個變量", "第二個變量或常量", "第二個變量或常量", "啟用本行的附加條件", "邏輯開關持續時間", "邏輯開關延時開啟" } + +// Horus layouts and widgets +#define TR_FIRST_CHANNEL "起始通道" +#define TR_FILL_BACKGROUND "是否填充背景?" +#define TR_BG_COLOR "背景顏色" +#define TR_SLIDERS_TRIMS "滑塊和微調" +#define TR_SLIDERS "滑塊" +#define TR_FLIGHT_MODE "飛行模式" +#define TR_INVALID_FILE "無效的文件" +#define TR_TIMER_SOURCE "計時器選擇" +#define TR_SIZE "尺寸" +#define TR_SHADOW "陰影" +#define TR_TEXT "文本" +#define TR_COLOR "顏色" +#define TR_MAIN_VIEW_X "Main view X" +#define TR_PANEL1_BACKGROUND "面板1背景" +#define TR_PANEL2_BACKGROUND "面板2背景" + +// About screen +#define TR_ABOUTUS TR(" 關於 ", "關於") + +#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 "Companion 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 TR("www.open-tx.org author", "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(PCBFRSKY) + #define TR_ABOUT_HARDWARE_1 "FrSky" + #define TR_ABOUT_HARDWARE_2 TR("Hardware design/producer", "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 "提示音音量" +#define TR_WAV_VOLUME "語音音量" +#define TR_BG_VOLUME TR("Bg volume", "背景聲音量") + +#define TR_TOP_BAR "頂欄" +#define TR_FLASH_ERASE "正在擦除..." +#define TR_FLASH_WRITE "正在寫入..." +#define TR_OTA_UPDATE "OTA 更新..." +#define TR_MODULE_RESET "正在重啟模塊..." +#define TR_UNKNOWN_RX "未知接收機" +#define TR_UNSUPPORTED_RX "不支持此接收機" +#define TR_OTA_UPDATE_ERROR "OTA 更新失敗" +#define TR_DEVICE_RESET "正在重啟設備..." +#define TR_ALTITUDE INDENT "高度" +#define TR_SCALE "比例" +#define TR_VIEW_CHANNELS "查看通道" +#define TR_VIEW_NOTES "View Notes" +#define TR_MODEL_SELECT "模型選擇" +#define TR_MODS_FORBIDDEN "禁止修改!" +#define TR_UNLOCKED "已解鎖" +#define TR_ID "ID" +#define TR_PRECISION "精度" +#define TR_RATIO "比率" +#define TR_FORMULA "公式" +#define TR_CELLINDEX "單節電池編號" +#define TR_LOGS "日誌" +#define TR_OPTIONS "選項" +#define TR_FIRMWARE_OPTIONS "韌體選項" + +#define TR_ALTSENSOR "Alt 傳感器" +#define TR_CELLSENSOR "Cell 傳感器" +#define TR_GPSSENSOR "GPS 傳感器" +#define TR_CURRENTSENSOR "傳感器" +#define TR_AUTOOFFSET "自動偏移值" +#define TR_ONLYPOSITIVE "正向" +#define TR_FILTER "濾波" +#define TR_TELEMETRYFULL TR("All slots full!", "回傳項目已滿!") +#define TR_SERVOS_OK "Servos OK" +#define TR_SERVOS_KO "Servos KO" +#define TR_INVERTED_SERIAL INDENT "反向" +#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "忽略ID鑑別") +#define TR_DISCOVER_SENSORS "掃描新的回傳項目" +#define TR_STOP_DISCOVER_SENSORS "停止掃描" +#define TR_DELETE_ALL_SENSORS "刪除所有回傳項目" +#define TR_CONFIRMDELETE "真的 " LCDW_128_480_LINEBREAK "要刪除全部嗎 ?" +#define TR_SELECT_WIDGET "選擇小部件" +#define TR_REMOVE_WIDGET "移除小部件" +#define TR_WIDGET_SETTINGS "小部件設置" +#define TR_REMOVE_SCREEN "移除頁面" +#define TR_SETUP_WIDGETS "設置小部件" +#define TR_USER_INTERFACE "用戶界面" +#define TR_THEME "主題" +#define TR_SETUP "設置" +#define TR_MAINVIEWX "Main view X" +#define TR_LAYOUT "佈局" +#define TR_ADD_MAIN_VIEW "添加主視圖" +#define TR_BACKGROUND_COLOR "背景顏色" +#define TR_MAIN_COLOR "主顏色" +#define TR_BAR2_COLOR "二級條形圖顏色" +#define TR_BAR1_COLOR "主條形圖顏色" +#define TR_TEXT_COLOR "文本顏色" +#define TR_TEXT_VIEWER "文本視圖" +#define TR_MENU_INPUTS STR_CHAR_INPUT "輸入" +#define TR_MENU_LUA STR_CHAR_LUA "LUA腳本" +#define TR_MENU_STICKS STR_CHAR_STICK "搖桿" +#define TR_MENU_POTS STR_CHAR_POT "旋鈕" +#define TR_MENU_MAX STR_CHAR_FUNCTION "固定值MAX" +#define TR_MENU_HELI STR_CHAR_CYC "斜盤混控CYC" +#define TR_MENU_TRIMS STR_CHAR_TRIM "微調" +#define TR_MENU_SWITCHES STR_CHAR_SWITCH "開關" +#define TR_MENU_LOGICAL_SWITCHES STR_CHAR_SWITCH "邏輯開關" +#define TR_MENU_TRAINER STR_CHAR_TRAINER "教練" +#define TR_MENU_CHANNELS STR_CHAR_CHANNEL "通道" +#define TR_MENU_GVARS STR_CHAR_SLIDER "全局變量" +#define TR_MENU_TELEMETRY STR_CHAR_TELEMETRY "回傳" +#define TR_MENU_DISPLAY "顯示" +#define TR_MENU_OTHER "其它" +#define TR_MENU_INVERT "反向" +#define TR_JITTER_FILTER "類比輸入濾波" +#define TR_RTC_CHECK TR("Check RTC", "檢查時間驅動電池電壓") +#define TR_AUTH_FAILURE "驗證失敗" + +#define ZSTR_VFR "VFR" +#define ZSTR_RSSI "RSSI" +#define ZSTR_R9PW "R9PW" +#define ZSTR_RAS "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_TEMP1 "Tmp1" +#define ZSTR_TEMP2 "Tmp2" +#define ZSTR_TEMP3 "Tmp3" +#define ZSTR_TEMP4 "Tmp4" +#define ZSTR_RPM2 "RPM2" +#define ZSTR_PRES "Pres" +#define ZSTR_ODO1 "Odo1" +#define ZSTR_ODO2 "Odo2" +#define ZSTR_TXV "TX_V" +#define ZSTR_CURR_SERVO1 "CSv1" +#define ZSTR_CURR_SERVO2 "CSv2" +#define ZSTR_CURR_SERVO3 "CSv3" +#define ZSTR_CURR_SERVO4 "CSv4" +#define ZSTR_DIST "Dist" +#define ZSTR_ARM "Arm" +#define ZSTR_C50 "C50" +#define ZSTR_C200 "C200" +#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_GYROX "GYRX" +#define ZSTR_GYROY "GYRY" +#define ZSTR_GYROZ "GYRZ" +#define ZSTR_CURR "Curr" +#define ZSTR_CAPACITY "Capa" +#define ZSTR_VFAS "VFAS" +#define ZSTR_BATT_PERCENT "Bat%" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_SATELLITES "Sats" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" +#define ZSTR_BATT1_VOLTAGE "RB1V" +#define ZSTR_BATT2_VOLTAGE "RB2V" +#define ZSTR_BATT1_CURRENT "RB1A" +#define ZSTR_BATT2_CURRENT "RB2A" +#define ZSTR_BATT1_CONSUMPTION "RB1C" +#define ZSTR_BATT2_CONSUMPTION "RB2C" +#define ZSTR_BATT1_TEMP "RB1T" +#define ZSTR_BATT2_TEMP "RB2T" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" +#define ZSTR_RX_RSSI1 "1RSS" +#define ZSTR_RX_RSSI2 "2RSS" +#define ZSTR_RX_QUALITY "RQly" +#define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" +#define ZSTR_ANTENNA "ANT" +#define ZSTR_RF_MODE "RFMD" +#define ZSTR_TX_POWER "TPWR" +#define ZSTR_TX_RSSI "TRSS" +#define ZSTR_TX_QUALITY "TQly" +#define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" +#define ZSTR_PITCH "Ptch" +#define ZSTR_ROLL "Roll" +#define ZSTR_YAW "Yaw" +#define ZSTR_FLIGHT_MODE "FM" +#define ZSTR_THROTTLE "Thr" +#define ZSTR_QOS_A "FdeA" +#define ZSTR_QOS_B "FdeB" +#define ZSTR_QOS_L "FdeL" +#define ZSTR_QOS_R "FdeR" +#define ZSTR_QOS_F "FLss" +#define ZSTR_QOS_H "Hold" +#define ZSTR_BIND "BIND" +#define ZSTR_LAP_NUMBER "Lap " +#define ZSTR_GATE_NUMBER "Gate" +#define ZSTR_LAP_TIME "LapT" +#define ZSTR_GATE_TIME "GteT" +#define ZSTR_ESC_VOLTAGE "EscV" +#define ZSTR_ESC_CURRENT "EscA" +#define ZSTR_ESC_RPM "Erpm" +#define ZSTR_ESC_CONSUMPTION "EscC" +#define ZSTR_ESC_TEMP "EscT" +#define ZSTR_SD1_CHANNEL "Chan" +#define ZSTR_GASSUIT_TEMP1 "GTp1" +#define ZSTR_GASSUIT_TEMP2 "GTp2" +#define ZSTR_GASSUIT_RPM "GRPM" +#define ZSTR_GASSUIT_FLOW "GFlo" +#define ZSTR_GASSUIT_CONS "GFue" +#define ZSTR_GASSUIT_RES_VOL "GRVl" +#define ZSTR_GASSUIT_RES_PERC "GRPc" +#define ZSTR_GASSUIT_MAX_FLOW "GMFl" +#define ZSTR_GASSUIT_AVG_FLOW "GAFl" +#define ZSTR_SBEC_VOLTAGE "BecV" +#define ZSTR_SBEC_CURRENT "BecA" +#define ZSTR_RB3040_EXTRA_STATE "RBES" +#define ZSTR_RB3040_CHANNEL1 "CH1A" +#define ZSTR_RB3040_CHANNEL2 "CH2A" +#define ZSTR_RB3040_CHANNEL3 "CH3A" +#define ZSTR_RB3040_CHANNEL4 "CH4A" +#define ZSTR_RB3040_CHANNEL5 "CH5A" +#define ZSTR_RB3040_CHANNEL6 "CH6A" +#define ZSTR_RB3040_CHANNEL7 "CH7A" +#define ZSTR_RB3040_CHANNEL8 "CH8A" +#define ZSTR_ESC_VIN "EVIN" +#define ZSTR_ESC_TFET "TFET" +#define ZSTR_ESC_CUR "ECUR" +#define ZSTR_ESC_TBEC "TBEC" +#define ZSTR_ESC_BCUR "CBEC" +#define ZSTR_ESC_VBEC "VBEC" +#define ZSTR_ESC_THR "ETHR" +#define ZSTR_ESC_POUT "EOUT" +#define ZSTR_SMART_BAT_BTMP "BTmp" +#define ZSTR_SMART_BAT_BCUR "BCur" +#define ZSTR_SMART_BAT_BCAP "BUse" +#define ZSTR_SMART_BAT_MIN_CEL "CLMi" +#define ZSTR_SMART_BAT_MAX_CEL "CLMa" +#define ZSTR_SMART_BAT_CYCLES "Cycl" +#define ZSTR_SMART_BAT_CAPACITY "BCpT" +#define ZSTR_CL01 "Cel1" +#define ZSTR_CL02 "Cel2" +#define ZSTR_CL03 "Cel3" +#define ZSTR_CL04 "Cel4" +#define ZSTR_CL05 "Cel5" +#define ZSTR_CL06 "Cel6" +#define ZSTR_CL07 "Cel7" +#define ZSTR_CL08 "Cel8" +#define ZSTR_CL09 "Cel9" +#define ZSTR_CL10 "Cl10" +#define ZSTR_CL11 "Cl11" +#define ZSTR_CL12 "Cl12" +#define ZSTR_CL13 "Cl13" +#define ZSTR_CL14 "Cl14" +#define ZSTR_CL15 "Cl15" +#define ZSTR_CL16 "Cl16" +#define ZSTR_CL17 "Cl17" +#define ZSTR_CL18 "Cl18" +#define ZSTR_FRAME_RATE "FRat" +#define ZSTR_TOTAL_LATENCY "TLat" +#define ZSTR_VTX_FREQ "VFrq" +#define ZSTR_VTX_PWR "VPwr" +#define ZSTR_VTX_CHAN "VChn" +#define ZSTR_VTX_BAND "VBan" +#define ZSTR_SERVO_CURRENT "SrvA" +#define ZSTR_SERVO_VOLTAGE "SrvV" +#define ZSTR_SERVO_TEMPERATURE "SrvT" +#define ZSTR_SERVO_STATUS "SrvS" diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 328e33fe6..a8dd02e35 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -30,7 +30,7 @@ #if defined(PCBX12S) - #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0""\213L1\0""\213L2\0" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy" + #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_TRIM "L1\0" STR_CHAR_TRIM "L2\0" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy" #define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SE\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0" #elif defined(PCBX10) #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy" @@ -45,8 +45,8 @@ #define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"S2\0" #define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0" #elif defined(RADIO_TX12) - #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" - #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SI\0""\312SJ\0" + #define TR_POTS_VSRCRAW STR_CHAR_POT "S1\0" STR_CHAR_POT "S2\0" + #define TR_SW_VSRCRAW STR_CHAR_SWITCH "SA\0" STR_CHAR_SWITCH "SB\0" STR_CHAR_SWITCH "SC\0" STR_CHAR_SWITCH "SD\0" STR_CHAR_SWITCH "SE\0" STR_CHAR_SWITCH "SF\0" STR_CHAR_SWITCH "SI\0" STR_CHAR_SWITCH "SJ\0" #elif defined(RADIO_TX12) #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SI\0""\312SJ\0" @@ -261,21 +261,24 @@ #define TR_SENSOR_SBEC_VOLTAGE "BecV" #define TR_SENSOR_SBEC_CURRENT "BecA" -#define STR_CHAR_UP "\200" -#define STR_CHAR_DOWN "\201" -#define STR_CHAR_DELTA "\206" -#define STR_CHAR_STICK "\207" -#define STR_CHAR_POT "\210" -#define STR_CHAR_SLIDER "\211" -#define STR_CHAR_SWITCH "\212" -#define STR_CHAR_TRIM "\213" -#define STR_CHAR_INPUT "\214" -#define STR_CHAR_FUNCTION "\215" -#define STR_CHAR_CYC "\216" -#define STR_CHAR_TRAINER "\217" -#define STR_CHAR_CHANNEL "\220" -#define STR_CHAR_TELEMETRY "\221" -#define STR_CHAR_LUA "\222" +#define STR_CHAR_RIGHT "\200" +#define STR_CHAR_LEFT "\201" +#define STR_CHAR_UP "\202" +#define STR_CHAR_DOWN "\203" + +#define STR_CHAR_DELTA "\210" +#define STR_CHAR_STICK "\211" +#define STR_CHAR_POT "\212" +#define STR_CHAR_SLIDER "\213" +#define STR_CHAR_SWITCH "\214" +#define STR_CHAR_TRIM "\215" +#define STR_CHAR_INPUT "\216" +#define STR_CHAR_FUNCTION "\217" +#define STR_CHAR_CYC "\220" +#define STR_CHAR_TRAINER "\221" +#define STR_CHAR_CHANNEL "\222" +#define STR_CHAR_TELEMETRY "\223" +#define STR_CHAR_LUA "\224" #define CHAR_UP STR_CHAR_UP[0] #define CHAR_DOWN STR_CHAR_DOWN[0] diff --git a/tools/build-font-bitmap.py b/tools/build-font-bitmap.py index ca46058dc..e4954376b 100755 --- a/tools/build-font-bitmap.py +++ b/tools/build-font-bitmap.py @@ -5,12 +5,13 @@ import argparse import os import sys from PIL import Image, ImageDraw, ImageFont -from charset import get_chars, special_chars, extra_chars +from charset import get_chars, special_chars, extra_chars, standard_chars class FontBitmap: - def __init__(self, chars, font_size, font_name, cjk_font_name, foreground, background): - self.chars = chars + def __init__(self, language, font_size, font_name, cjk_font_name, foreground, background): + self.language = language + self.chars = get_chars(language) self.font_size = font_size self.foreground = foreground self.background = background @@ -95,18 +96,21 @@ class FontBitmap: for c in self.chars: if c == " ": w = 4 - elif c in special_chars["cn"]: - w = self.draw_char(image, width, c, self.cjk_font, -3) elif c in extra_chars: if self.extra_bitmap: + for i in range(128 - 32 - len(standard_chars)): + coords.append(width) image.paste(self.extra_bitmap.copy(), (width, 0)) for coord in [14, 14, 12, 12, 13, 13, 13, 13, 13] + [15] * 12: - width += coord coords.append(width) + width += coord self.extra_bitmap = None continue + elif c in special_chars[self.language]: + w = self.draw_char(image, width, c, self.cjk_font, -3) else: w = self.draw_char(image, width, c, self.font) + coords.append(width) width += w @@ -132,13 +136,13 @@ def main(): parser = argparse.ArgumentParser(description="Builder for OpenTX font files") parser.add_argument('--output', help="Output file name") - parser.add_argument('--subset', help="Subset", default="all") + parser.add_argument('--subset', help="Subset") parser.add_argument('--size', type=int, help="Font size") parser.add_argument('--font', help="Font name") parser.add_argument('--cjk-font', help="CJK font name") args = parser.parse_args() - font = FontBitmap(get_chars(args.subset), args.size, args.font, args.cjk_font, (0, 0, 0), (255, 255, 255)) + font = FontBitmap(args.subset, args.size, args.font, args.cjk_font, (0, 0, 0), (255, 255, 255)) font.generate(args.output) diff --git a/tools/charset.py b/tools/charset.py index 9fc3222bd..66576c628 100644 --- a/tools/charset.py +++ b/tools/charset.py @@ -10,10 +10,10 @@ standard_chars = """ !"#$%&'()*+,-./0123456789:;<=>?°ABCDEFGHIJKLMNOPQRSTUVWXYZ extra_chars = "".join([chr(0x10000+i) for i in range(21)]) -def chinese_chars(): +def cjk_chars(lang): charset = set() tools_path = os.path.dirname(os.path.realpath(__file__)) - with open(os.path.join(tools_path, "../radio/src/translations/cn.h.txt"), encoding='utf-8') as f: + with open(os.path.join(tools_path, "../radio/src/translations/%s.h.txt" % lang), encoding='utf-8') as f: data = f.read() for c in data: if 0x4E00 <= ord(c) <= 0x9FFF: @@ -36,7 +36,8 @@ special_chars = { "pl": "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ", "pt": "ÁáÂâÃãÀàÇçÉéÊêÍíÓóÔôÕõÚú", "se": "åäöÅÄÖ", - "cn": "".join(chinese_chars()) + "cn": "".join(cjk_chars("cn")), + "tw": "".join(cjk_chars("tw")), } subset_lowercase = { @@ -53,7 +54,7 @@ subset_lowercase = { def get_chars(subset): result = standard_chars + extra_chars - if subset == "all": + if False: # subset == "all": for key, chars in special_chars.items(): result += "".join([char for char in chars if char not in result]) else: @@ -64,11 +65,11 @@ def get_chars(subset): def get_chars_encoding(subset): result = {} - if subset == "all": + if subset in ("cn", "tw"): chars = get_chars(subset) for char in chars: - if char in special_chars["cn"]: - index = special_chars["cn"].index(char) + 1 + if char in special_chars[subset]: + index = special_chars[subset].index(char) + 1 if index >= 0x100: index += 1 result[char] = "\\%03o\\%03o" % (0xFE + ((index >> 8) & 0x01), index & 0xFF) diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh index 700f7ae07..793b0f3d2 100755 --- a/tools/commit-tests.sh +++ b/tools/commit-tests.sh @@ -232,7 +232,7 @@ fi if [[ " TX16S COLORLCD ALL " =~ \ ${FLAVOR}\ ]] ; then # OpenTX on TX16S boards rm -rf ./* || true - cmake "${COMMON_OPTIONS}" -DPCB=X10 -DPCBREV=TX16S -DHELI=YES -DLUA=YES -DGVARS=YES "${SRCDIR}" + cmake "${COMMON_OPTIONS}" -DPCB=X10 -DPCBREV=TX16S -DHELI=YES -DLUA=YES -DGVARS=YES -DTRANSLATIONS=CN "${SRCDIR}" make -j"${CORES}" ${FIRMARE_TARGET} make -j"${CORES}" libsimulator make -j"${CORES}" tests-radio diff --git a/tools/encode-translation.py b/tools/encode-translation.py index 10282afa3..c4b237a63 100755 --- a/tools/encode-translation.py +++ b/tools/encode-translation.py @@ -15,7 +15,7 @@ def main(): parser.add_argument("--reverse", help="Reversed char conversion (from number to char)", action="store_true") args = parser.parse_args() - if args.language != "all" and args.language not in special_chars: + if args.language not in special_chars: parser.error(args.language + ' is not a supported language. Try one of the supported ones: %s' % list(special_chars.keys())) sys.exit()