diff --git a/.gitignore b/.gitignore
index cff637d36e79..2a52b3cf3168 100755
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,7 @@ marlin_config.json
 mczip.h
 language*.csv
 csv-out/
+language-out/
 *.gen
 *.sublime-workspace
 
diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp
index 504a9f61c78a..d5646e50662a 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -548,7 +548,11 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
 
       TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_HEATER_TIMEOUT), GET_TEXT_F(MSG_REHEAT)));
 
-      TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_HEATER_TIMEOUT)));
+      #if ENABLED(TOUCH_UI_FTDI_EVE)
+        ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FTDI_HEATER_TIMEOUT));
+      #elif ENABLED(EXTENSIBLE_UI)
+        ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_HEATER_TIMEOUT));
+      #endif
 
       TERN_(HAS_RESUME_CONTINUE, wait_for_user_response(0, true)); // Wait for LCD click or M108
 
diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp
index 6730c026c59a..e572ba0358ba 100644
--- a/Marlin/src/lcd/e3v2/proui/dwin.cpp
+++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp
@@ -3068,7 +3068,7 @@ void Draw_Tramming_Menu() {
     MENU_ITEM(ICON_Axis, MSG_LEVBED_FR, onDrawMenuItem, TramFR);
     MENU_ITEM(ICON_Axis, MSG_LEVBED_BR, onDrawMenuItem, TramBR);
     MENU_ITEM(ICON_Axis, MSG_LEVBED_BL, onDrawMenuItem, TramBL);
-    MENU_ITEM(ICON_Axis, MSG_LEVBED_C, onDrawMenuItem, TramC );
+    MENU_ITEM(ICON_Axis, MSG_LEVBED_C,  onDrawMenuItem, TramC );
   }
   UpdateMenu(TrammingMenu);
 }
diff --git a/Marlin/src/lcd/e3v2/proui/dwin.h b/Marlin/src/lcd/e3v2/proui/dwin.h
index 0057a8639234..bba3d0c694ad 100644
--- a/Marlin/src/lcd/e3v2/proui/dwin.h
+++ b/Marlin/src/lcd/e3v2/proui/dwin.h
@@ -47,8 +47,8 @@ namespace GET_LANG(LCD_LANGUAGE) {
   #define _MSG_PREHEAT(N) \
     LSTR MSG_PREHEAT_##N                  = _UxGT("Preheat ") PREHEAT_## N ##_LABEL; \
     LSTR MSG_PREHEAT_## N ##_SETTINGS     = _UxGT("Preheat ") PREHEAT_## N ##_LABEL _UxGT(" Conf");
-  #if PREHEAT_COUNT > 3
-    REPEAT_S(4, PREHEAT_COUNT, _MSG_PREHEAT)
+  #if PREHEAT_COUNT > 1
+    REPEAT_S(2, INCREMENT(PREHEAT_COUNT), _MSG_PREHEAT)
   #endif
 }
 
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/config.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/config.h
index 05e19b20e478..a606653b88ae 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/config.h
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/config.h
@@ -23,8 +23,4 @@
 
 // Configure this display with options in Configuration_adv.h
 #include "../../../inc/MarlinConfigPre.h"
-#if ENABLED(TOUCH_UI_FTDI_EVE)
-
 #include "compat.h"
-
-#endif
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h
index 9c069d9d246e..db37ccfd22e4 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h
@@ -147,6 +147,8 @@ namespace Language_en {
   LSTR MSG_MOVE_Z_TO_TOP            = u8"Raise Z to Top";
   LSTR MSG_MAX_SPEED_NO_UNITS       = u8"Max Speed";
 
+  //LSTR MSG_FTDI_HEATER_TIMEOUT    = u8"Idle timeout, temperature decreased. Press Okay to reheat and again to resume.";
+
   #if ENABLED(TOUCH_UI_LULZBOT_BIO)
     LSTR MSG_MOVE_TO_HOME           = u8"Move to Home";
     LSTR MSG_RAISE_PLUNGER          = u8"Raise Plunger";
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.h
index fb3e909d2f24..749f01605ed1 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.h
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/screens.h
@@ -24,8 +24,6 @@
 
 #include "config.h"
 
-#if ENABLED(TOUCH_UI_FTDI_EVE)
-
 #include "ftdi_eve_lib/ftdi_eve_lib.h"
 #include "language/language.h"
 #include "theme/theme.h"
@@ -46,5 +44,3 @@ extern tiny_timer_t refresh_timer;
 #else
   #include "generic/screens.h"
 #endif
-
-#endif // TOUCH_UI_FTDI_EVE
diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h
index 7d6b6de33b66..01cbcdf7df6c 100644
--- a/Marlin/src/lcd/language/language_an.h
+++ b/Marlin/src/lcd/language/language_an.h
@@ -55,23 +55,23 @@ namespace Language_an {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Nivelacion feita!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Achustar desfases");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Desfase aplicau");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Precalentar ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Precalentar $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Precalentar $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Precal. $ Boquilla");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Precal. $ Boquilla ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Precalentar $ Tot");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Precalentar $ Base");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Precalentar $ Conf");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Precalentar ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Precalentar $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Precalentar $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Precal. $ Boquilla");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Precal. $ Boquilla ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Precalentar $ Tot");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Precalentar $ Base");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Precalentar $ Conf");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Enfriar");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Enchegar Fuent");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Amortar Fuent");
diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h
index 17f631090d33..8d54621ccee5 100644
--- a/Marlin/src/lcd/language/language_bg.h
+++ b/Marlin/src/lcd/language/language_bg.h
@@ -44,23 +44,23 @@ namespace Language_bg {
   LSTR MSG_DISABLE_STEPPERS               = _UxGT("Изкл. двигатели");
   LSTR MSG_AUTO_HOME                      = _UxGT("Паркиране");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Задай Начало");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Подгряване ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Настройки ") PREHEAT_1_LABEL;
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Подгряване $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Подгряване $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Подгряване $ Дюза");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Подгряване $ Дюза ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Подгр. $ Всички");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Подгр. $ Легло");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Настройки $");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Подгряване ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Настройки ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Подгряване $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Подгряване $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Подгряване $ Дюза");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Подгряване $ Дюза ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Подгр. $ Всички");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Подгр. $ Легло");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Настройки $");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Охлаждане");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Вкл. захранване");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Изкл. захранване");
diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h
index b750ff155125..12ea6e9e52c9 100644
--- a/Marlin/src/lcd/language/language_ca.h
+++ b/Marlin/src/lcd/language/language_ca.h
@@ -53,23 +53,23 @@ namespace Language_ca {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Anivellament fet!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Ajusta decalatge");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Decalatge aplicat");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf.");
-
-    LSTR MSG_PREHEAT_M                    = _UxGT("Preescalfa $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Preescalfa $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Preescalfa $ End");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Preescalfa $ End ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Preescalfa $ Tot");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Preescalfa $ Llit");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Preescalfa $ Conf.");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Preescalfa ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf.");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Preescalfa $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Preescalfa $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Preescalfa $ End");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Preescalfa $ End ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Preescalfa $ Tot");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Preescalfa $ Llit");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Preescalfa $ Conf.");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Refreda");
 
   LSTR MSG_EXTRUDE                        = _UxGT("Extrudeix");
diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h
index 1f697f8d5a25..090a9b148829 100644
--- a/Marlin/src/lcd/language/language_cz.h
+++ b/Marlin/src/lcd/language/language_cz.h
@@ -77,23 +77,23 @@ namespace Language_cz {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Výška srovnávání");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Nastavit ofsety");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Ofsety nastaveny");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Zahřát ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Zahřát $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Zahřát $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Zahřát $ end");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Zahřát $ end ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Zahřát $ vše");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Zahřát $ podlož");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Zahřát $ nast");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Zahřát ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Zahřát $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Zahřát $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Zahřát $ end");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Zahřát $ end ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Zahřát $ vše");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Zahřát $ podlož");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Zahřát $ nast");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Zahřát vlastní");
   LSTR MSG_COOLDOWN                       = _UxGT("Zchladit");
   LSTR MSG_LASER_MENU                     = _UxGT("Ovládání laseru");
@@ -152,10 +152,8 @@ namespace Language_cz {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Konec úprav sítě");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Vlastní síť");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Vytvořit síť");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Síť bodů $");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Kontrola sítě $");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Síť bodů $");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Kontrola sítě $");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Studená síť bodů");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Upravit výšku sítě");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Výška");
diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h
index 91dc3513f7fc..ed8aa5edccb2 100644
--- a/Marlin/src/lcd/language/language_da.h
+++ b/Marlin/src/lcd/language/language_da.h
@@ -47,23 +47,23 @@ namespace Language_da {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Bed level er færdig!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Sæt forsk. af home");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Forsk. er nu aktiv");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Forvarm ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
-
-    LSTR MSG_PREHEAT_M                    = _UxGT("Forvarm $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Forvarm $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Forvarm $ end");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Forvarm $ end ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Forvarm $ Alle");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Forvarm $ Bed");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Forvarm $ conf");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Forvarm ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Forvarm $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Forvarm $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Forvarm $ end");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Forvarm $ end ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Forvarm $ Alle");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Forvarm $ Bed");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Forvarm $ conf");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Afkøl");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Slå strøm til");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Slå strøm fra");
diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h
index 2e75c2668b90..dfe43adb341a 100644
--- a/Marlin/src/lcd/language/language_de.h
+++ b/Marlin/src/lcd/language/language_de.h
@@ -94,30 +94,23 @@ namespace Language_de {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Assistent");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Wählen Sie Ursprung");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Letzter Wert ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = PREHEAT_1_LABEL _UxGT(" Vorwärmen");
-    LSTR MSG_PREHEAT_1_H                  = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~");
-    LSTR MSG_PREHEAT_1_END                = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen");
-    LSTR MSG_PREHEAT_1_END_E              = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~");
-    LSTR MSG_PREHEAT_1_ALL                = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen");
-    LSTR MSG_PREHEAT_1_BEDONLY            = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen");
-    LSTR MSG_PREHEAT_1_SETTINGS           = PREHEAT_1_LABEL _UxGT(" Einstellungen");
-    #ifdef PREHEAT_2_LABEL
-      LSTR MSG_PREHEAT_2                  = PREHEAT_2_LABEL _UxGT(" Vorwärmen");
-      LSTR MSG_PREHEAT_2_SETTINGS         = PREHEAT_2_LABEL _UxGT(" Vorwärmen Konf");
-    #endif
-    #ifdef PREHEAT_3_LABEL
-      LSTR MSG_PREHEAT_3                  = PREHEAT_3_LABEL _UxGT(" Vorwärmen");
-      LSTR MSG_PREHEAT_3_SETTINGS         = PREHEAT_3_LABEL _UxGT(" Vorwärmen Konf");
-    #endif
-    LSTR MSG_PREHEAT_M                    = _UxGT("$ Vorwärmen");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("$ Vorwärmen") " ~";
-    LSTR MSG_PREHEAT_M_END                = _UxGT("$ Extr. Vorwärmen");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("$ Extr. Vorwärm. ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("$ Alles Vorwärmen");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("$ Bett Vorwärmen");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("$ Einstellungen");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = PREHEAT_1_LABEL _UxGT(" Vorwärmen");
+  LSTR MSG_PREHEAT_1_H                    = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~");
+  LSTR MSG_PREHEAT_1_END                  = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen");
+  LSTR MSG_PREHEAT_1_END_E                = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~");
+  LSTR MSG_PREHEAT_1_ALL                  = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen");
+  LSTR MSG_PREHEAT_1_BEDONLY              = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen");
+  LSTR MSG_PREHEAT_1_SETTINGS             = PREHEAT_1_LABEL _UxGT(" Einstellungen");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("$ Vorwärmen");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("$ Vorwärmen") " ~";
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("$ Extr. Vorwärmen");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("$ Extr. Vorwärm. ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("$ Alles Vorwärmen");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("$ Bett Vorwärmen");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("$ Einstellungen");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("benutzerdef. Heizen");
   LSTR MSG_COOLDOWN                       = _UxGT("Abkühlen");
 
@@ -774,11 +767,8 @@ namespace Language_de {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("X Achse leveln");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Auto. Kalibiren");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Heizungs Timeout");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Heizungs Timeout");
   LSTR MSG_REHEAT                         = _UxGT("Erneut aufheizen");
   LSTR MSG_REHEATING                      = _UxGT("Erneut aufhei. ...");
   LSTR MSG_REHEATDONE                     = _UxGT("Aufwärmen fertig");
diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h
index aab74cc494f4..9be54a06ecf1 100644
--- a/Marlin/src/lcd/language/language_el.h
+++ b/Marlin/src/lcd/language/language_el.h
@@ -64,23 +64,23 @@ namespace Language_el {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Τέλος επιπεδοποίησης!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Ορισμός μετατοπίσεων");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Εφαρμογή μετατοπίσεων");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Προθέρμανση $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Προθέρμανση $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Προθέρμανση $ End");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Προθέρμανση $ End ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Προθέρμανση $ όλα");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Προθέρμανση $ bed"); // SHORTEN
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Προθέρμανση $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Προθέρμανση $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Προθέρμανση $ End");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Προθέρμανση $ End ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Προθέρμανση $ όλα");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Προθέρμανση $ bed"); // SHORTEN
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN
+
   LSTR MSG_COOLDOWN                       = _UxGT("Αποθέρμανση");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Ενεργοποίηση");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Απενεργοποίηση");
diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h
index 696b1d055df6..72692ce3aa06 100644
--- a/Marlin/src/lcd/language/language_el_gr.h
+++ b/Marlin/src/lcd/language/language_el_gr.h
@@ -53,23 +53,23 @@ namespace Language_el_gr {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Ολοκλήρωση επιπεδοποίησης!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Ορισμός βασικών μετατοπίσεων");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Προθέρμανση $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Προθέρμανση $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Προθέρμανση $ End");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Προθέρμανση $ End ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Προθέρμανση $ όλα");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Προθέρμανση $ κλίνη");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Προθέρμανση $ επιβεβαίωση");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Προθέρμανση $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Προθέρμανση $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Προθέρμανση $ End");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Προθέρμανση $ End ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Προθέρμανση $ όλα");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Προθέρμανση $ κλίνη");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Προθέρμανση $ επιβεβαίωση");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Μειωση θερμοκρασιας");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Ενεργοποίηση");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Απενεργοποίηση");
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index f74e24e93a1c..2f3bbbaf0e41 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -44,7 +44,11 @@
 
 #define MEDIA_TYPE_EN "Media"
 
-namespace Language_en {
+#ifndef PREHEAT_1_LABEL
+  #define PREHEAT_1_LABEL ""
+#endif
+
+namespace LanguageNarrow_en {
   constexpr uint8_t CHARSIZE              = 2;
   LSTR LANGUAGE                           = _UxGT("English");
 
@@ -113,30 +117,23 @@ namespace Language_en {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Wizard");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Select Origin");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Last value ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Preheat ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf");
-    #ifdef PREHEAT_2_LABEL
-      LSTR MSG_PREHEAT_2                  = _UxGT("Preheat ") PREHEAT_2_LABEL;
-      LSTR MSG_PREHEAT_2_SETTINGS         = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf");
-    #endif
-    #ifdef PREHEAT_3_LABEL
-      LSTR MSG_PREHEAT_3                  = _UxGT("Preheat ") PREHEAT_3_LABEL;
-      LSTR MSG_PREHEAT_3_SETTINGS         = _UxGT("Preheat ") PREHEAT_3_LABEL _UxGT(" Conf");
-    #endif
-    LSTR MSG_PREHEAT_M                    = _UxGT("Preheat $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Preheat $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Preheat $ End");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Preheat $ End ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Preheat $ All");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Preheat $ Bed");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Preheat $ Conf");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Preheat ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Preheat $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Preheat $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Preheat $ End");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Preheat $ End ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Preheat $ All");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Preheat $ Bed");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Preheat $ Conf");
+
   LSTR MSG_PREHEAT_HOTEND                 = _UxGT("Preheat Hotend");
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Preheat Custom");
   LSTR MSG_COOLDOWN                       = _UxGT("Cooldown");
