From bccae9691744ab17c4fe73c9eb0de2eb60faa449 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Tue, 20 Sep 2022 12:35:19 +1000 Subject: [PATCH] chore: Add some translation strings + update helper script (#2328) * fix: Update translation helper for LVGL changes Also: - make paths more OS agnostic - auto-ignore `untranslated.h` since adding to all translations - flag required parameter as required * fix: Add more Label related translatable strings * chore: Italian translations from @robustini Also some minor formatting tidyup * chore: Swedish translation from @ulfhedlund * chore: Danish translation from @HThuren --- radio/src/gui/colorlcd/model_select.cpp | 14 +++++++--- radio/src/translations.cpp | 4 +++ radio/src/translations.h | 4 +++ radio/src/translations/cn.h | 4 +++ radio/src/translations/cz.h | 4 +++ radio/src/translations/da.h | 4 +++ radio/src/translations/de.h | 4 +++ radio/src/translations/en.h | 4 +++ radio/src/translations/es.h | 4 +++ radio/src/translations/fi.h | 4 +++ radio/src/translations/fr.h | 4 +++ radio/src/translations/it.h | 36 ++++++++++++++----------- radio/src/translations/nl.h | 4 +++ radio/src/translations/pl.h | 4 +++ radio/src/translations/pt.h | 4 +++ radio/src/translations/se.h | 4 +++ radio/src/translations/translation.py | 12 +++++---- radio/src/translations/tw.h | 4 +++ 18 files changed, 97 insertions(+), 25 deletions(-) diff --git a/radio/src/gui/colorlcd/model_select.cpp b/radio/src/gui/colorlcd/model_select.cpp index 1c5d82956..4fe446a29 100644 --- a/radio/src/gui/colorlcd/model_select.cpp +++ b/radio/src/gui/colorlcd/model_select.cpp @@ -267,7 +267,10 @@ class ModelButton : public Button buffer->clear(COLOR_THEME_PRIMARY2); if (error) { - buffer->drawText(width() / 2, height() / 2, "(Invalid Model)", + std::string errorMsg = "("; + errorMsg += STR_INVALID_MODEL; + errorMsg += ")"; + buffer->drawText(width() / 2, height() / 2, errorMsg.c_str(), COLOR_THEME_SECONDARY1 | CENTERED); } else { GET_FILENAME(filename, BITMAPS_PATH, modelCell->modelBitmap, ""); @@ -276,7 +279,10 @@ class ModelButton : public Button buffer->drawScaledBitmap(bitmap, 0, 0, width(), height()); delete bitmap; } else { - buffer->drawText(width() / 2, 56, "(No Picture)", + std::string errorMsg = "("; + errorMsg += STR_NO_PICTURE; + errorMsg += ")"; + buffer->drawText(width() / 2, 56, errorMsg.c_str(), FONT(XXS) | COLOR_THEME_SECONDARY1 | CENTERED); } } @@ -810,7 +816,7 @@ void ModelLabelsWindow::buildBody(FormWindow *window) }); if (modelslabels.getLabels().size() > 1) { if (selected != 0) { - menu->addLine("Move Up", [=]() { + menu->addLine(STR_MOVE_UP, [=]() { modelslabels.moveLabelTo(selected, selected - 1); std::set newset; newset.insert(selected - 1); @@ -822,7 +828,7 @@ void ModelLabelsWindow::buildBody(FormWindow *window) }); } if (selected != (int)modelslabels.getLabels().size() - 1) { - menu->addLine("Move Down", [=]() { + menu->addLine(STR_MOVE_DOWN, [=]() { modelslabels.moveLabelTo(selected, selected + 1); std::set newset; newset.insert(selected + 1); diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index bd3f93146..866e9c39d 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -133,6 +133,7 @@ const char STR_LOADINGMODEL[] = TR_LOADINGMODEL; const char STR_UNLABELEDMODEL[] = TR_UNLABELEDMODEL; const char STR_NAME[] = TR_NAME; const char STR_BITMAP[] = TR_BITMAP; +const char STR_NO_PICTURE[] = TR_NO_PICTURE; const char STR_TIMER[] = TR_TIMER; const char STR_START[] = TR_START; const char STR_ELIMITS[] = TR_ELIMITS; @@ -340,7 +341,10 @@ const char STR_SELECT_MODE[] = TR_SELECT_MODE; const char STR_CREATE_MODEL[] = TR_CREATE_MODEL; const char STR_FAVORITE_LABEL[] = TR_FAVORITE_LABEL; const char STR_NEW_MODEL[] = TR_NEW_MODEL; +const char STR_INVALID_MODEL[] = TR_INVALID_MODEL; const char STR_EDIT_LABELS[] = TR_EDIT_LABELS; +const char STR_MOVE_UP[] = TR_MOVE_UP; +const char STR_MOVE_DOWN[] = TR_MOVE_DOWN; const char STR_DUPLICATE_MODEL[] = TR_DUPLICATE_MODEL; const char STR_COPY_MODEL[] = TR_COPY_MODEL; const char STR_MOVE_MODEL[] = TR_MOVE_MODEL; diff --git a/radio/src/translations.h b/radio/src/translations.h index 1e2b90262..abcc57d85 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -237,6 +237,7 @@ extern const char STR_LOADINGMODEL[]; extern const char STR_UNLABELEDMODEL[]; extern const char STR_NAME[]; extern const char STR_BITMAP[]; +extern const char STR_NO_PICTURE[]; extern const char STR_TIMER[]; extern const char STR_START[]; extern const char STR_ELIMITS[]; @@ -539,7 +540,10 @@ extern const char STR_SELECT_MODE[]; extern const char STR_CREATE_MODEL[]; extern const char STR_FAVORITE_LABEL[]; extern const char STR_NEW_MODEL[]; +extern const char STR_INVALID_MODEL[]; extern const char STR_EDIT_LABELS[]; +extern const char STR_MOVE_UP[]; +extern const char STR_MOVE_DOWN[]; extern const char STR_DUPLICATE_MODEL[]; extern const char STR_COPY_MODEL[]; extern const char STR_MOVE_MODEL[]; diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 204b1cbdc..d9a172581 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -344,6 +344,7 @@ #define TR_INPUTNAME TR("名称", "输入名称") #define TR_EXPONAME TR("名称", "曲线名称") #define TR_BITMAP "模型图片" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("计时器", "计时器 ") #define TR_START "开始" #define TR_ELIMITS TR("扩展行程", "扩展通道行程") @@ -637,7 +638,10 @@ #define TR_CREATE_MODEL "创建模型" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index cb21660f8..f350907ca 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -362,6 +362,7 @@ #define TR_INPUTNAME "Název" #define TR_EXPONAME "Popis" #define TR_BITMAP "Obrázek" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER "Stopky" #define TR_START "Start" #define TR_ELIMITS TR("Limit +25%", "Kanál +/- 125%") @@ -653,7 +654,10 @@ #define TR_CREATE_MODEL "Nový model" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index ba21756d2..d46bc17d9 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -344,6 +344,7 @@ #define TR_INPUTNAME TR("Indgang", "Indgang navn") #define TR_EXPONAME TR("Navn", "Line navn") #define TR_BITMAP "Model billede" +#define TR_NO_PICTURE "Ingen billede" #define TR_TIMER TR("Timer", "Timer ") #define TR_START "Start" #define TR_ELIMITS TR("Udv.Grænser", "Udvidet grænser") @@ -637,7 +638,10 @@ #define TR_CREATE_MODEL "Opret model" #define TR_FAVORITE_LABEL "Favoritter" #define TR_NEW_MODEL "Ny model" +#define TR_INVALID_MODEL "Ingen billede" #define TR_EDIT_LABELS "Ret type" +#define TR_MOVE_UP "Ingen billede" +#define TR_MOVE_DOWN "Flyt ned" #define TR_ENTER_LABEL "Vælg type" #define TR_LABEL "Type" #define TR_LABELS "Typer" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index ccbedbefc..eb6baf38f 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -349,6 +349,7 @@ #define TR_INPUTNAME TR("Input", "Input name") #define TR_EXPONAME TR("Name", "Line name") #define TR_BITMAP "Modellfoto" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER "Timer" #define TR_START "Start" #define TR_ELIMITS TR("Erw. Limit", "Erw. Wege auf 150%") @@ -636,7 +637,10 @@ #define TR_CREATE_MODEL TR("Neues Modell" , "Neues Modell erstellen") #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 83ca20d37..14656213b 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -343,6 +343,7 @@ #define TR_INPUTNAME TR("Input", "Input name") #define TR_EXPONAME TR("Name", "Line name") #define TR_BITMAP "Model image" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("Timer", "Timer ") #define TR_START "Start" #define TR_ELIMITS TR("E.Limits", "Extended limits") @@ -636,7 +637,10 @@ #define TR_CREATE_MODEL "Create model" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 8437f0758..858fe7abd 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -345,6 +345,7 @@ #define TR_INPUTNAME TR("Entrada", "Nom. entrada") #define TR_EXPONAME TR("Nom.", "Nombre expo") #define TR_BITMAP "Imagen modelo" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("Timer", "Timer ") #define TR_START "Start" #define TR_ELIMITS TR("E.Límite", "Ampliar límites") @@ -637,7 +638,10 @@ #define TR_CREATE_MODEL "Crear modelo" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index 499720675..543aaafb2 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -359,6 +359,7 @@ #define TR_EXPONAME "Expo Name" #endif #define TR_BITMAP "Model Image" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER "Timer" #define TR_START "Start" #define TR_ELIMITS TR("E.Limits", "Extended Limits") @@ -651,7 +652,10 @@ #define TR_CREATE_MODEL "Create Model" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 887dc4634..46ff3e1a8 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -365,6 +365,7 @@ #define TR_INPUTNAME TR("Entrée", "Nom entrée") #define TR_EXPONAME TR("Nom", "Nom ligne") #define TR_BITMAP "Image du modèle" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER "Chrono " #define TR_START "Start" #define TR_ELIMITS TR("Limites ét.", "Limites étendues") @@ -656,7 +657,10 @@ #define TR_CREATE_MODEL "Créer modèle" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 0b7140c89..9b782e38b 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -336,22 +336,23 @@ #define TR_MENUWHENDONE CENTER "\007" TR_ENTER " Conferma" #define TR_FREE "Disp." -#define TR_YES "Si" -#define TR_NO "No" +#define TR_YES "Si" +#define TR_NO "No" #define TR_DELETEMODEL "CANCELLA" BREAKSPACE "MODELLO" #define TR_COPYINGMODEL "Copia in corso.." #define TR_MOVINGMODEL "Spostamento..." #define TR_LOADINGMODEL "Caricamento..." #define TR_UNLABELEDMODEL "Senza etic." #define TR_NAME "Nome" -#define TR_MODELNAME TR("Nome Mode.", "Nome Modello") +#define TR_MODELNAME TR("Nome Mode.", "Nome Modello") #define TR_PHASENAME "Nome Fase" #define TR_MIXNAME "Nome Mix" #define TR_INPUTNAME "Nome Ingr." - #define TR_EXPONAME "Nome Expo" +#define TR_EXPONAME "Nome Expo" #define TR_BITMAP "Immagine" +#define TR_NO_PICTURE "No immagine" #define TR_TIMER TR("Timer", "Timer ") -#define TR_START "Start" +#define TR_START "Start" #define TR_ELIMITS TR("Lim. Est.", "Limiti Estesi") #define TR_ETRIMS TR("Trim Est.", "Trim Estesi") #define TR_TRIMINC "Passo Trim" @@ -635,17 +636,20 @@ #define TR_MODELS "Modelli" #define TR_SELECT_MODE "Seleziona modo" #define TR_CREATE_MODEL "Crea Modello" -#define TR_FAVORITE_LABEL "Favoriti" -#define TR_NEW_MODEL "Nuovo Modello" -#define TR_EDIT_LABELS "Edita Etichette" -#define TR_ENTER_LABEL "Edita Etichetta" -#define TR_LABEL "Etichetta" -#define TR_LABELS "Etichette" -#define TR_CURRENT_MODEL "Corrente" -#define TR_NEW "Nuovo" -#define TR_NEW_LABEL "Nuova Etichetta" -#define TR_RENAME_LABEL "Rinomina Etichetta" -#define TR_DELETE_LABEL "Cancella Etichetta" +#define TR_FAVORITE_LABEL "Favoriti" +#define TR_NEW_MODEL "Nuovo Modello" +#define TR_INVALID_MODEL "Modello invalido" +#define TR_EDIT_LABELS "Edita Etichette" +#define TR_MOVE_UP "Muovi Su" +#define TR_MOVE_DOWN "Muovi Giù" +#define TR_ENTER_LABEL "Edita Etichetta" +#define TR_LABEL "Etichetta" +#define TR_LABELS "Etichette" +#define TR_CURRENT_MODEL "Corrente" +#define TR_NEW "Nuovo" +#define TR_NEW_LABEL "Nuova Etichetta" +#define TR_RENAME_LABEL "Rinomina Etichetta" +#define TR_DELETE_LABEL "Cancella Etichetta" #define TR_DUPLICATE_MODEL "Duplica Modello" #define TR_COPY_MODEL "Copia Modello" #define TR_MOVE_MODEL "Sposta Modello" diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index 050fdbfa0..4694b76ea 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -348,6 +348,7 @@ #define TR_INPUTNAME "Input Naam" #define TR_EXPONAME "Lijn Naam" #define TR_BITMAP "Modelafbeelding" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("Timer", "Timer ") #define TR_START "Start" #define TR_ELIMITS TR("E.Limits", "Extended Limits") @@ -642,7 +643,10 @@ #define TR_CREATE_MODEL "Nieuw Model" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 6d22f99fe..960b7f712 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -345,6 +345,7 @@ #define TR_INPUTNAME "Wpisz Nazw" #define TR_EXPONAME "LiniaNazw" #define TR_BITMAP "Obrazek " +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("Timer", "Timer ") #define TR_START "Start" #define TR_ELIMITS TR("Limi+25%", "Kanał +/- 125% ") @@ -633,7 +634,10 @@ #define TR_CREATE_MODEL "Nowy model" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 6d5527d55..842721c68 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -347,6 +347,7 @@ #define TR_EXPONAME "Expo Name" #endif #define TR_BITMAP "Model Image" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER "Cronom" #define TR_START "Start" #define TR_ELIMITS "E.Limits" @@ -639,7 +640,10 @@ #define TR_CREATE_MODEL "Criar Modelo" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index dbaf1acee..e0cce8621 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -374,6 +374,7 @@ #define TR_INPUTNAME TR("Input","Inputnamn") #define TR_EXPONAME TR("Namn","Radnamn") #define TR_BITMAP "Modellikon" +#define TR_NO_PICTURE "Ingen bild" #define TR_TIMER TR("Timer","Timer ") #define TR_START "Start" #define TR_ELIMITS TR("Gränser++","Utökade gränser") @@ -676,7 +677,10 @@ #define TR_CREATE_MODEL "Skapa modell" #define TR_FAVORITE_LABEL "Favoriter" #define TR_NEW_MODEL "Ny modell" +#define TR_INVALID_MODEL "Ogiltig modell" #define TR_EDIT_LABELS "Redigera etiketter" +#define TR_MOVE_UP "Flytta uppp" +#define TR_MOVE_DOWN "Flytta ner" #define TR_ENTER_LABEL "Ange etikett" #define TR_LABEL "Etikett" #define TR_LABELS "Etiketter" diff --git a/radio/src/translations/translation.py b/radio/src/translations/translation.py index b2977fb8e..12cd6b260 100755 --- a/radio/src/translations/translation.py +++ b/radio/src/translations/translation.py @@ -6,7 +6,7 @@ import argparse TRANSLATIONS_PATH = os.path.dirname(os.path.realpath(__file__)) - +SRC_PATH = os.path.dirname(TRANSLATIONS_PATH) def add_line(filename, newline, args): print(filename, newline) @@ -30,20 +30,22 @@ def add_line(filename, newline, args): def modify_translations(args): - for filename in glob.glob(TRANSLATIONS_PATH + "/*.h.txt"): + for filename in glob.glob(TRANSLATIONS_PATH + os.sep + "*.h"): + if os.path.basename(filename) == "untranslated.h": + continue newline = '#define TR_%s%s"%s"' % (args.name, " " * max(1, 28 - len(args.name)), args.value) add_line(filename, newline, args) def modify_declaration(args): newline = 'extern const char STR_%s[];' % args.name - filename = TRANSLATIONS_PATH + "/../translations.h" + filename = SRC_PATH + os.sep+ "translations.h" add_line(filename, newline, args) def modify_definition(args): newline = 'const char STR_%s[] = TR_%s;' % (args.name, args.name) - filename = TRANSLATIONS_PATH + "/../translations.cpp" + filename = SRC_PATH + os.sep + "translations.cpp" add_line(filename, newline, args) @@ -51,7 +53,7 @@ def main(): parser = argparse.ArgumentParser(description="Helper to manage translations") parser.add_argument("--after", required=False, help="String just before the new one") parser.add_argument("--before", required=False, help="String just after the new one") - parser.add_argument("--name", help="String name") + parser.add_argument("--name", required=True, help="String name") parser.add_argument("value", help="String value") args = parser.parse_args() diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index b3ef8020f..3fb3f97e3 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -343,6 +343,7 @@ #define TR_INPUTNAME TR("名稱", "輸入名稱") #define TR_EXPONAME TR("名稱", "曲線名稱") #define TR_BITMAP "模型圖片" +#define TR_NO_PICTURE "No Picture" #define TR_TIMER TR("計時器", "計時器 ") #define TR_START "開始" #define TR_ELIMITS TR("E.Limits", "擴展通道行程") @@ -636,7 +637,10 @@ #define TR_CREATE_MODEL "創建模型" #define TR_FAVORITE_LABEL "Favorites" #define TR_NEW_MODEL "New Model" +#define TR_INVALID_MODEL "Invalid Model" #define TR_EDIT_LABELS "Edit Labels" +#define TR_MOVE_UP "Move Up" +#define TR_MOVE_DOWN "Move Down" #define TR_ENTER_LABEL "Enter Label" #define TR_LABEL "Label" #define TR_LABELS "Labels"