From 7d6d7d11c08c317b1b4dd7c130cc40cf197a24e0 Mon Sep 17 00:00:00 2001 From: Alvin Wong Date: Fri, 9 Apr 2021 17:16:03 +0800 Subject: [PATCH] Put translation str indices into a struct --- Translations/make_translation.py | 16 +++-- source/Core/Inc/Translation.h | 105 ++++++++++++++++-------------- source/Core/Src/gui.cpp | 68 +++++++++---------- source/Core/Threads/GUIThread.cpp | 36 +++++----- 4 files changed, 119 insertions(+), 106 deletions(-) diff --git a/Translations/make_translation.py b/Translations/make_translation.py index 295c9712..dcb8f7b1 100755 --- a/Translations/make_translation.py +++ b/Translations/make_translation.py @@ -567,11 +567,13 @@ def write_language(lang: dict, defs: dict, f: TextIO) -> None: assert str_offsets[idx] >= 0 return str_offsets[idx] + f.write("static const TranslationIndexTable TranslationIndices = {\n") + # ----- Write the messages string indices: for group in [str_group_messages, str_group_messageswarn, str_group_characters]: for item in group: f.write( - f"const uint16_t {item.info} = {get_offset(item.str_index)}; // {escape(str_table[item.str_index])}\n" + f" .{item.info} = {get_offset(item.str_index)}, // {escape(str_table[item.str_index])}\n" ) f.write("\n") @@ -583,12 +585,15 @@ def write_language(lang: dict, defs: dict, f: TextIO) -> None: (str_group_settingmenuentriesdesc, "SettingsMenuEntriesDescriptions"), ]: max_len = 30 - f.write(f"const uint16_t {name}[] = {{\n") + f.write(f" .{name} = {{\n") for item in group: f.write( - f" /* {item.info.ljust(max_len)[:max_len]} */ {get_offset(item.str_index)}, // {escape(str_table[item.str_index])}\n" + f" /* {item.info.ljust(max_len)[:max_len]} */ {get_offset(item.str_index)}, // {escape(str_table[item.str_index])}\n" ) - f.write(f"}}; // {name}\n\n") + f.write(f" }}, // {name}\n\n") + + f.write("}; // TranslationIndices\n\n") + f.write("const TranslationIndexTable *const Tr = &TranslationIndices;\n\n") f.write( f"const bool HasFahrenheit = {('true' if lang.get('tempUnitFahrenheit', True) else 'false')};\n" @@ -600,6 +605,9 @@ def write_language(lang: dict, defs: dict, f: TextIO) -> None: f.write( f"static_assert(static_cast(SettingsItemIndex::{eid}) == {i});\n" ) + f.write( + f"static_assert(static_cast(SettingsItemIndex::NUM_ITEMS) == {len(defs['menuOptions'])});\n" + ) def read_version() -> str: diff --git a/source/Core/Inc/Translation.h b/source/Core/Inc/Translation.h index 456ad026..feada0fb 100644 --- a/source/Core/Inc/Translation.h +++ b/source/Core/Inc/Translation.h @@ -12,56 +12,6 @@ extern const uint8_t USER_FONT_12[]; extern const uint8_t USER_FONT_6x8[]; extern const bool HasFahrenheit; -extern const char TranslationStrings[]; - -extern const uint16_t SettingsShortNames[]; -extern const uint16_t SettingsDescriptions[]; -extern const uint16_t SettingsMenuEntries[]; - -extern const uint16_t SettingsCalibrationWarning; -extern const uint16_t SettingsResetWarning; -extern const uint16_t UVLOWarningString; -extern const uint16_t UndervoltageString; -extern const uint16_t InputVoltageString; - -extern const uint16_t SleepingSimpleString; -extern const uint16_t SleepingAdvancedString; -extern const uint16_t SleepingTipAdvancedString; -extern const uint16_t IdleTipString; -extern const uint16_t IdleSetString; -extern const uint16_t TipDisconnectedString; -extern const uint16_t SolderingAdvancedPowerPrompt; -extern const uint16_t OffString; - -extern const uint16_t ResetOKMessage; -extern const uint16_t SettingsResetMessage; -extern const uint16_t NoAccelerometerMessage; -extern const uint16_t NoPowerDeliveryMessage; -extern const uint16_t LockingKeysString; -extern const uint16_t UnlockingKeysString; -extern const uint16_t WarningKeysLockedString; - -extern const uint16_t SettingRightChar; -extern const uint16_t SettingLeftChar; -extern const uint16_t SettingAutoChar; -extern const uint16_t SettingStartSolderingChar; -extern const uint16_t SettingStartSleepChar; -extern const uint16_t SettingStartSleepOffChar; -extern const uint16_t SettingStartNoneChar; -extern const uint16_t SettingSensitivityOff; -extern const uint16_t SettingSensitivityLow; -extern const uint16_t SettingSensitivityMedium; -extern const uint16_t SettingSensitivityHigh; -extern const uint16_t SettingLockDisableChar; -extern const uint16_t SettingLockBoostChar; -extern const uint16_t SettingLockFullChar; -extern const uint16_t SettingNAChar; - -extern const uint16_t SettingOffChar; -extern const uint16_t SettingFastChar; -extern const uint16_t SettingMediumChar; -extern const uint16_t SettingSlowChar; - extern const char *SymbolPlus; extern const char *SymbolMinus; extern const char *SymbolSpace; @@ -108,8 +58,63 @@ enum class SettingsItemIndex : uint8_t { AnimSpeed, PowerPulseWait, PowerPulseDuration, + NUM_ITEMS, }; +extern const char TranslationStrings[]; + +struct TranslationIndexTable { + uint16_t SettingsCalibrationWarning; + uint16_t SettingsResetWarning; + uint16_t UVLOWarningString; + uint16_t UndervoltageString; + uint16_t InputVoltageString; + + uint16_t SleepingSimpleString; + uint16_t SleepingAdvancedString; + uint16_t SleepingTipAdvancedString; + uint16_t IdleTipString; + uint16_t IdleSetString; + uint16_t TipDisconnectedString; + uint16_t SolderingAdvancedPowerPrompt; + uint16_t OffString; + + uint16_t ResetOKMessage; + uint16_t SettingsResetMessage; + uint16_t NoAccelerometerMessage; + uint16_t NoPowerDeliveryMessage; + uint16_t LockingKeysString; + uint16_t UnlockingKeysString; + uint16_t WarningKeysLockedString; + + uint16_t SettingRightChar; + uint16_t SettingLeftChar; + uint16_t SettingAutoChar; + uint16_t SettingFastChar; + uint16_t SettingSlowChar; + uint16_t SettingMediumChar; + uint16_t SettingOffChar; + uint16_t SettingStartSolderingChar; + uint16_t SettingStartSleepChar; + uint16_t SettingStartSleepOffChar; + uint16_t SettingStartNoneChar; + uint16_t SettingSensitivityOff; + uint16_t SettingSensitivityLow; + uint16_t SettingSensitivityMedium; + uint16_t SettingSensitivityHigh; + uint16_t SettingLockDisableChar; + uint16_t SettingLockBoostChar; + uint16_t SettingLockFullChar; + uint16_t SettingNAChar; + + uint16_t SettingsDescriptions[static_cast(SettingsItemIndex::NUM_ITEMS)]; + uint16_t SettingsShortNames[static_cast(SettingsItemIndex::NUM_ITEMS)]; + uint16_t SettingsMenuEntries[5]; + uint16_t SettingsMenuEntriesDescriptions[5]; // unused +}; + +extern const TranslationIndexTable *const Tr; + constexpr uint8_t settings_item_index(const SettingsItemIndex i) { return static_cast(i); } // Use a constexpr function for type-checking. #define SETTINGS_DESC(i) (settings_item_index(i) + 1) diff --git a/source/Core/Src/gui.cpp b/source/Core/Src/gui.cpp index 67589d57..583b437c 100644 --- a/source/Core/Src/gui.cpp +++ b/source/Core/Src/gui.cpp @@ -247,7 +247,7 @@ const menuitem advancedMenu[] = { static void printShortDescription(SettingsItemIndex settingsItemIndex, uint16_t cursorCharPosition) { // print short description (default single line, explicit double line) uint8_t shortDescIndex = static_cast(settingsItemIndex); - OLED::printWholeScreen(translatedString(SettingsShortNames[shortDescIndex])); + OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[shortDescIndex])); // prepare cursor for value // make room for scroll indicator @@ -362,7 +362,7 @@ static bool settings_displayInputMinVRange(void) { OLED::printNumber(systemSettings.minVoltageCells % 10, 1, FontStyle::LARGE); } else { printShortDescription(SettingsItemIndex::MinVolCell, 5); - OLED::print(translatedString(SettingNAChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE); } return false; } @@ -437,7 +437,7 @@ static bool settings_setSleepTime(void) { static bool settings_displaySleepTime(void) { printShortDescription(SettingsItemIndex::SleepTimeout, 5); if (systemSettings.SleepTime == 0) { - OLED::print(translatedString(OffString), FontStyle::LARGE); + OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } else if (systemSettings.SleepTime < 6) { OLED::printNumber(systemSettings.SleepTime * 10, 2, FontStyle::LARGE); OLED::print(SymbolSeconds, FontStyle::LARGE); @@ -461,7 +461,7 @@ static bool settings_setShutdownTime(void) { static bool settings_displayShutdownTime(void) { printShortDescription(SettingsItemIndex::ShutdownTimeout, 5); if (systemSettings.ShutdownTime == 0) { - OLED::print(translatedString(OffString), FontStyle::LARGE); + OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } else { OLED::printNumber(systemSettings.ShutdownTime, 2, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE); @@ -546,7 +546,7 @@ static bool settings_setPowerLimit(void) { static bool settings_displayPowerLimit(void) { printShortDescription(SettingsItemIndex::PowerLimit, 5); if (systemSettings.powerLimit == 0) { - OLED::print(translatedString(OffString), FontStyle::LARGE); + OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } else { OLED::printNumber(systemSettings.powerLimit, 2, FontStyle::LARGE); OLED::print(SymbolWatts, FontStyle::LARGE); @@ -564,7 +564,7 @@ static bool settings_setScrollSpeed(void) { static bool settings_displayScrollSpeed(void) { printShortDescription(SettingsItemIndex::ScrollingSpeed, 7); - OLED::print(translatedString((systemSettings.descriptionScrollSpeed) ? SettingFastChar : SettingSlowChar), FontStyle::LARGE); + OLED::print(translatedString((systemSettings.descriptionScrollSpeed) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE); return false; } @@ -592,16 +592,16 @@ static bool settings_displayDisplayRotation(void) { switch (systemSettings.OrientationMode) { case 0: - OLED::print(translatedString(SettingRightChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE); break; case 1: - OLED::print(translatedString(SettingLeftChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingLeftChar), FontStyle::LARGE); break; case 2: - OLED::print(translatedString(SettingAutoChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingAutoChar), FontStyle::LARGE); break; default: - OLED::print(translatedString(SettingRightChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE); break; } return false; @@ -637,7 +637,7 @@ static bool settings_displayBoostTemp(void) { if (systemSettings.BoostTemp) { OLED::printNumber(systemSettings.BoostTemp, 3, FontStyle::LARGE); } else { - OLED::print(translatedString(OffString), FontStyle::LARGE); + OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } return false; } @@ -653,19 +653,19 @@ static bool settings_displayAutomaticStartMode(void) { switch (systemSettings.autoStartMode) { case 0: - OLED::print(translatedString(SettingStartNoneChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE); break; case 1: - OLED::print(translatedString(SettingStartSolderingChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingStartSolderingChar), FontStyle::LARGE); break; case 2: - OLED::print(translatedString(SettingStartSleepChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingStartSleepChar), FontStyle::LARGE); break; case 3: - OLED::print(translatedString(SettingStartSleepOffChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingStartSleepOffChar), FontStyle::LARGE); break; default: - OLED::print(translatedString(SettingStartNoneChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE); break; } return false; @@ -682,16 +682,16 @@ static bool settings_displayLockingMode(void) { switch (systemSettings.lockingMode) { case 0: - OLED::print(translatedString(SettingLockDisableChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE); break; case 1: - OLED::print(translatedString(SettingLockBoostChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingLockBoostChar), FontStyle::LARGE); break; case 2: - OLED::print(translatedString(SettingLockFullChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingLockFullChar), FontStyle::LARGE); break; default: - OLED::print(translatedString(SettingLockDisableChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE); break; } return false; @@ -709,9 +709,9 @@ static bool settings_displayCoolingBlinkEnabled(void) { } static bool settings_setResetSettings(void) { - if (userConfirmation(translatedString(SettingsResetWarning))) { + if (userConfirmation(translatedString(Tr->SettingsResetWarning))) { resetSettings(); - warnUser(translatedString(ResetOKMessage), 2 * TICKS_SECOND); + warnUser(translatedString(Tr->ResetOKMessage), 2 * TICKS_SECOND); } return false; } @@ -754,7 +754,7 @@ static void setTipOffset() { // If not only do single point tuning as per usual static bool settings_setCalibrate(void) { - if (userConfirmation(translatedString(SettingsCalibrationWarning))) { + if (userConfirmation(translatedString(Tr->SettingsCalibrationWarning))) { // User confirmed // So we now perform the actual calculation setTipOffset(); @@ -881,7 +881,7 @@ static bool settings_displayPowerPulse(void) { OLED::print(SymbolDot, FontStyle::LARGE); OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1, FontStyle::LARGE); } else { - OLED::print(translatedString(OffString), FontStyle::LARGE); + OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); } return false; } @@ -907,16 +907,16 @@ static bool settings_displayAnimationSpeed(void) { printShortDescription(SettingsItemIndex::AnimSpeed, 7); switch (systemSettings.animationSpeed) { case settingOffSpeed_t::SLOW: - OLED::print(translatedString(SettingSlowChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingSlowChar), FontStyle::LARGE); break; case settingOffSpeed_t::MEDIUM: - OLED::print(translatedString(SettingMediumChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingMediumChar), FontStyle::LARGE); break; case settingOffSpeed_t::FAST: - OLED::print(translatedString(SettingFastChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingFastChar), FontStyle::LARGE); break; default: - OLED::print(translatedString(SettingOffChar), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE); break; } return false; @@ -967,17 +967,17 @@ static bool settings_displayHallEffect(void) { printShortDescription(SettingsItemIndex::HallEffSensitivity, 7); switch (systemSettings.hallEffectSensitivity) { case 1: - OLED::print(translatedString(SettingSensitivityLow), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingSensitivityLow), FontStyle::LARGE); break; case 2: - OLED::print(translatedString(SettingSensitivityMedium), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingSensitivityMedium), FontStyle::LARGE); break; case 3: - OLED::print(translatedString(SettingSensitivityHigh), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingSensitivityHigh), FontStyle::LARGE); break; case 0: default: - OLED::print(translatedString(SettingSensitivityOff), FontStyle::LARGE); + OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE); break; } return false; @@ -996,7 +996,7 @@ static bool animOpenState = false; static void displayMenu(size_t index) { // Call into the menu // Draw title - OLED::printWholeScreen(translatedString(SettingsMenuEntries[index])); + OLED::printWholeScreen(translatedString(Tr->SettingsMenuEntries[index])); // Draw symbol // 16 pixel wide image // 2 pixel wide scrolling indicator @@ -1128,7 +1128,7 @@ void gui_Menu(const menuitem *menu) { // Draw description if (descriptionStart == 0) descriptionStart = xTaskGetTickCount(); - const char *description = translatedString(SettingsDescriptions[menu[currentScreen].description - 1]); + const char *description = translatedString(Tr->SettingsDescriptions[menu[currentScreen].description - 1]); // lower the value - higher the speed int16_t descriptionWidth = FONT_12_WIDTH * (str_display_len(description) + 7); int16_t descriptionOffset = ((xTaskGetTickCount() - descriptionStart) / (systemSettings.descriptionScrollSpeed == 1 ? (TICKS_100MS / 10) : (TICKS_100MS / 5))); diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index 42636786..3c72b758 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -107,13 +107,13 @@ static bool checkVoltageForExit() { OLED::clearScreen(); OLED::setCursor(0, 0); if (systemSettings.detailedSoldering) { - OLED::print(translatedString(UndervoltageString), FontStyle::SMALL); + OLED::print(translatedString(Tr->UndervoltageString), FontStyle::SMALL); OLED::setCursor(0, 8); - OLED::print(translatedString(InputVoltageString), FontStyle::SMALL); + OLED::print(translatedString(Tr->InputVoltageString), FontStyle::SMALL); printVoltage(); OLED::print(SymbolVolts, FontStyle::SMALL); } else { - OLED::print(translatedString(UVLOWarningString), FontStyle::LARGE); + OLED::print(translatedString(Tr->UVLOWarningString), FontStyle::LARGE); } OLED::refresh(); @@ -326,9 +326,9 @@ static int gui_SolderingSleepingMode(bool stayOff, bool autoStarted) { OLED::clearScreen(); OLED::setCursor(0, 0); if (systemSettings.detailedSoldering) { - OLED::print(translatedString(SleepingAdvancedString), FontStyle::SMALL); + OLED::print(translatedString(Tr->SleepingAdvancedString), FontStyle::SMALL); OLED::setCursor(0, 8); - OLED::print(translatedString(SleepingTipAdvancedString), FontStyle::SMALL); + OLED::print(translatedString(Tr->SleepingTipAdvancedString), FontStyle::SMALL); OLED::printNumber(tipTemp, 3, FontStyle::SMALL); if (systemSettings.temperatureInF) OLED::print(SymbolDegF, FontStyle::SMALL); @@ -340,7 +340,7 @@ static int gui_SolderingSleepingMode(bool stayOff, bool autoStarted) { printVoltage(); OLED::print(SymbolVolts, FontStyle::SMALL); } else { - OLED::print(translatedString(SleepingSimpleString), FontStyle::LARGE); + OLED::print(translatedString(Tr->SleepingSimpleString), FontStyle::LARGE); OLED::printNumber(tipTemp, 3, FontStyle::LARGE); if (systemSettings.temperatureInF) OLED::drawSymbol(0); @@ -462,7 +462,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { case BUTTON_BOTH_LONG: // Unlock buttons buttonsLocked = false; - warnUser(translatedString(UnlockingKeysString), TICKS_SECOND); + warnUser(translatedString(Tr->UnlockingKeysString), TICKS_SECOND); break; case BUTTON_F_LONG: // if boost mode is enabled turn it on @@ -476,7 +476,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { case BUTTON_F_SHORT: case BUTTON_B_SHORT: // Do nothing and display a lock warming - warnUser(translatedString(WarningKeysLockedString), TICKS_SECOND / 2); + warnUser(translatedString(Tr->WarningKeysLockedString), TICKS_SECOND / 2); break; default: break; @@ -511,7 +511,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { if (systemSettings.lockingMode != 0) { // Lock buttons buttonsLocked = true; - warnUser(translatedString(LockingKeysString), TICKS_SECOND); + warnUser(translatedString(Tr->LockingKeysString), TICKS_SECOND); } break; default: @@ -523,7 +523,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { OLED::clearScreen(); // Draw in the screen details if (systemSettings.detailedSoldering) { - OLED::print(translatedString(SolderingAdvancedPowerPrompt), FontStyle::SMALL); // Power: + OLED::print(translatedString(Tr->SolderingAdvancedPowerPrompt), FontStyle::SMALL); // Power: OLED::printNumber(x10WattHistory.average() / 10, 2, FontStyle::SMALL); OLED::print(SymbolDot, FontStyle::SMALL); OLED::printNumber(x10WattHistory.average() % 10, 1, FontStyle::SMALL); @@ -535,7 +535,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { } OLED::setCursor(0, 8); - OLED::print(translatedString(SleepingTipAdvancedString), FontStyle::SMALL); + OLED::print(translatedString(Tr->SleepingTipAdvancedString), FontStyle::SMALL); gui_drawTipTemp(true, FontStyle::SMALL); if (boostModeOn) { @@ -713,7 +713,7 @@ void showDebugMenu(void) { void showWarnings() { // Display alert if settings were reset if (settingsWereReset) { - warnUser(translatedString(SettingsResetMessage), 10 * TICKS_SECOND); + warnUser(translatedString(Tr->SettingsResetMessage), 10 * TICKS_SECOND); } #ifndef NO_WARN_MISSING // We also want to alert if accel or pd is not detected / not responding @@ -727,7 +727,7 @@ void showWarnings() { if (systemSettings.accelMissingWarningCounter < 2) { systemSettings.accelMissingWarningCounter++; saveSettings(); - warnUser(translatedString(NoAccelerometerMessage), 10 * TICKS_SECOND); + warnUser(translatedString(Tr->NoAccelerometerMessage), 10 * TICKS_SECOND); } } #ifdef POW_PD @@ -736,7 +736,7 @@ void showWarnings() { if (systemSettings.pdMissingWarningCounter < 2) { systemSettings.pdMissingWarningCounter++; saveSettings(); - warnUser(translatedString(NoPowerDeliveryMessage), 10 * TICKS_SECOND); + warnUser(translatedString(Tr->NoPowerDeliveryMessage), 10 * TICKS_SECOND); } } #endif @@ -844,16 +844,16 @@ void startGUITask(void const *argument __unused) { OLED::setCursor(0, 0); if (systemSettings.detailedIDLE) { if (tipTemp > tipDisconnectedThres) { - OLED::print(translatedString(TipDisconnectedString), FontStyle::SMALL); + OLED::print(translatedString(Tr->TipDisconnectedString), FontStyle::SMALL); } else { - OLED::print(translatedString(IdleTipString), FontStyle::SMALL); + OLED::print(translatedString(Tr->IdleTipString), FontStyle::SMALL); gui_drawTipTemp(false, FontStyle::SMALL); - OLED::print(translatedString(IdleSetString), FontStyle::SMALL); + OLED::print(translatedString(Tr->IdleSetString), FontStyle::SMALL); OLED::printNumber(systemSettings.SolderingTemp, 3, FontStyle::SMALL); } OLED::setCursor(0, 8); - OLED::print(translatedString(InputVoltageString), FontStyle::SMALL); + OLED::print(translatedString(Tr->InputVoltageString), FontStyle::SMALL); printVoltage(); } else {