@@ -503,25 +500,14 @@ namespace Language_en {
   LSTR MSG_RESUME_PRINT                   = _UxGT("Resume Print");
   LSTR MSG_STOP_PRINT                     = _UxGT("Stop Print");
   LSTR MSG_OUTAGE_RECOVERY                = _UxGT("Power Outage");
-  #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2
-    LSTR MSG_HOST_START_PRINT             = _UxGT("Start Host Print");
-    LSTR MSG_PRINTING_OBJECT              = _UxGT("Printing Object");
-    LSTR MSG_CANCEL_OBJECT                = _UxGT("Cancel Object");
-    LSTR MSG_CANCEL_OBJECT_N              = _UxGT("Cancel Object {");
-    LSTR MSG_CONTINUE_PRINT_JOB           = _UxGT("Continue Print Job");
-    LSTR MSG_MEDIA_MENU                   = _UxGT("Print from ") MEDIA_TYPE_EN;
-    LSTR MSG_TURN_OFF                     = _UxGT("Turn off the printer");
-    LSTR MSG_END_LOOPS                    = _UxGT("End Repeat Loops");
-  #else
-    LSTR MSG_HOST_START_PRINT             = _UxGT("Host Start");
-    LSTR MSG_PRINTING_OBJECT              = _UxGT("Print Obj");
-    LSTR MSG_CANCEL_OBJECT                = _UxGT("Cancel Obj");
-    LSTR MSG_CANCEL_OBJECT_N              = _UxGT("Cancel Obj {");
-    LSTR MSG_CONTINUE_PRINT_JOB           = _UxGT("Continue Job");
-    LSTR MSG_MEDIA_MENU                   = MEDIA_TYPE_EN _UxGT(" Print");
-    LSTR MSG_TURN_OFF                     = _UxGT("Turn off now");
-    LSTR MSG_END_LOOPS                    = _UxGT("End Loops");
-  #endif
+  LSTR MSG_HOST_START_PRINT               = _UxGT("Host Start");
+  LSTR MSG_PRINTING_OBJECT                = _UxGT("Print Obj");
+  LSTR MSG_CANCEL_OBJECT                  = _UxGT("Cancel Obj");
+  LSTR MSG_CANCEL_OBJECT_N                = _UxGT("Cancel Obj {");
+  LSTR MSG_CONTINUE_PRINT_JOB             = _UxGT("Continue Job");
+  LSTR MSG_MEDIA_MENU                     = MEDIA_TYPE_EN _UxGT(" Print");
+  LSTR MSG_TURN_OFF                       = _UxGT("Turn off now");
+  LSTR MSG_END_LOOPS                      = _UxGT("End Loops");
   LSTR MSG_NO_MEDIA                       = _UxGT("No ") MEDIA_TYPE_EN;
   LSTR MSG_DWELL                          = _UxGT("Sleep...");
   LSTR MSG_USERWAIT                       = _UxGT("Click to Resume...");
@@ -571,12 +557,9 @@ namespace Language_en {
   LSTR MSG_FILAMENTUNLOAD                 = _UxGT("Unload Filament");
   LSTR MSG_FILAMENTUNLOAD_E               = _UxGT("Unload * Filament");
   LSTR MSG_FILAMENTUNLOAD_ALL             = _UxGT("Unload All");
-  #if ENABLED(MULTI_VOLUME)
-    LSTR MSG_ATTACH_MEDIA                 = _UxGT("Attach SD Card");
-    LSTR MSG_ATTACH_USB_MEDIA             = _UxGT("Attach USB Drive");
-  #else
-    LSTR MSG_ATTACH_MEDIA                 = _UxGT("Attach ") MEDIA_TYPE_EN;
-  #endif
+  LSTR MSG_ATTACH_MEDIA                   = _UxGT("Attach ") MEDIA_TYPE_EN;
+  LSTR MSG_ATTACH_SD_MEDIA                = _UxGT("Attach SD Card");
+  LSTR MSG_ATTACH_USB_MEDIA               = _UxGT("Attach USB Drive");
   LSTR MSG_CHANGE_MEDIA                   = _UxGT("Change ") MEDIA_TYPE_EN;
   LSTR MSG_RELEASE_MEDIA                  = _UxGT("Release ") MEDIA_TYPE_EN;
   LSTR MSG_ZPROBE_OUT                     = _UxGT("Z Probe Past Bed");
@@ -692,22 +675,12 @@ namespace Language_en {
   LSTR MSG_LOCKSCREEN_UNLOCK              = _UxGT("Scroll to unlock.");
   LSTR MSG_PLEASE_WAIT_REBOOT             = _UxGT("Please wait until reboot.");
 
-  #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2
-    LSTR MSG_MEDIA_NOT_INSERTED           = _UxGT("No media inserted.");
-    LSTR MSG_PLEASE_PREHEAT               = _UxGT("Please preheat the hot end.");
-    LSTR MSG_INFO_PRINT_COUNT_RESET       = _UxGT("Reset Print Count");
-    LSTR MSG_INFO_PRINT_COUNT             = _UxGT("Print Count");
-    LSTR MSG_INFO_PRINT_TIME              = _UxGT("Print Time");
-    LSTR MSG_INFO_PRINT_LONGEST           = _UxGT("Longest Job Time");
-    LSTR MSG_INFO_PRINT_FILAMENT          = _UxGT("Extruded Total");
-  #else
-    LSTR MSG_MEDIA_NOT_INSERTED           = _UxGT("No Media");
-    LSTR MSG_PLEASE_PREHEAT               = _UxGT("Please Preheat");
-    LSTR MSG_INFO_PRINT_COUNT             = _UxGT("Prints");
-    LSTR MSG_INFO_PRINT_TIME              = _UxGT("Total");
-    LSTR MSG_INFO_PRINT_LONGEST           = _UxGT("Longest");
-    LSTR MSG_INFO_PRINT_FILAMENT          = _UxGT("Extruded");
-  #endif
+  LSTR MSG_MEDIA_NOT_INSERTED             = _UxGT("No Media");
+  LSTR MSG_PLEASE_PREHEAT                 = _UxGT("Please Preheat");
+  LSTR MSG_INFO_PRINT_COUNT               = _UxGT("Prints");
+  LSTR MSG_INFO_PRINT_TIME                = _UxGT("Total");
+  LSTR MSG_INFO_PRINT_LONGEST             = _UxGT("Longest");
+  LSTR MSG_INFO_PRINT_FILAMENT            = _UxGT("Extruded");
 
   LSTR MSG_INFO_COMPLETED_PRINTS          = _UxGT("Completed");
   LSTR MSG_INFO_MIN_TEMP                  = _UxGT("Min Temp");
@@ -797,35 +770,18 @@ namespace Language_en {
   LSTR MSG_REMINDER_SAVE_SETTINGS         = _UxGT("Remember to Save!");
   LSTR MSG_PASSWORD_REMOVED               = _UxGT("Password Removed");
 
-  //
-  // Filament Change screens show up to 3 lines on a 4-line display
-  //                        ...or up to 2 lines on a 3-line display
-  //
-  #if LCD_HEIGHT >= 4
-    LSTR MSG_ADVANCED_PAUSE_WAITING       = _UxGT(MSG_2_LINE("Press Button", "to resume print"));
-    LSTR MSG_PAUSE_PRINT_PARKING          = _UxGT(MSG_1_LINE("Parking..."));
-    LSTR MSG_FILAMENT_CHANGE_INIT         = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start"));
-    LSTR MSG_FILAMENT_CHANGE_INSERT       = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue"));
-    LSTR MSG_FILAMENT_CHANGE_HEAT         = _UxGT(MSG_2_LINE("Press button", "to heat nozzle"));
-    LSTR MSG_FILAMENT_CHANGE_HEATING      = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait..."));
-    LSTR MSG_FILAMENT_CHANGE_UNLOAD       = _UxGT(MSG_2_LINE("Wait for", "filament unload"));
-    LSTR MSG_FILAMENT_CHANGE_LOAD         = _UxGT(MSG_2_LINE("Wait for", "filament load"));
-    LSTR MSG_FILAMENT_CHANGE_PURGE        = _UxGT(MSG_2_LINE("Wait for", "filament purge"));
-    LSTR MSG_FILAMENT_CHANGE_CONT_PURGE   = _UxGT(MSG_2_LINE("Click to finish", "filament purge"));
-    LSTR MSG_FILAMENT_CHANGE_RESUME       = _UxGT(MSG_2_LINE("Wait for print", "to resume..."));
-  #else
-    LSTR MSG_ADVANCED_PAUSE_WAITING       = _UxGT(MSG_1_LINE("Click to continue"));
-    LSTR MSG_PAUSE_PRINT_PARKING          = _UxGT(MSG_1_LINE("Parking..."));
-    LSTR MSG_FILAMENT_CHANGE_INIT         = _UxGT(MSG_1_LINE("Please wait..."));
-    LSTR MSG_FILAMENT_CHANGE_INSERT       = _UxGT(MSG_1_LINE("Insert and Click"));
-    LSTR MSG_FILAMENT_CHANGE_HEAT         = _UxGT(MSG_1_LINE("Click to heat"));
-    LSTR MSG_FILAMENT_CHANGE_HEATING      = _UxGT(MSG_1_LINE("Heating..."));
-    LSTR MSG_FILAMENT_CHANGE_UNLOAD       = _UxGT(MSG_1_LINE("Ejecting..."));
-    LSTR MSG_FILAMENT_CHANGE_LOAD         = _UxGT(MSG_1_LINE("Loading..."));
-    LSTR MSG_FILAMENT_CHANGE_PURGE        = _UxGT(MSG_1_LINE("Purging..."));
-    LSTR MSG_FILAMENT_CHANGE_CONT_PURGE   = _UxGT(MSG_1_LINE("Click to finish"));
-    LSTR MSG_FILAMENT_CHANGE_RESUME       = _UxGT(MSG_1_LINE("Resuming..."));
-  #endif
+  // Filament Change screens show up to 2 lines on a 3-line display
+  LSTR MSG_ADVANCED_PAUSE_WAITING         = _UxGT(MSG_1_LINE("Click to continue"));
+  LSTR MSG_PAUSE_PRINT_PARKING            = _UxGT(MSG_1_LINE("Parking..."));
+  LSTR MSG_FILAMENT_CHANGE_INIT           = _UxGT(MSG_1_LINE("Please wait..."));
+  LSTR MSG_FILAMENT_CHANGE_INSERT         = _UxGT(MSG_1_LINE("Insert and Click"));
+  LSTR MSG_FILAMENT_CHANGE_HEAT           = _UxGT(MSG_1_LINE("Click to heat"));
+  LSTR MSG_FILAMENT_CHANGE_HEATING        = _UxGT(MSG_1_LINE("Heating..."));
+  LSTR MSG_FILAMENT_CHANGE_UNLOAD         = _UxGT(MSG_1_LINE("Ejecting..."));
+  LSTR MSG_FILAMENT_CHANGE_LOAD           = _UxGT(MSG_1_LINE("Loading..."));
+  LSTR MSG_FILAMENT_CHANGE_PURGE          = _UxGT(MSG_1_LINE("Purging..."));
+  LSTR MSG_FILAMENT_CHANGE_CONT_PURGE     = _UxGT(MSG_1_LINE("Click to finish"));
+  LSTR MSG_FILAMENT_CHANGE_RESUME         = _UxGT(MSG_1_LINE("Resuming..."));
   LSTR MSG_TMC_DRIVERS                    = _UxGT("TMC Drivers");
   LSTR MSG_TMC_CURRENT                    = _UxGT("Driver Current");
   LSTR MSG_TMC_HYBRID_THRS                = _UxGT("Hybrid Threshold");
@@ -856,11 +812,8 @@ namespace Language_en {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Level X Axis");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Auto Calibrate");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Heater Timeout");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Heater Timeout");
   LSTR MSG_REHEAT                         = _UxGT("Reheat");
   LSTR MSG_REHEATING                      = _UxGT("Reheating...");
   LSTR MSG_REHEATDONE                     = _UxGT("Reheat Done");
@@ -929,5 +882,47 @@ namespace Language_en {
   LSTR DGUS_MSG_WRITE_EEPROM_FAILED       = _UxGT("EEPROM write failed");
   LSTR DGUS_MSG_READ_EEPROM_FAILED        = _UxGT("EEPROM read failed");
   LSTR DGUS_MSG_FILAMENT_RUNOUT           = _UxGT("Filament runout E%d");
+}
+
+namespace LanguageWide_en {
+  using namespace LanguageNarrow_en;
+  #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2
+    LSTR MSG_HOST_START_PRINT             = _UxGT("Start Host Print");
+    LSTR MSG_PRINTING_OBJECT              = _UxGT("Printing Object");
+    LSTR MSG_CANCEL_OBJECT                = _UxGT("Cancel Object");
+    LSTR MSG_CANCEL_OBJECT_N              = _UxGT("Cancel Object {");
+    LSTR MSG_CONTINUE_PRINT_JOB           = _UxGT("Continue Print Job");
+    LSTR MSG_MEDIA_MENU                   = _UxGT("Print from ") MEDIA_TYPE_EN;
+    LSTR MSG_TURN_OFF                     = _UxGT("Turn off the printer");
+    LSTR MSG_END_LOOPS                    = _UxGT("End Repeat Loops");
+    LSTR MSG_MEDIA_NOT_INSERTED           = _UxGT("No media inserted.");
+    LSTR MSG_PLEASE_PREHEAT               = _UxGT("Please preheat the hot end.");
+    LSTR MSG_INFO_PRINT_COUNT_RESET       = _UxGT("Reset Print Count");
+    LSTR MSG_INFO_PRINT_COUNT             = _UxGT("Print Count");
+    LSTR MSG_INFO_PRINT_TIME              = _UxGT("Print Time");
+    LSTR MSG_INFO_PRINT_LONGEST           = _UxGT("Longest Job Time");
+    LSTR MSG_INFO_PRINT_FILAMENT          = _UxGT("Extruded Total");
+  #endif
+}
 
+namespace LanguageTall_en {
+  using namespace LanguageWide_en;
+  #if LCD_HEIGHT >= 4
+    // Filament Change screens show up to 3 lines on a 4-line display
+    LSTR MSG_ADVANCED_PAUSE_WAITING       = _UxGT(MSG_2_LINE("Press Button", "to resume print"));
+    LSTR MSG_PAUSE_PRINT_PARKING          = _UxGT(MSG_1_LINE("Parking..."));
+    LSTR MSG_FILAMENT_CHANGE_INIT         = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start"));
+    LSTR MSG_FILAMENT_CHANGE_INSERT       = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue"));
+    LSTR MSG_FILAMENT_CHANGE_HEAT         = _UxGT(MSG_2_LINE("Press button", "to heat nozzle"));
+    LSTR MSG_FILAMENT_CHANGE_HEATING      = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait..."));
+    LSTR MSG_FILAMENT_CHANGE_UNLOAD       = _UxGT(MSG_2_LINE("Wait for", "filament unload"));
+    LSTR MSG_FILAMENT_CHANGE_LOAD         = _UxGT(MSG_2_LINE("Wait for", "filament load"));
+    LSTR MSG_FILAMENT_CHANGE_PURGE        = _UxGT(MSG_2_LINE("Wait for", "filament purge"));
+    LSTR MSG_FILAMENT_CHANGE_CONT_PURGE   = _UxGT(MSG_2_LINE("Click to finish", "filament purge"));
+    LSTR MSG_FILAMENT_CHANGE_RESUME       = _UxGT(MSG_2_LINE("Wait for print", "to resume..."));
+  #endif
+}
+
+namespace Language_en {
+  using namespace LanguageTall_en;
 }
diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h
index a487c7d28918..c7259d4e78aa 100644
--- a/Marlin/src/lcd/language/language_es.h
+++ b/Marlin/src/lcd/language/language_es.h
@@ -72,23 +72,23 @@ namespace Language_es {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Compen. Altura");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Ajustar desfases");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Desfase aplicada");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Precal. ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Precal. ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste");
 
-    LSTR MSG_PREHEAT_M                   = _UxGT("Precal. $");
-    LSTR MSG_PREHEAT_M_H                 = _UxGT("Precal. $ ~");
-    LSTR MSG_PREHEAT_M_END               = _UxGT("Precal. $ Fusor");
-    LSTR MSG_PREHEAT_M_END_E             = _UxGT("Precal. $ Fusor ~");
-    LSTR MSG_PREHEAT_M_ALL               = _UxGT("Precal. $ Todo");
-    LSTR MSG_PREHEAT_M_BEDONLY           = _UxGT("Precal. $ Cama");
-    LSTR MSG_PREHEAT_M_SETTINGS          = _UxGT("Precal. $ Ajuste");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Precal. ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Precal. ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Precal. $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Precal. $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Precal. $ Fusor");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Precal. $ Fusor ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Precal. $ Todo");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Precal. $ Cama");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Precal. $ Ajuste");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Precal. manual");
   LSTR MSG_COOLDOWN                       = _UxGT("Enfriar");
   LSTR MSG_CUTTER_FREQUENCY               = _UxGT("Frecuencia");
@@ -146,10 +146,8 @@ namespace Language_es {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Term. edici. Mallado");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Crear Mallado Pers.");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Crear Mallado");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Crear Mallado ($)");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Valid. Mall. ($)");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Crear Mallado ($)");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Valid. Mall. ($)");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Crear Mallado Frío");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Ajustar alt. Mallado");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Cantidad de altura");
diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h
index 6433fde99fba..e363118c5d30 100644
--- a/Marlin/src/lcd/language/language_eu.h
+++ b/Marlin/src/lcd/language/language_eu.h
@@ -56,23 +56,23 @@ namespace Language_eu {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Berdintzea eginda");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Etxe. offset eza.");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offsetak ezarrita");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Berotu ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Berotu ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Berotu $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Berotu $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Berotu $ Amaia");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Berotu $ Amaia ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Berotu $ Guztia");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Berotu $ Ohea");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Berotu $ Ezarp.");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Berotu ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Berotu ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Berotu $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Berotu $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Berotu $ Amaia");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Berotu $ Amaia ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Berotu $ Guztia");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Berotu $ Ohea");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Berotu $ Ezarp.");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Hoztu");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Energia piztu");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Energia itzali");
@@ -99,10 +99,8 @@ namespace Language_eu {
   LSTR MSG_UBL_MESH_EDIT                  = _UxGT("Sarea editatu");
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Sarea editatzea eginda");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Sarea sortu");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("$ sarea sortu");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("$ sarea balioetsi");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("$ sarea sortu");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("$ sarea balioetsi");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Sare hotza sortu");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Sarearen altuera doitu");
   LSTR MSG_UBL_VALIDATE_MESH_MENU         = _UxGT("Sarea balioetsi");
diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h
index 8d5e4c714309..1217251235c4 100644
--- a/Marlin/src/lcd/language/language_fi.h
+++ b/Marlin/src/lcd/language/language_fi.h
@@ -43,23 +43,23 @@ namespace Language_fi {
   LSTR MSG_RUN_AUTO_FILES                 = _UxGT("Automaatti");
   LSTR MSG_DISABLE_STEPPERS               = _UxGT("Vapauta moottorit");
   LSTR MSG_AUTO_HOME                      = _UxGT("Aja referenssiin");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Esilämmitä $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Esilämmitä $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Esilä. $Suutin");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Esilä. $Suutin ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Esilä. $ Kaikki");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Esilä. $ Alusta");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Esilämm. $ konf");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Esilämmitä ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Esilämmitä $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Esilämmitä $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Esilä. $Suutin");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Esilä. $Suutin ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Esilä. $ Kaikki");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Esilä. $ Alusta");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Esilämm. $ konf");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Jäähdytä");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Virta päälle");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Virta pois");
diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h
index 4f0434525264..bc3d8470427c 100644
--- a/Marlin/src/lcd/language/language_fr.h
+++ b/Marlin/src/lcd/language/language_fr.h
@@ -76,23 +76,23 @@ namespace Language_fr {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Assistant Molettes");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Molette du lit"); // Not a selection of the origin
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Ecart origine ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Préchauffage ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Régler préch. ") PREHEAT_1_LABEL;
-
-    LSTR MSG_PREHEAT_M                    = _UxGT("Préchauffage $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Préchauffage $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Préch. $ buse");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Préch. $ buse ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Préch. $ Tout");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Préch. $ lit");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Régler préch. $");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Préchauffage ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Régler préch. ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Préchauffage $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Préchauffage $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Préch. $ buse");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Préch. $ buse ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Préch. $ Tout");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Préch. $ lit");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Régler préch. $");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Préchauf. perso");
   LSTR MSG_COOLDOWN                       = _UxGT("Refroidir");
   LSTR MSG_LASER_MENU                     = _UxGT("Contrôle Laser");
@@ -156,10 +156,8 @@ namespace Language_fr {
   LSTR MSG_UBL_FINE_TUNE_MESH             = _UxGT("Réglage fin");
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Terminer");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Créer la grille");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Créer grille $");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Impr. grille $");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Créer grille $");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Impr. grille $");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Créer grille ...");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Mesure à froid");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Ajuster haut. couche");
@@ -605,11 +603,8 @@ namespace Language_fr {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Niveau axe X");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Etalon. auto.");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("En protection");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("En protection");
   LSTR MSG_REHEAT                         = _UxGT("Chauffer");
   LSTR MSG_REHEATING                      = _UxGT("Réchauffe...");
 
diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h
index 4441a7970a2e..fd0e2a60eb36 100644
--- a/Marlin/src/lcd/language/language_fr_na.h
+++ b/Marlin/src/lcd/language/language_fr_na.h
@@ -76,23 +76,23 @@ namespace Language_fr_na {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Assistant Molettes");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Molette du lit"); // Not a selection of the origin
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Ecart origine ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Prechauffage ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Regler prech. ") PREHEAT_1_LABEL;
-
-    LSTR MSG_PREHEAT_M                    = _UxGT("Prechauffage $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Prechauffage $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Prech. $ buse");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Prech. $ buse ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Prech. $ Tout");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Prech. $ lit");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Regler prech. $");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Prechauffage ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Regler prech. ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Prechauffage $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Prechauffage $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Prech. $ buse");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Prech. $ buse ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Prech. $ Tout");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Prech. $ lit");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Regler prech. $");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Prechauf. perso");
   LSTR MSG_COOLDOWN                       = _UxGT("Refroidir");
   LSTR MSG_LASER_MENU                     = _UxGT("Controle Laser");
@@ -156,10 +156,8 @@ namespace Language_fr_na {
   LSTR MSG_UBL_FINE_TUNE_MESH             = _UxGT("Reglage fin");
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Terminer");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Creer la grille");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Creer grille $");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Impr. grille $");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Creer grille $");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Impr. grille $");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Creer grille ...");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Mesure a froid");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Ajuster haut. couche");
@@ -608,11 +606,8 @@ namespace Language_fr_na {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Niveau axe X");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Etalon. auto.");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("En protection");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("En protection");
   LSTR MSG_REHEAT                         = _UxGT("Chauffer");
   LSTR MSG_REHEATING                      = _UxGT("Rechauffe...");
 
diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h
index 25b30f71eb0a..25138b21253c 100644
--- a/Marlin/src/lcd/language/language_gl.h
+++ b/Marlin/src/lcd/language/language_gl.h
@@ -69,23 +69,23 @@ namespace Language_gl {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Compensación Altura");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Axustar Desfases");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Desfases aplicados");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Prequentar ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Prequentar $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Prequentar $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Preque. $ Bico");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Preque. $ Bico ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Preque. $ Todo");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Preque. $ Cama");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Preque. $ conf");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Prequentar ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Prequentar $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Prequentar $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Preque. $ Bico");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Preque. $ Bico ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Preque. $ Todo");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Preque. $ Cama");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Preque. $ conf");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Preque. Personali.");
   LSTR MSG_COOLDOWN                       = _UxGT("Arrefriar");
   LSTR MSG_CUTTER_FREQUENCY               = _UxGT("Frecuencia");
@@ -143,10 +143,8 @@ namespace Language_gl {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Fin Edición da Malla");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Crear Malla Person.");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Crear Malla");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Crear Malla ($)");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Validar Malla ($)");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Crear Malla ($)");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Validar Malla ($)");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Crear Malla Fría");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Axustar Altura Malla");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Altura");
diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h
index a857fb361996..828bf77f5cf3 100644
--- a/Marlin/src/lcd/language/language_hr.h
+++ b/Marlin/src/lcd/language/language_hr.h
@@ -53,23 +53,23 @@ namespace Language_hr {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Niveliranje gotovo!");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Postavi home offsete");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offsets postavljeni");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Predgrij ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Predgrij $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Predgrij $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Predgrij $ Dizna");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Predgrij $ Dizna ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Predgrij $ Sve");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Predgrij $ Bed");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Predgrij $ conf");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Predgrij ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Predgrij $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Predgrij $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Predgrij $ Dizna");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Predgrij $ Dizna ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Predgrij $ Sve");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Predgrij $ Bed");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Predgrij $ conf");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Hlađenje");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Uključi napajanje");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Isključi napajanje");
diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h
index f3880a31a6f8..df3c6fbcf479 100644
--- a/Marlin/src/lcd/language/language_hu.h
+++ b/Marlin/src/lcd/language/language_hu.h
@@ -83,23 +83,23 @@ namespace Language_hu {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Elektromos varázsló");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Eredeti választása");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Utolsó érték ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Fütés ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Fütés ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Fütés $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Fütés $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Fütés $ Fej");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Fütés $ Fej ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Fütés $ Mind");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Fütés $ Ágy");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Fütés $ Beáll");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Fütés ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Fütés ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Fütés $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Fütés $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Fütés $ Fej");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Fütés $ Fej ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Fütés $ Mind");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Fütés $ Ágy");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Fütés $ Beáll");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Egyedi elömelegítés");
   LSTR MSG_COOLDOWN                       = _UxGT("Visszahütés");
 
@@ -668,11 +668,8 @@ namespace Language_hu {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("X tengely szint");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Önkalibrálás");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Fütés idökorlátja");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Fütés idökorlátja");
   LSTR MSG_REHEAT                         = _UxGT("Újrafüt");
   LSTR MSG_REHEATING                      = _UxGT("Újrafütés...");
 
diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h
index a6b48b0d0a1b..7d611211bd68 100644
--- a/Marlin/src/lcd/language/language_it.h
+++ b/Marlin/src/lcd/language/language_it.h
@@ -106,30 +106,23 @@ namespace Language_it {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Wizard Tramming");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Selez. origine");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Ultimo valore ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Preriscalda ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf");
-    #ifdef PREHEAT_2_LABEL
-      LSTR MSG_PREHEAT_2                  = _UxGT("Preris.") PREHEAT_2_LABEL;
-      LSTR MSG_PREHEAT_2_SETTINGS         = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" conf");
-    #endif
-    #ifdef PREHEAT_3_LABEL
-      LSTR MSG_PREHEAT_3                  = _UxGT("Preris.") PREHEAT_3_LABEL;
-      LSTR MSG_PREHEAT_3_SETTINGS         = _UxGT("Preris.") PREHEAT_3_LABEL _UxGT(" conf");
-    #endif
-    LSTR MSG_PREHEAT_M                    = _UxGT("Preriscalda $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Preriscalda $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Preris.$ Ugello");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Preris.$ Ugello ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Preris.$ Tutto");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Preris.$ Piatto");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Preris.$ conf");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Preriscalda ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Preriscalda $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Preriscalda $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Preris.$ Ugello");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Preris.$ Ugello ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Preris.$ Tutto");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Preris.$ Piatto");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Preris.$ conf");
+
   LSTR MSG_PREHEAT_HOTEND                 = _UxGT("Prerisc.Hotend");
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Prerisc.personal.");
   LSTR MSG_COOLDOWN                       = _UxGT("Raffredda");
@@ -221,10 +214,8 @@ namespace Language_it {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Modif.Mesh fatta");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Crea Mesh personal.");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Crea Mesh");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Crea Mesh ($)");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Valida Mesh ($)");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Crea Mesh ($)");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Valida Mesh ($)");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Crea Mesh a freddo");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Aggiusta Alt. Mesh");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Altezza");
@@ -817,11 +808,8 @@ namespace Language_it {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Livello asse X");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Auto Calibra");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Timeout riscaldatore");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Timeout riscaldatore");
   LSTR MSG_REHEAT                         = _UxGT("Riscalda");
   LSTR MSG_REHEATING                      = _UxGT("Riscaldando...");
   LSTR MSG_REHEATDONE                     = _UxGT("Riscaldato");
diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h
index 950ddcb5e5a2..49326fef57ff 100644
--- a/Marlin/src/lcd/language/language_jp_kana.h
+++ b/Marlin/src/lcd/language/language_jp_kana.h
@@ -61,23 +61,23 @@ namespace Language_jp_kana {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("レベリングカンリョウ"); // "Leveling Done!"
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets"
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied"
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL
-    LSTR MSG_PREHEAT_1_H                  = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL
-    LSTR MSG_PREHEAT_1_END                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle"
-    LSTR MSG_PREHEAT_1_END_E              = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle"
-    LSTR MSG_PREHEAT_1_ALL                = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All"
-    LSTR MSG_PREHEAT_1_BEDONLY            = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed"
-    LSTR MSG_PREHEAT_1_SETTINGS           = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf"
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL
-    LSTR MSG_PREHEAT_M_END                = _UxGT("$ ヨネツノズル"); // " Nozzle"
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("$ ヨネツノズル ~"); // " Nozzle"
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("$ スベテヨネツ"); // " All"
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("$ ベッドヨネツ"); // " Bed"
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("$ ヨネツセッテイ"); // " conf"
-  #endif
+  LSTR MSG_PREHEAT_1                      = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL
+  LSTR MSG_PREHEAT_1_H                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL
+  LSTR MSG_PREHEAT_1_END                  = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle"
+  LSTR MSG_PREHEAT_1_END_E                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle"
+  LSTR MSG_PREHEAT_1_ALL                  = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All"
+  LSTR MSG_PREHEAT_1_BEDONLY              = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed"
+  LSTR MSG_PREHEAT_1_SETTINGS             = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf"
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("$ ヨネツノズル"); // " Nozzle"
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("$ ヨネツノズル ~"); // " Nozzle"
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("$ スベテヨネツ"); // " All"
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("$ ベッドヨネツ"); // " Bed"
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("$ ヨネツセッテイ"); // " conf"
+
   LSTR MSG_COOLDOWN                       = _UxGT("カネツテイシ"); // "Cooldown"
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("デンゲン オン"); // "Switch power on"
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("デンゲン オフ"); // "Switch power off"
diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h
index 27be03734492..ca7d59dbb99e 100644
--- a/Marlin/src/lcd/language/language_ko_KR.h
+++ b/Marlin/src/lcd/language/language_ko_KR.h
@@ -54,17 +54,17 @@ namespace Language_ko_KR {
   LSTR MSG_LEVEL_BED_WAITING              = _UxGT("누르면 시작합니다");
   LSTR MSG_LEVEL_BED_NEXT_POINT           = _UxGT("다음 Point");
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("레벨링 완료!");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("예열하기 - $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("예열하기 - $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("예열하기 - $ 노즐");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("예열하기 - $ 노즐 ~");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("예열하기 - ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("예열하기 - $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("예열하기 - $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("예열하기 - $ 노즐");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("예열하기 - $ 노즐 ~");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Custom 예열");
   LSTR MSG_COOLDOWN                       = _UxGT("식히기");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("스위치 전원 켜기");
diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h
index bc60d19946bd..9210c6b77f1d 100644
--- a/Marlin/src/lcd/language/language_nl.h
+++ b/Marlin/src/lcd/language/language_nl.h
@@ -53,23 +53,23 @@ namespace Language_nl {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Bed level kompl.");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Zet home offsets");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("H offset toegep.");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
-    LSTR MSG_PREHEAT_1_H                  = PREHEAT_1_LABEL _UxGT(" voorverw. ~");
-    LSTR MSG_PREHEAT_1_END                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
-    LSTR MSG_PREHEAT_1_END_E              = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~");
-    LSTR MSG_PREHEAT_1_ALL                = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
-    LSTR MSG_PREHEAT_1_BEDONLY            = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
-    LSTR MSG_PREHEAT_1_SETTINGS           = PREHEAT_1_LABEL _UxGT(" verw. conf");
-
-    LSTR MSG_PREHEAT_M                    = _UxGT("$ voorverwarmen");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("$ voorverw. ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("$ voorverw. Einde");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("$ voorverw. Einde ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("$ voorverw. aan");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("$ voorverw. Bed");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("$ verw. conf");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
+  LSTR MSG_PREHEAT_1_H                    = PREHEAT_1_LABEL _UxGT(" voorverw. ~");
+  LSTR MSG_PREHEAT_1_END                  = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
+  LSTR MSG_PREHEAT_1_END_E                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~");
+  LSTR MSG_PREHEAT_1_ALL                  = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
+  LSTR MSG_PREHEAT_1_BEDONLY              = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
+  LSTR MSG_PREHEAT_1_SETTINGS             = PREHEAT_1_LABEL _UxGT(" verw. conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("$ voorverwarmen");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("$ voorverw. ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("$ voorverw. Einde");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("$ voorverw. Einde ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("$ voorverw. aan");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("$ voorverw. Bed");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("$ verw. conf");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Afkoelen");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Stroom aan");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Stroom uit");
diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h
index 8aa12d903d21..d3d6b05ed9de 100644
--- a/Marlin/src/lcd/language/language_pl.h
+++ b/Marlin/src/lcd/language/language_pl.h
@@ -81,23 +81,23 @@ namespace Language_pl {
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Poz. zerowa ust.");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Wybierz punkt zero");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Poprzednia wartość ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw.");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Rozgrzej $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Rozgrzej $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Rozgrzej $ Dysza");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Rozgrzej $ Dysza ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Rozgrzej $ wsz.");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Rozgrzej $ stół");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Rozgrzej $ ustaw.");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw.");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Rozgrzej $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Rozgrzej $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Rozgrzej $ Dysza");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Rozgrzej $ Dysza ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Rozgrzej $ wsz.");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Rozgrzej $ stół");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Rozgrzej $ ustaw.");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Rozgrzej własne ust.");
   LSTR MSG_COOLDOWN                       = _UxGT("Chłodzenie");
 
diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h
index ac2cbbdc20d4..b174e1071835 100644
--- a/Marlin/src/lcd/language/language_pt.h
+++ b/Marlin/src/lcd/language/language_pt.h
@@ -52,23 +52,23 @@ namespace Language_pt {
   LSTR MSG_LEVEL_BED_DONE                 = _UxGT("Pronto !");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Definir desvio");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offsets aplicados");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Definições ") PREHEAT_1_LABEL;
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Pre-aquecer $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Pre-aquecer $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Pre-aquecer $ Bico");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Pre-aquecer $ Bico ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Pre-aq. $ Tudo");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Definições $");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Definições ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Pre-aquecer $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Pre-aquecer $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Pre-aquecer $ Bico");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Pre-aquecer $ Bico ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Pre-aq. $ Tudo");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Definições $");
+
   LSTR MSG_COOLDOWN                       = _UxGT("Arrefecer");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Ligar");
   LSTR MSG_SWITCH_PS_OFF                  = _UxGT("Desligar");
diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h
index 81344b60c4a6..c45d72775a3c 100644
--- a/Marlin/src/lcd/language/language_pt_br.h
+++ b/Marlin/src/lcd/language/language_pt_br.h
@@ -67,23 +67,23 @@ namespace Language_pt_br {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Suavizar altura");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Compensar origem");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Alteração aplicada");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Extrusora ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Ajustar ") PREHEAT_1_LABEL;
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Pre-aquecer $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Pre-aquecer $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Extrusora $");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Extrusora $ ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Pre-aq.Todo $");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Pre-aq.Mesa $");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Ajustar $");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Extrusora ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Ajustar ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Pre-aquecer $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Pre-aquecer $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Extrusora $");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Extrusora $ ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Pre-aq.Todo $");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Pre-aq.Mesa $");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Ajustar $");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Customizar Pre-aq.");
   LSTR MSG_COOLDOWN                       = _UxGT("Esfriar");
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Ligar");
@@ -132,10 +132,8 @@ namespace Language_pt_br {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Fim da Edição");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Montar Malha Custom");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Montar ");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Montar $");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Checar $");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Montar $");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Checar $");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Montar Malha fria");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Ajustar Altura");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Quant. de Altura");
diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h
index b4f7550a7fa5..40382babdf28 100644
--- a/Marlin/src/lcd/language/language_ro.h
+++ b/Marlin/src/lcd/language/language_ro.h
@@ -68,23 +68,23 @@ namespace Language_ro {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Fade Inaltime");
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Seteaza Offseturile Acasa");
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offseturi Aplicate");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Preincalzeste ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Preincalzeste $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Preincalzeste $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Preincalzeste $ Capatul");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Preincalzeste $ Capatul ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Preincalzeste $ Tot");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Preincalzeste $ Patul");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Preincalzeste $ Conf");
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Preincalzeste ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Preincalzeste $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Preincalzeste $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Preincalzeste $ Capatul");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Preincalzeste $ Capatul ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Preincalzeste $ Tot");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Preincalzeste $ Patul");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Preincalzeste $ Conf");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Preincalzeste Personalizat");
   LSTR MSG_COOLDOWN                       = _UxGT("Racire");
   LSTR MSG_CUTTER_FREQUENCY               = _UxGT("Frecventa");
@@ -142,10 +142,8 @@ namespace Language_ro {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Done Editing Mesh");
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Build Custom Mesh");
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Build Mesh");
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Build Mesh ($)");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Validate Mesh ($)");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Build Mesh ($)");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Validate Mesh ($)");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Build Cold Mesh");
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Adjust Mesh Height");
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Height Amount");
diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h
index 25f62173f350..0802415e73b4 100644
--- a/Marlin/src/lcd/language/language_ru.h
+++ b/Marlin/src/lcd/language/language_ru.h
@@ -95,23 +95,23 @@ namespace Language_ru {
   #else
     LSTR MSG_LAST_VALUE_SP                  = _UxGT("Послед. знач. ");
   #endif
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                      = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                    = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_END                  = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_END_E                = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Нагреть всё ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Нагреть стол ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Правка предн. ") PREHEAT_1_LABEL;
-
-    LSTR MSG_PREHEAT_M                      = _UxGT("Преднагрев $");
-    LSTR MSG_PREHEAT_M_H                    = _UxGT("Нагреть ~ $");
-    LSTR MSG_PREHEAT_M_END                  = _UxGT("Нагреть сопло $");
-    LSTR MSG_PREHEAT_M_END_E                = _UxGT("Нагреть сопло ~ $");
-    LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Нагреть всё $");
-    LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Нагреть стол $");
-    LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Правка преднаг. $");
-  #endif
+
+  LSTR MSG_PREHEAT_1                        = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                      = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_END                    = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_END_E                  = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_ALL                    = _UxGT("Нагреть всё ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_BEDONLY                = _UxGT("Нагреть стол ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_SETTINGS               = _UxGT("Правка предн. ") PREHEAT_1_LABEL;
+
+  LSTR MSG_PREHEAT_M                        = _UxGT("Преднагрев $");
+  LSTR MSG_PREHEAT_M_H                      = _UxGT("Нагреть ~ $");
+  LSTR MSG_PREHEAT_M_END                    = _UxGT("Нагреть сопло $");
+  LSTR MSG_PREHEAT_M_END_E                  = _UxGT("Нагреть сопло ~ $");
+  LSTR MSG_PREHEAT_M_ALL                    = _UxGT("Нагреть всё $");
+  LSTR MSG_PREHEAT_M_BEDONLY                = _UxGT("Нагреть стол $");
+  LSTR MSG_PREHEAT_M_SETTINGS               = _UxGT("Правка преднаг. $");
+
   LSTR MSG_PREHEAT_CUSTOM                   = _UxGT("Нагрев Свой");
   LSTR MSG_COOLDOWN                         = _UxGT("Охлаждение");
   LSTR MSG_CUTTER_FREQUENCY                 = _UxGT("Частота");
diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h
index c7b2cef0d10c..2a34251417df 100644
--- a/Marlin/src/lcd/language/language_sk.h
+++ b/Marlin/src/lcd/language/language_sk.h
@@ -109,30 +109,23 @@ namespace Language_sk {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Spriev. vyrovn.");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Vyberte začiatok");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Posl. hodnota ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Zahriať ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast.");
-    #ifdef PREHEAT_2_LABEL
-      LSTR MSG_PREHEAT_2                  = _UxGT("Zahriať ") PREHEAT_2_LABEL;
-      LSTR MSG_PREHEAT_2_SETTINGS         = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" nast.");
-    #endif
-    #ifdef PREHEAT_3_LABEL
-      LSTR MSG_PREHEAT_3                  = _UxGT("Zahriať ") PREHEAT_3_LABEL;
-      LSTR MSG_PREHEAT_3_SETTINGS         = _UxGT("Zahriať ") PREHEAT_3_LABEL _UxGT(" nast.");
-    #endif
-    LSTR MSG_PREHEAT_M                    = _UxGT("Zahriať $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Zahriať $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Zahriať $ hotend");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Zahriať $ hotend ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Zahriať $ všetko");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Zahriať $ podlož");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Zahriať $ nast.");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Zahriať ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast.");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Zahriať $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Zahriať $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Zahriať $ hotend");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Zahriať $ hotend ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Zahriať $ všetko");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Zahriať $ podlož");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Zahriať $ nast.");
+
   LSTR MSG_PREHEAT_HOTEND                 = _UxGT("Zahriať hotend");
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Vlastná teplota");
   LSTR MSG_COOLDOWN                       = _UxGT("Schladiť");
@@ -564,12 +557,9 @@ namespace Language_sk {
   LSTR MSG_FILAMENTUNLOAD                 = _UxGT("Vysunúť filament");
   LSTR MSG_FILAMENTUNLOAD_E               = _UxGT("Vysunúť filament *");
   LSTR MSG_FILAMENTUNLOAD_ALL             = _UxGT("Vysunúť všetko");
-  #if ENABLED(MULTI_VOLUME)
-    LSTR MSG_ATTACH_MEDIA                 = _UxGT("Načítať SD kartu");
-    LSTR MSG_ATTACH_USB_MEDIA             = _UxGT("Načítať USB disk");
-  #else
-    LSTR MSG_ATTACH_MEDIA                 = _UxGT("Načítať kartu");
-  #endif
+  LSTR MSG_ATTACH_MEDIA                   = _UxGT("Načítať kartu");
+  LSTR MSG_ATTACH_SD_MEDIA                = _UxGT("Načítať SD kartu");
+  LSTR MSG_ATTACH_USB_MEDIA               = _UxGT("Načítať USB disk");
   LSTR MSG_CHANGE_MEDIA                   = _UxGT("Vymeniť kartu");
   LSTR MSG_RELEASE_MEDIA                  = _UxGT("Odpojiť kartu");
   LSTR MSG_ZPROBE_OUT                     = _UxGT("Sonda Z mimo podl.");
@@ -829,11 +819,8 @@ namespace Language_sk {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Vyrovnať os X");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Auto-kalibrovať");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Vypršal čas ohrevu");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Vypršal čas ohrevu");
   LSTR MSG_REHEAT                         = _UxGT("Zohriať");
   LSTR MSG_REHEATING                      = _UxGT("Zohrievanie...");
   LSTR MSG_REHEATDONE                     = _UxGT("Zohrievanie dokonč.");
diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h
index d264c1e6e289..636d1160a8ee 100644
--- a/Marlin/src/lcd/language/language_sv.h
+++ b/Marlin/src/lcd/language/language_sv.h
@@ -77,23 +77,21 @@ namespace Language_sv {
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Välj Origo");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Senaste värde ");
 
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Förvärmning ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf");
+  LSTR MSG_PREHEAT_1                      = _UxGT("Förvärmning ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf");
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Förvärmning $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Förvärmning $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Förvärmning $ Stoppa");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Förvärmning $ Stoppa ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Förvärmning $ Alla");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Förvärmning $ Bädd");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Förvärmning $ Donf");
-  #endif
+  LSTR MSG_PREHEAT_M                      = _UxGT("Förvärmning $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Förvärmning $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Förvärmning $ Stoppa");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Förvärmning $ Stoppa ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Förvärmning $ Alla");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Förvärmning $ Bädd");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Förvärmning $ Donf");
 
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Förvärmning Anpassad");
   LSTR MSG_COOLDOWN                       = _UxGT("Nedkylning");
@@ -650,11 +648,8 @@ namespace Language_sv {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Nivå X Axel");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Auto Kalibrera");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Värmare Tidsgräns");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Värmare Tidsgräns");
   LSTR MSG_REHEAT                         = _UxGT("Återvärm");
   LSTR MSG_REHEATING                      = _UxGT("Återvärmning...");
 
diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h
index 5be21c9c565f..51dda9b59767 100644
--- a/Marlin/src/lcd/language/language_tr.h
+++ b/Marlin/src/lcd/language/language_tr.h
@@ -97,30 +97,23 @@ namespace Language_tr {
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Hizalama Sihirbazı");
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Başlangıç Seç");
   LSTR MSG_LAST_VALUE_SP                  = _UxGT("Son değer ");
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
-    #ifdef PREHEAT_2_LABEL
-      LSTR MSG_PREHEAT_2                  = _UxGT("Ön Isınma ") PREHEAT_2_LABEL;
-      LSTR MSG_PREHEAT_2_SETTINGS         = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Conf");
-    #endif
-    #ifdef PREHEAT_3_LABEL
-      LSTR MSG_PREHEAT_3                  = _UxGT("Ön Isınma ") PREHEAT_3_LABEL;
-      LSTR MSG_PREHEAT_3_SETTINGS         = _UxGT("Ön Isınma ") PREHEAT_3_LABEL _UxGT(" Conf");
-    #endif
-    LSTR MSG_PREHEAT_M                    = _UxGT("Ön Isınma $");
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Ön Isınma $ ~");
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Ön Isınma $ Nozul");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Ön Isınma $ Nozul ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Ön Isınma $ Tüm");
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Ön Isınma $ Tabla");
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Ön Isınma $ Ayarlar");
-  #endif
+
+  LSTR MSG_PREHEAT_1                      = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Ön Isınma $");
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Ön Isınma $ ~");
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Ön Isınma $ Nozul");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Ön Isınma $ Nozul ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Ön Isınma $ Tüm");
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Ön Isınma $ Tabla");
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Ön Isınma $ Ayarlar");
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Özel Ön Isınma");
   LSTR MSG_COOLDOWN                       = _UxGT("Soğut/(Durdur)");
 
@@ -802,11 +795,8 @@ namespace Language_tr {
 
   LSTR MSG_LEVEL_X_AXIS                   = _UxGT("Seviye X Ekseni");
   LSTR MSG_AUTO_CALIBRATE                 = _UxGT("Otomatik Kalibre Et");
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın.");
-  #else
-    LSTR MSG_HEATER_TIMEOUT               = _UxGT("Isıtıcı Zaman Aşımı");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT            = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın.");
+  LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Isıtıcı Zaman Aşımı");
   LSTR MSG_REHEAT                         = _UxGT("Yeniden ısıt");
   LSTR MSG_REHEATING                      = _UxGT("Yeniden ısıtılıyor...");
   LSTR MSG_REHEATDONE                     = _UxGT("Y. Isıtma Tamam");
diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h
index 7a7f4a5f4445..0bcc1e120254 100644
--- a/Marlin/src/lcd/language/language_uk.h
+++ b/Marlin/src/lcd/language/language_uk.h
@@ -99,23 +99,23 @@ namespace Language_uk {
   #else
     LSTR MSG_LAST_VALUE_SP                  = _UxGT("Останнє знач. ");
   #endif
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                      = _UxGT("Нагрів ") PREHEAT_1_LABEL;
-    LSTR MSG_PREHEAT_1_H                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~";
-    LSTR MSG_PREHEAT_1_END                  = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло");
-    LSTR MSG_PREHEAT_1_END_E                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~");
-    LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все");
-    LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл");
-    LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт");
-
-    LSTR MSG_PREHEAT_M                      = _UxGT("Нагрів $");
-    LSTR MSG_PREHEAT_M_H                    = _UxGT("Нагрів $ ~");
-    LSTR MSG_PREHEAT_M_END                  = _UxGT("Нагрів $ сопло");
-    LSTR MSG_PREHEAT_M_END_E                = _UxGT("Нагрів $ сопло ~");
-    LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Нагрів $ все");
-    LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Нагрів $ стіл");
-    LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Нагрів $ налашт");
-  #endif
+
+  LSTR MSG_PREHEAT_1                        = _UxGT("Нагрів ") PREHEAT_1_LABEL;
+  LSTR MSG_PREHEAT_1_H                      = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~";
+  LSTR MSG_PREHEAT_1_END                    = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло");
+  LSTR MSG_PREHEAT_1_END_E                  = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~");
+  LSTR MSG_PREHEAT_1_ALL                    = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все");
+  LSTR MSG_PREHEAT_1_BEDONLY                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл");
+  LSTR MSG_PREHEAT_1_SETTINGS               = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт");
+
+  LSTR MSG_PREHEAT_M                        = _UxGT("Нагрів $");
+  LSTR MSG_PREHEAT_M_H                      = _UxGT("Нагрів $ ~");
+  LSTR MSG_PREHEAT_M_END                    = _UxGT("Нагрів $ сопло");
+  LSTR MSG_PREHEAT_M_END_E                  = _UxGT("Нагрів $ сопло ~");
+  LSTR MSG_PREHEAT_M_ALL                    = _UxGT("Нагрів $ все");
+  LSTR MSG_PREHEAT_M_BEDONLY                = _UxGT("Нагрів $ стіл");
+  LSTR MSG_PREHEAT_M_SETTINGS               = _UxGT("Нагрів $ налашт");
+
   LSTR MSG_PREHEAT_CUSTOM                   = _UxGT("Нагрів свого");
   LSTR MSG_COOLDOWN                         = _UxGT("Вимкнути нагрів");
 
@@ -880,11 +880,8 @@ namespace Language_uk {
   LSTR MSG_LEVEL_X_AXIS                     = _UxGT("Рівень вісі X");
   LSTR MSG_AUTO_CALIBRATE                   = _UxGT("Авто калібрування");
 
-  #if ENABLED(TOUCH_UI_FTDI_EVE)
-    LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити");
-  #else
-    LSTR MSG_HEATER_TIMEOUT                 = _UxGT("Час нагрівача збіг");
-  #endif
+  LSTR MSG_FTDI_HEATER_TIMEOUT              = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити");
+  LSTR MSG_HEATER_TIMEOUT                   = _UxGT("Час нагрівача збіг");
   LSTR MSG_REHEAT                           = _UxGT("Поновити нагрів");
   LSTR MSG_REHEATING                        = _UxGT("Нагрівання...");
 
diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h
index 2ce22961ca73..2d5a1124dc18 100644
--- a/Marlin/src/lcd/language/language_vi.h
+++ b/Marlin/src/lcd/language/language_vi.h
@@ -63,23 +63,23 @@ namespace Language_vi {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("Chiều cao mờ dần");                     // Fade Height
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Đặt bù đắp nhà");                       // Set home offsets
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Bù đắp được áp dụng");                  // Offsets applied
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước");      // Preheat
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~");    // Preheat
-    LSTR MSG_PREHEAT_1_END                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu");
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~");
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả");     // All
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn");        // Bed -- using vietnamese term for 'table' instead
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình");   // Conf
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("Làm nóng $ trước");                     // Preheat
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("Làm nóng $ trước ~");                   // Preheat
-    LSTR MSG_PREHEAT_M_END                = _UxGT("Làm nóng $ Đầu");
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("Làm nóng $ Đầu ~");
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("Làm nóng $ Tất cả");                    // All
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("Làm nóng $ Bàn");                       // Bed -- using vietnamese term for 'table' instead
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("Làm nóng $ Cấu hình");                  // Conf
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước");      // Preheat
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~");    // Preheat
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu");
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~");
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả");     // All
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn");        // Bed -- using vietnamese term for 'table' instead
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình");   // Conf
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("Làm nóng $ trước");                     // Preheat
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("Làm nóng $ trước ~");                   // Preheat
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("Làm nóng $ Đầu");
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("Làm nóng $ Đầu ~");
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("Làm nóng $ Tất cả");                    // All
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("Làm nóng $ Bàn");                       // Bed -- using vietnamese term for 'table' instead
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("Làm nóng $ Cấu hình");                  // Conf
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("Sự nóng trước tự chọn");                // Preheat Custom
   LSTR MSG_COOLDOWN                       = _UxGT("Nguội xuống");                          // Cooldown
   LSTR MSG_SWITCH_PS_ON                   = _UxGT("Bật nguồn");                            // Switch power on
@@ -125,10 +125,8 @@ namespace Language_vi {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("Chỉnh sửa xong lưới");                  // Done Editing Mesh
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("Xây dựng lưới tự chọn");                // Build Custom Mesh
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("Xây dựng lưới");                        // Build Mesh
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("Xây dựng lưới ($)");
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("Thẩm tra lưới ($)");
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("Xây dựng lưới ($)");
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("Thẩm tra lưới ($)");
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("Xây dựng lưới lạnh");                   // Build cold mesh
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("Điều chỉnh chiều cao lưới");            // Adjust Mesh Height
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("Số lượng chiều cao");                   // Height Amount
@@ -438,5 +436,4 @@ namespace Language_vi {
   LSTR MSG_SHORT_DAY                      = _UxGT("n");                                   // d - ngày - One character only
   LSTR MSG_SHORT_HOUR                     = _UxGT("g");                                   // h - giờ  - One character only
   LSTR MSG_SHORT_MINUTE                   = _UxGT("p");                                   // m - phút - One character only
-  LSTR MSG_SHORT_MINUTE                   = _UxGT("p");                                   // M - phút - One character only
 }
diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h
index 03c8d80bca74..7805b4616a5d 100644
--- a/Marlin/src/lcd/language/language_zh_CN.h
+++ b/Marlin/src/lcd/language/language_zh_CN.h
@@ -68,23 +68,23 @@ namespace Language_zh_CN {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("淡出高度"); // "Fade Height"
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("设置原点偏移"); // "Set home offsets"
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("偏移已启用"); // "Offsets applied"
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL"
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL"
-    LSTR MSG_PREHEAT_1_END                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed"
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf"
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL"
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL"
-    LSTR MSG_PREHEAT_M_END                = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All"
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed"
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf"
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL"
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL"
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed"
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf"
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL"
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL"
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All"
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed"
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf"
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("预热自定义");
   LSTR MSG_COOLDOWN                       = _UxGT("降温"); // "Cooldown"
   LSTR MSG_CUTTER_FREQUENCY               = _UxGT("切割频率");
@@ -142,10 +142,8 @@ namespace Language_zh_CN {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("完成编辑网格"); // "Done Editing Mesh"
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("创设客户网格"); // "Build Custom Mesh"
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("创设网格"); // "Build Mesh"
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh"
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh"
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh"
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh"
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("创设冷网格"); // "Build Cold Mesh"
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("调整网格高度"); // "Adjust Mesh Height"
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("高度合计"); // "Height Amount"
diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h
index 968ad4424e19..29501f173e26 100644
--- a/Marlin/src/lcd/language/language_zh_TW.h
+++ b/Marlin/src/lcd/language/language_zh_TW.h
@@ -65,23 +65,23 @@ namespace Language_zh_TW {
   LSTR MSG_Z_FADE_HEIGHT                  = _UxGT("淡出高度"); // "Fade Height"
   LSTR MSG_SET_HOME_OFFSETS               = _UxGT("設置原點偏移"); // "Set home offsets"
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("偏移已啟用"); // "Offsets applied"
-  #if HAS_PREHEAT
-    LSTR MSG_PREHEAT_1                    = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL"
-    LSTR MSG_PREHEAT_1_H                  = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL"
-    LSTR MSG_PREHEAT_1_END                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_1_END_E              = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_1_ALL                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
-    LSTR MSG_PREHEAT_1_BEDONLY            = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed"
-    LSTR MSG_PREHEAT_1_SETTINGS           = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf"
 
-    LSTR MSG_PREHEAT_M                    = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL"
-    LSTR MSG_PREHEAT_M_H                  = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL"
-    LSTR MSG_PREHEAT_M_END                = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_M_END_E              = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " "
-    LSTR MSG_PREHEAT_M_ALL                = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All"
-    LSTR MSG_PREHEAT_M_BEDONLY            = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed"
-    LSTR MSG_PREHEAT_M_SETTINGS           = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf"
-  #endif
+  LSTR MSG_PREHEAT_1                      = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL"
+  LSTR MSG_PREHEAT_1_H                    = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL"
+  LSTR MSG_PREHEAT_1_END                  = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_1_END_E                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_1_ALL                  = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
+  LSTR MSG_PREHEAT_1_BEDONLY              = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed"
+  LSTR MSG_PREHEAT_1_SETTINGS             = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf"
+
+  LSTR MSG_PREHEAT_M                      = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL"
+  LSTR MSG_PREHEAT_M_H                    = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL"
+  LSTR MSG_PREHEAT_M_END                  = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_M_END_E                = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " "
+  LSTR MSG_PREHEAT_M_ALL                  = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All"
+  LSTR MSG_PREHEAT_M_BEDONLY              = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed"
+  LSTR MSG_PREHEAT_M_SETTINGS             = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf"
+
   LSTR MSG_PREHEAT_CUSTOM                 = _UxGT("自定預熱"); // "Preheat Custom"
   LSTR MSG_COOLDOWN                       = _UxGT("降溫"); // "Cooldown"
   LSTR MSG_LASER_MENU                     = _UxGT("激光控制"); // "Laser Control"
@@ -138,10 +138,8 @@ namespace Language_zh_TW {
   LSTR MSG_UBL_DONE_EDITING_MESH          = _UxGT("完成編輯網格"); // "Done Editing Mesh"
   LSTR MSG_UBL_BUILD_CUSTOM_MESH          = _UxGT("創設客戶網格"); // "Build Custom Mesh"
   LSTR MSG_UBL_BUILD_MESH_MENU            = _UxGT("創設網格"); // "Build Mesh"
-  #if HAS_PREHEAT
-    LSTR MSG_UBL_BUILD_MESH_M             = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh"
-    LSTR MSG_UBL_VALIDATE_MESH_M          = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh"
-  #endif
+  LSTR MSG_UBL_BUILD_MESH_M               = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh"
+  LSTR MSG_UBL_VALIDATE_MESH_M            = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh"
   LSTR MSG_UBL_BUILD_COLD_MESH            = _UxGT("創設冷網格"); // "Build Cold Mesh"
   LSTR MSG_UBL_MESH_HEIGHT_ADJUST         = _UxGT("調整網格高度"); // "Adjust Mesh Height"
   LSTR MSG_UBL_MESH_HEIGHT_AMOUNT         = _UxGT("高度合計"); // "Height Amount"
diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp
index a202f624f7fc..292ce7bb7cd6 100644
--- a/Marlin/src/lcd/menu/menu_main.cpp
+++ b/Marlin/src/lcd/menu/menu_main.cpp
@@ -303,9 +303,11 @@ void menu_main() {
         #if HAS_SD_DETECT
           ACTION_ITEM(MSG_NO_MEDIA, nullptr);               // "No Media"
         #else
-          GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media
           #if ENABLED(MULTI_VOLUME)
-            GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U"));   // M21 Attach USB Media
+            GCODES_ITEM(MSG_ATTACH_SD_MEDIA, F("M21S"));    // M21S Attach SD Card
+            GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U"));   // M21U Attach USB Media
+          #else
+            GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21"));        // M21 Attach Media
           #endif
         #endif
       }
@@ -418,10 +420,12 @@ void menu_main() {
       #if HAS_SD_DETECT
         ACTION_ITEM(MSG_NO_MEDIA, nullptr);               // "No Media"
       #else
-        GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Attach Media
-        #if ENABLED(MULTI_VOLUME)
-          GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U"));   // M21 Attach USB Media
-        #endif
+          #if ENABLED(MULTI_VOLUME)
+            GCODES_ITEM(MSG_ATTACH_SD_MEDIA, F("M21S"));    // M21S Attach SD Card
+            GCODES_ITEM(MSG_ATTACH_USB_MEDIA, F("M21U"));   // M21U Attach USB Media
+          #else
+            GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21"));        // M21 Attach Media
+          #endif
       #endif
     }
     // END MEDIA MENU
diff --git a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h
index c2865372c5ae..c18085755c32 100644
--- a/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h
+++ b/Marlin/src/pins/stm32f1/pins_KEDI_CONTROLLER_V1_2.h
@@ -190,7 +190,7 @@
     #define BTN_EN1                  EXP1_08_PIN
     #define BTN_EN2                  EXP1_06_PIN
 
-    #define LCD_PINS_ENABLE          EXP1_03_PIN
+    #define LCD_PINS_EN              EXP1_03_PIN
     #define LCD_PINS_D4              EXP1_05_PIN
 
   #elif IS_TFTGLCD_PANEL
@@ -211,7 +211,7 @@
     #define BTN_EN1                  EXP2_08_PIN
     #define BTN_EN2                  EXP2_06_PIN
 
-    #define LCD_PINS_ENABLE          EXP1_08_PIN
+    #define LCD_PINS_EN              EXP1_08_PIN
 
     #if ENABLED(FYSETC_MINI_12864)
 
diff --git a/buildroot/share/scripts/__init__.py b/buildroot/share/scripts/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/buildroot/share/scripts/exportTranslations.py b/buildroot/share/scripts/exportTranslations.py
index 620c2e77b1c2..01867f30a772 100755
--- a/buildroot/share/scripts/exportTranslations.py
+++ b/buildroot/share/scripts/exportTranslations.py
@@ -8,12 +8,13 @@
 
 import re
 from pathlib import Path
+from marlang import namebyid
+
+LANGHOME = "Marlin/src/lcd/language"
 
 # Write multiple sheets if true, otherwise write one giant sheet
 MULTISHEET = True
-
-# Where to look for the language files
-LANGHOME = "Marlin/src/lcd/language"
+OUTDIR = 'csv-out'
 
 # Check for the path to the language files
 if not Path(LANGHOME).is_dir():
@@ -21,39 +22,6 @@
     print("Edit LANGHOME or cd to the root of the repo before running.")
     exit(1)
 
-# A dictionary to contain language names
-LANGNAME = {
-    'an': "Aragonese",
-    'bg': "Bulgarian",
-    'ca': "Catalan",
-    'cz': "Czech",
-    'da': "Danish",
-    'de': "German",
-    'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)",
-    'en': "English",
-    'es': "Spanish",
-    'eu': "Basque-Euskera",
-    'fi': "Finnish",
-    'fr': "French", 'fr_na': "French (no accent)",
-    'gl': "Galician",
-    'hr': "Croatian (Hrvatski)",
-    'hu': "Hungarian / Magyar",
-    'it': "Italian",
-    'jp_kana': "Japanese (Kana)",
-    'ko_KR': "Korean",
-    'nl': "Dutch",
-    'pl': "Polish",
-    'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)",
-    'ro': "Romanian",
-    'ru': "Russian",
-    'sk': "Slovak",
-    'sv': "Swedish",
-    'tr': "Turkish",
-    'uk': "Ukrainian",
-    'vi': "Vietnamese",
-    'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese"
-}
-
 # A limit just for testing
 LIMIT = 0
 
@@ -102,17 +70,13 @@
         # For string-defining lines capture the string data
         match = re.match(r'LSTR\s+([A-Z0-9_]+)\s*=\s*(.+)\s*', line)
         if match:
-            # The name is the first captured group
-            name = match.group(1)
-            # The value is the second captured group
-            value = match.group(2)
-            # Replace escaped quotes temporarily
-            value = value.replace('\\"', '__Q__')
+            # Name and quote-sanitized value
+            name, value = match.group(1), match.group(2).replace('\\"', '__Q__')
 
             # Remove all _UxGT wrappers from the value in a non-greedy way
             value = re.sub(r'_UxGT\((".*?")\)', r'\1', value)
 
-            # Multi-line strings will get one or more bars | for identification
+            # Multi-line strings get one or more bars | for identification
             multiline = 0
             multimatch = re.match(r'.*MSG_(\d)_LINE\s*\(\s*(.+?)\s*\).*', value)
             if multimatch:
@@ -144,6 +108,9 @@
 # Print the array
 #print(language_strings)
 
+# Report the total number of unique strings
+print("Found %s distinct LCD strings." % len(names))
+
 # Write a single language entry to the CSV file with narrow, wide, and tall strings
 def write_csv_lang(f, strings, name):
     f.write(',')
@@ -157,14 +124,13 @@ def write_csv_lang(f, strings, name):
     #
     # Export a separate sheet for each language
     #
-    OUTDIR = 'csv-out'
     Path.mkdir(Path(OUTDIR), exist_ok=True)
 
     for lang in langcodes:
         f = open("%s/language_%s.csv" % (OUTDIR, lang), 'w', encoding='utf-8')
         if not f: continue
 
-        lname = lang + ' ' + LANGNAME[lang]
+        lname = lang + ' ' + namebyid(lang)
         header = ['name', lname, lname + ' (wide)', lname + ' (tall)']
         f.write('"' + '","'.join(header) + '"\n')
 
@@ -182,7 +148,7 @@ def write_csv_lang(f, strings, name):
     if f:
         header = ['name']
         for lang in langcodes:
-            lname = lang + ' ' + LANGNAME[lang]
+            lname = lang + ' ' + namebyid(lang)
             header += [lname, lname + ' (wide)', lname + ' (tall)']
         f.write('"' + '","'.join(header) + '"\n')
 
diff --git a/buildroot/share/scripts/importTranslations.py b/buildroot/share/scripts/importTranslations.py
new file mode 100755
index 000000000000..eb685092fb35
--- /dev/null
+++ b/buildroot/share/scripts/importTranslations.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+"""
+importTranslations.py
+
+Import LCD language strings from a CSV file or Google Sheets
+and write Marlin LCD language files based on the data.
+
+Use exportTranslations.py to export CSV from the language files.
+
+Google Sheets Link:
+https://docs.google.com/spreadsheets/d/12yiy-kS84ajKFm7oQIrC4CF8ZWeu9pAR4zrgxH4ruk4/edit#gid=84528699
+
+TODO: Get CHARSIZE and other content above the first namespace from existing language files
+
+"""
+
+import sys, re, requests, csv, datetime
+from marlang import namebyid
+
+LANGHOME = "Marlin/src/lcd/language"
+OUTDIR = 'language-out'
+
+# Get the file path from the command line
+FILEPATH = sys.argv[1] if len(sys.argv) > 1 else None
+
+download = FILEPATH == 'download'
+
+if not FILEPATH or download:
+    # The public URL with Marlin's translation strings
+    SHEETID = "12yiy-kS84ajKFm7oQIrC4CF8ZWeu9pAR4zrgxH4ruk4"
+    FILEPATH = 'https://docs.google.com/spreadsheet/ccc?key=%s&output=csv' % SHEETID
+
+if FILEPATH.startswith('http'):
+    response = requests.get(FILEPATH)
+    assert response.status_code == 200, 'GET failed for %s' % FILEPATH
+    csvdata = response.content.decode('utf-8')
+else:
+    if not FILEPATH.endswith('.csv'): FILEPATH += '.csv'
+    f = open(FILEPATH, 'r', encoding='utf-8')
+    csvdata = f.read()
+    f.close()
+
+if not csvdata:
+    print("Error: couldn't read CSV data from %s" % FILEPATH)
+    exit(1)
+
+if download:
+    DLNAME = sys.argv[2] if len(sys.argv) > 2 else 'languages.csv'
+    if not DLNAME.endswith('.csv'): DLNAME += '.csv'
+    f = open(DLNAME, 'w', encoding='utf-8')
+    f.write(csvdata)
+    f.close()
+    print("Downloaded %s from %s" % (DLNAME, FILEPATH))
+    exit(0)
+
+#print(csvdata)
+lines = csvdata.splitlines()
+reader = csv.reader(lines, delimiter=',')
+gothead = False
+columns = ['']
+numcols = 0
+strings_per_lang = {}
+for row in reader:
+    if not gothead:
+        gothead = True
+        numcols = len(row)
+        if row[0] != 'name':
+            print('Error: first column should be "name"')
+            exit(1)
+        # The rest of the columns are language codes and names
+        for i in range(1, numcols - 1 ):
+            elms = row[i].split(' ')
+            lang = elms[0]
+            style = ('Wide' if elms[-1] == '(wide)' else 'Tall' if elms[-1] == '(tall)' else 'Narrow')
+            columns.append({ 'lang': lang, 'style': style })
+            if not lang in strings_per_lang: strings_per_lang[lang] = {}
+            if not style in strings_per_lang[lang]: strings_per_lang[lang][style] = {}
+        continue
+    # Add the named string for all the included languages
+    name = row[0]
+    for i in range(1, numcols - 1):
+        str = row[i]
+        if str:
+            col = columns[i]
+            strings_per_lang[col['lang']][col['style']][name] = str
+
+# Create a folder for the imported language outfiles
+from pathlib import Path
+Path.mkdir(Path(OUTDIR), exist_ok=True)
+
+FILEHEADER = '''
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+/**
+ * %s
+ *
+ * LCD Menu Messages
+ * See also https://marlinfw.org/docs/development/lcd_language.html
+ *
+ * Substitutions are applied for the following characters when used in menu items titles:
+ *
+ *   $ displays an inserted string
+ *   { displays  '0'....'10' for indexes 0 - 10
+ *   ~ displays  '1'....'11' for indexes 0 - 10
+ *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
+ *   @ displays an axis name such as XYZUVW, or E for an extruder
+ */
+
+'''
+
+# Iterate over the languages which correspond to the columns
+# The columns are assumed to be grouped by language in the order Narrow, Wide, Tall
+# TODO: Go through lang only, then impose the order Narrow, Wide, Tall.
+#       So if something is missing or out of order everything still gets built correctly.
+
+f = None
+gotlang = {}
+for i in range(1, numcols - 1):
+    #if i > 6: break # Testing
+    col = columns[i]
+    lang, style = col['lang'], col['style']
+
+    # If we haven't already opened a file for this language, do so now
+    if not lang in gotlang:
+        gotlang[lang] = {}
+        if f: f.close()
+        fn = "%s/language_%s.h" % (OUTDIR, lang)
+        f = open(fn, 'w', encoding='utf-8')
+        if not f:
+            print("Failed to open %s." % fn)
+            exit(1)
+
+        # Write the opening header for the new language file
+        #f.write(FILEHEADER % namebyid(lang))
+        f.write('/**\n * Imported from %s on %s at %s\n */\n' % (FILEPATH, datetime.date.today(), datetime.datetime.now().strftime("%H:%M:%S")))
+
+    # Start a namespace for the language and style
+    f.write('\nnamespace Language%s_%s {\n' % (style, lang))
+
+    # Wide and tall namespaces inherit from the others
+    if style == 'Wide':
+        f.write('  using namespace LanguageNarrow_%s;\n' % lang)
+        f.write('  #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2\n')
+    elif style == 'Tall':
+        f.write('  using namespace LanguageWide_%s;\n' % lang)
+        f.write('  #if LCD_HEIGHT >= 4\n')
+    elif lang != 'en':
+        f.write('  using namespace Language_en; // Inherit undefined strings from English\n')
+
+    # Formatting for the lines
+    indent = '  ' if style == 'Narrow' else '    '
+    width = 34 if style == 'Narrow' else 32
+    lstr_fmt = '%sLSTR %%-%ds = %%s;%%s\n' % (indent, width)
+
+    # Emit all the strings for this language and style
+    for name in strings_per_lang[lang][style].keys():
+        # Get the raw string value
+        val = strings_per_lang[lang][style][name]
+        # Count the number of bars
+        if val.startswith('|'):
+            bars = val.count('|')
+            val = val[1:]
+        else:
+            bars = 0
+        # Escape backslashes, substitute quotes, and wrap in _UxGT("...")
+        val = '_UxGT("%s")' % val.replace('\\', '\\\\').replace('"', '__Q__')
+        # Move named references outside of the macro
+        val = re.sub(r'\(([A-Z0-9]+_[A-Z0-9_]+)\)', r'") \1 _UxGT("', val)
+        # Remove all empty _UxGT("") that result from the above
+        val = re.sub(r'\s*_UxGT\(""\)\s*', '', val)
+        # No wrapper needed for just spaces
+        val = re.sub(r'_UxGT\((" +")\)', r'\1', val)
+        # Multi-line strings start with a bar...
+        if bars:
+            # Wrap the string in MSG_#_LINE(...) and split on bars
+            val = re.sub(r'^_UxGT\((.+)\)', r'_UxGT(MSG_%s_LINE(\1))' % bars, val)
+            val = val.replace('|', '", "')
+        # Restore quotes inside the string
+        val = val.replace('__Q__', '\\"')
+        # Add a comment with the English string for reference
+        comm = ''
+        if lang != 'en':
+            en = strings_per_lang['en']
+            if name in en[style]: str = en[style][name]
+            elif name in en['Narrow']: str = en['Narrow'][name]
+            if str:
+                cfmt = '%%%ss// %%s' % (50 - len(val) if len(val) < 50 else 1)
+                comm = cfmt % (' ', str)
+
+        # Write out the string definition
+        f.write(lstr_fmt % (name, val, comm))
+
+    if style == 'Wide' or style == 'Tall': f.write('  #endif\n')
+
+    f.write('}\n') # End namespace
+
+    # Assume the 'Tall' namespace comes last
+    if style == 'Tall': f.write('\nnamespace Language_%s {\n  using namespace LanguageTall_%s;\n}\n' % (lang, lang))
+
+# Close the last-opened output file
+if f: f.close()
diff --git a/buildroot/share/scripts/marlang.py b/buildroot/share/scripts/marlang.py
new file mode 100755
index 000000000000..789561e7b9a4
--- /dev/null
+++ b/buildroot/share/scripts/marlang.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+#
+# marlang.py
+#
+
+# A dictionary to contain language names
+LANGNAME = {
+    'an': "Aragonese",
+    'bg': "Bulgarian",
+    'ca': "Catalan",
+    'cz': "Czech",
+    'da': "Danish",
+    'de': "German",
+    'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)",
+    'en': "English",
+    'es': "Spanish",
+    'eu': "Basque-Euskera",
+    'fi': "Finnish",
+    'fr': "French", 'fr_na': "French (no accent)",
+    'gl': "Galician",
+    'hr': "Croatian (Hrvatski)",
+    'hu': "Hungarian / Magyar",
+    'it': "Italian",
+    'jp_kana': "Japanese (Kana)",
+    'ko_KR': "Korean",
+    'nl': "Dutch",
+    'pl': "Polish",
+    'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)",
+    'ro': "Romanian",
+    'ru': "Russian",
+    'sk': "Slovak",
+    'sv': "Swedish",
+    'tr': "Turkish",
+    'uk': "Ukrainian",
+    'vi': "Vietnamese",
+    'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese"
+}
+
+def namebyid(id):
+    if id in LANGNAME: return LANGNAME[id]
+    return '<unknown>'