From 7ac7ddbf20bb18c7bd242447a8e60927d9a030bb Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Fri, 11 Sep 2015 19:52:01 -0700
Subject: [PATCH] Show nozzles, heaters, and extruders numbered 1-4

---
 Marlin/language_an.h        |   4 +-
 Marlin/language_bg.h        |   4 +-
 Marlin/language_ca.h        |   4 +-
 Marlin/language_cn.h        |  17 +---
 Marlin/language_cz.h        |  22 +----
 Marlin/language_da.h        |   9 +-
 Marlin/language_de.h        |   4 +-
 Marlin/language_en.h        |  52 +++++------
 Marlin/language_es.h        |   4 +-
 Marlin/language_eu.h        |   4 +-
 Marlin/language_fi.h        |   4 +-
 Marlin/language_fr.h        |   4 +-
 Marlin/language_it.h        |   5 +-
 Marlin/language_kana.h      |   5 +-
 Marlin/language_kana_utf8.h |   5 +-
 Marlin/language_nl.h        |   4 +-
 Marlin/language_pl.h        |   4 +-
 Marlin/language_pt-br.h     |   4 +-
 Marlin/language_pt.h        |   4 +-
 Marlin/language_ru.h        |   4 +-
 Marlin/ultralcd.cpp         | 166 ++++++++++++++++++------------------
 21 files changed, 128 insertions(+), 205 deletions(-)

diff --git a/Marlin/language_an.h b/Marlin/language_an.h
index 814abe27ea..625bd1ab9c 100644
--- a/Marlin/language_an.h
+++ b/Marlin/language_an.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Movimiento"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Contrast"
 #define MSG_STORE_EPROM                     "Alzar Memoria"
 #define MSG_LOAD_EPROM                      "Cargar Memoria"
diff --git a/Marlin/language_bg.h b/Marlin/language_bg.h
index 78670c1f34..0afe344860 100644
--- a/Marlin/language_bg.h
+++ b/Marlin/language_bg.h
@@ -83,9 +83,7 @@
 #define MSG_MOTION                          "Движение"
 #define MSG_VOLUMETRIC                      "Нишка"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Диам. нишка 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Диам. нишка 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Диам. нишка 3"
+#define MSG_FILAMENT_DIAM                   "Диам. нишка"
 #define MSG_CONTRAST                        "LCD контраст"
 #define MSG_STORE_EPROM                     "Запази в EPROM"
 #define MSG_LOAD_EPROM                      "Зареди от EPROM"
diff --git a/Marlin/language_ca.h b/Marlin/language_ca.h
index a796b1e1e7..dc69b57966 100644
--- a/Marlin/language_ca.h
+++ b/Marlin/language_ca.h
@@ -83,9 +83,7 @@
 #define MSG_MOTION                          "Moviment"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Contrast de LCD"
 #define MSG_STORE_EPROM                     "Desar a memoria"
 #define MSG_LOAD_EPROM                      "Carregar de mem."
diff --git a/Marlin/language_cn.h b/Marlin/language_cn.h
index 71565501ee..5c5a94ce2e 100644
--- a/Marlin/language_cn.h
+++ b/Marlin/language_cn.h
@@ -30,10 +30,6 @@
   #define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " \xc5\xc6"
   #define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " \xbe\xc6"
   #define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " \xbe\xbf"
-  #define MSG_H1                              "1"
-  #define MSG_H2                              "2"
-  #define MSG_H3                              "3"
-  #define MSG_H4                              "4"
   #define MSG_COOLDOWN                        "\xc8\xc9"
   #define MSG_SWITCH_PS_ON                    "\xb9\xcb\xca\xb3"
   #define MSG_SWITCH_PS_OFF                   "\xb9\xcb\xb5\xb6"
@@ -50,11 +46,6 @@
   #define MSG_MOVE_10MM                       "\xc1\xb2 10mm"
   #define MSG_SPEED                           "\xd1\xd2"
   #define MSG_NOZZLE                          "\xd3\xd4"
-  #define MSG_N0                              " 0"
-  #define MSG_N1                              " 1"
-  #define MSG_N2                              " 2"
-  #define MSG_N3                              " 3"
-  #define MSG_N4                              " 4"
   #define MSG_BED                             "\xc4\xc7"
   #define MSG_FAN_SPEED                       "\xd5\xd6\xd1\xd2"
   #define MSG_FLOW                            "\xcc\xad\xd1\xd2"
@@ -69,9 +60,6 @@
   #define MSG_PID_I                           "PID-I"
   #define MSG_PID_D                           "PID-D"
   #define MSG_PID_C                           "PID-C"
-  #define MSG_E2                              " E2"
-  #define MSG_E3                              " E3"
-  #define MSG_E4                              " E4"
   #define MSG_ACC                             "Accel"
   #define MSG_VXY_JERK                        "Vxy-jerk"
   #define MSG_VZ_JERK                         "Vz-jerk"
@@ -94,10 +82,7 @@
   #define MSG_MOTION                          "\xdf\xb2"
   #define MSG_VOLUMETRIC                      "Filament"
   #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-  #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-  #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-  #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
-  #define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
+  #define MSG_FILAMENT_DIAM                   "Fil. Dia."
   #define MSG_CONTRAST                        "LCD contrast"
   #define MSG_STORE_EPROM                     "Store memory"
   #define MSG_LOAD_EPROM                      "Load memory"
diff --git a/Marlin/language_cz.h b/Marlin/language_cz.h
index 8702007955..f32ff0dcfb 100644
--- a/Marlin/language_cz.h
+++ b/Marlin/language_cz.h
@@ -2,7 +2,7 @@
  * Czech
  *
  * LCD Menu Messages
- * Se also documentation/LCDLanguageFont.md
+ * See also documentation/LCDLanguageFont.md
  *
  * Translated by Petr Zahradnik, Computer Laboratory
  * Blog and video blog Zahradnik se bavi
@@ -36,10 +36,6 @@
 #define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " Vse"
 #define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Podloz"
 #define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " Nast"
-#define MSG_H1                              "1"
-#define MSG_H2                              "2"
-#define MSG_H3                              "3"
-#define MSG_H4                              "4"
 #define MSG_COOLDOWN                        "Zchladit"
 #define MSG_SWITCH_PS_ON                    "Zapnout napajeni"
 #define MSG_SWITCH_PS_OFF                   "Vypnout napajeni"
@@ -51,19 +47,11 @@
 #define MSG_MOVE_Y                          "Posunout Y"
 #define MSG_MOVE_Z                          "Posunout Z"
 #define MSG_MOVE_E                          "Extruder"
-#define MSG_MOVE_E1                         "Extruder1"
-#define MSG_MOVE_E2                         "Extruder2"
-#define MSG_MOVE_E3                         "Extruder3"
 #define MSG_MOVE_01MM                       "Posunout o 0,1mm"
 #define MSG_MOVE_1MM                        "Posunout o 1mm"
 #define MSG_MOVE_10MM                       "Posunout o 10mm"
 #define MSG_SPEED                           "Rychlost"
 #define MSG_NOZZLE                          "Tryska"
-#define MSG_N0                              " 0"
-#define MSG_N1                              " 1"
-#define MSG_N2                              " 2"
-#define MSG_N3                              " 3"
-#define MSG_N4                              " 4"
 #define MSG_BED                             "Podlozka"
 #define MSG_FAN_SPEED                       "Rychlost vent."
 #define MSG_FLOW                            "Prutok"
@@ -78,9 +66,6 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
-#define MSG_E2                              " E2"
-#define MSG_E3                              " E3"
-#define MSG_E4                              " E4"
 #define MSG_ACC                             "Zrychl"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
@@ -103,10 +88,7 @@
 #define MSG_MOTION                          "Pohyb"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E na mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Prum. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Prum. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Prum. 3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Prum. 4"
+#define MSG_FILAMENT_DIAM                   "Fil. Prum."
 #define MSG_CONTRAST                        "Kontrast LCD"
 #define MSG_STORE_EPROM                     "Ulozit nastaveni"
 #define MSG_LOAD_EPROM                      "Nacist nastaveni"
diff --git a/Marlin/language_da.h b/Marlin/language_da.h
index 8f2688b6b5..61f03e08d3 100644
--- a/Marlin/language_da.h
+++ b/Marlin/language_da.h
@@ -42,8 +42,6 @@
 #define MSG_MOVE_Y                          "Flyt Y"
 #define MSG_MOVE_Z                          "Flyt Z"
 #define MSG_MOVE_E                          "Extruder"
-#define MSG_MOVE_E1                         "Extruder2"
-#define MSG_MOVE_E2                         "Extruder3"
 #define MSG_MOVE_01MM                       "Flyt 0.1mm"
 #define MSG_MOVE_1MM                        "Flyt 1mm"
 #define MSG_MOVE_10MM                       "Flyt 10mm"
@@ -54,9 +52,6 @@
 #define MSG_BED                             "Plade"
 #define MSG_FAN_SPEED                       "Blæser hastighed"
 #define MSG_FLOW                            "Flow"
-#define MSG_FLOW0                           "Flow 0"
-#define MSG_FLOW1                           "Flow 1"
-#define MSG_FLOW2                           "Flow 2"
 #define MSG_CONTROL                         "Kontrol"
 #define MSG_MIN                             " \002 Min"
 #define MSG_MAX                             " \002 Max"
@@ -89,9 +84,7 @@
 #define MSG_MOTION                          "Motion"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCD kontrast"
 #define MSG_STORE_EPROM                     "Gem i EEPROM"
 #define MSG_LOAD_EPROM                      "Hent fra EEPROM"
diff --git a/Marlin/language_de.h b/Marlin/language_de.h
index 37bbaa96b0..3049581ef6 100644
--- a/Marlin/language_de.h
+++ b/Marlin/language_de.h
@@ -81,9 +81,7 @@
 #define MSG_MOTION                          "Bewegung"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm³"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Filament D 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Filament D 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Filament D 3"
+#define MSG_FILAMENT_DIAM                   "Filament D"
 #define MSG_CONTRAST                        "LCD Kontrast"
 #define MSG_STORE_EPROM                     "EPROM speichern"
 #define MSG_LOAD_EPROM                      "EPROM laden"
diff --git a/Marlin/language_en.h b/Marlin/language_en.h
index 60e46ba847..d035f89829 100644
--- a/Marlin/language_en.h
+++ b/Marlin/language_en.h
@@ -120,21 +120,18 @@
 #ifndef MSG_MOVE_E
 #define MSG_MOVE_E                          "Extruder"
 #endif
-#if EXTRUDERS > 1
-  #ifndef MSG_MOVE_E1
-  #define MSG_MOVE_E1                       "Extruder1"
-  #endif
-  #if EXTRUDERS > 2
-    #ifndef MSG_MOVE_E2
-    #define MSG_MOVE_E2                     "Extruder2"
-    #endif
-    #if EXTRUDERS > 3
-      #ifndef MSG_MOVE_E3
-      #define MSG_MOVE_E3                   "Extruder3"
-      #endif
-    #endif
-  #endif // EXTRUDERS > 2
-#endif // EXTRUDERS > 1
+#ifndef MSG_MOVE_E1
+#define MSG_MOVE_E1                         "1"
+#endif
+#ifndef MSG_MOVE_E2
+#define MSG_MOVE_E2                         "2"
+#endif
+#ifndef MSG_MOVE_E3
+#define MSG_MOVE_E3                         "3"
+#endif
+#ifndef MSG_MOVE_E4
+#define MSG_MOVE_E4                         "4"
+#endif
 #ifndef MSG_MOVE_01MM
 #define MSG_MOVE_01MM                       "Move 0.1mm"
 #endif
@@ -150,9 +147,6 @@
 #ifndef MSG_NOZZLE
 #define MSG_NOZZLE                          "Nozzle"
 #endif
-#ifndef MSG_N0
-#define MSG_N0                              " 0"
-#endif
 #ifndef MSG_N1
 #define MSG_N1                              " 1"
 #endif
@@ -207,6 +201,9 @@
 #ifndef MSG_PID_C
 #define MSG_PID_C                           "PID-C"
 #endif
+#ifndef MSG_E1
+#define MSG_E1                              " E1"
+#endif
 #ifndef MSG_E2
 #define MSG_E2                              " E2"
 #endif
@@ -282,17 +279,20 @@
 #ifndef MSG_VOLUMETRIC_ENABLED
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
 #endif
-#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
+#ifndef MSG_FILAMENT_DIAM
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #endif
-#ifndef MSG_FILAMENT_SIZE_EXTRUDER_1
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
+#ifndef MSG_DIAM_E1
+#define MSG_DIAM_E1                         " 1"
 #endif
-#ifndef MSG_FILAMENT_SIZE_EXTRUDER_2
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#ifndef MSG_DIAM_E2
+#define MSG_DIAM_E2                         " 2"
 #endif
-#ifndef MSG_FILAMENT_SIZE_EXTRUDER_3
-#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
+#ifndef MSG_DIAM_E3
+#define MSG_DIAM_E3                         " 3"
+#endif
+#ifndef MSG_DIAM_E4
+#define MSG_DIAM_E4                         " 4"
 #endif
 #ifndef MSG_CONTRAST
 #define MSG_CONTRAST                        "LCD contrast"
diff --git a/Marlin/language_es.h b/Marlin/language_es.h
index 4dd0b5a7bf..f047024358 100644
--- a/Marlin/language_es.h
+++ b/Marlin/language_es.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Movimiento"
 #define MSG_VOLUMETRIC                      "Filamento"
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Contraste"
 #define MSG_STORE_EPROM                     "Guardar memoria"
 #define MSG_LOAD_EPROM                      "Cargar memoria"
diff --git a/Marlin/language_eu.h b/Marlin/language_eu.h
index cfb6eeb8d8..3298fef143 100644
--- a/Marlin/language_eu.h
+++ b/Marlin/language_eu.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Mugimendua"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCD kontrastea"
 #define MSG_STORE_EPROM                     "Gorde memoria"
 #define MSG_LOAD_EPROM                      "Kargatu memoria"
diff --git a/Marlin/language_fi.h b/Marlin/language_fi.h
index 837acf747c..5815a97a3a 100644
--- a/Marlin/language_fi.h
+++ b/Marlin/language_fi.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Liike"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm³"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCD kontrasti"
 #define MSG_STORE_EPROM                     "Tallenna muistiin"
 #define MSG_LOAD_EPROM                      "Lataa muistista"
diff --git a/Marlin/language_fr.h b/Marlin/language_fr.h
index 7e1d27991a..d46d235c58 100644
--- a/Marlin/language_fr.h
+++ b/Marlin/language_fr.h
@@ -84,9 +84,7 @@
 #define MSG_MOTION                          "Mouvement"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Contraste LCD"
 #define MSG_STORE_EPROM                     "Sauver config"
 #define MSG_LOAD_EPROM                      "Lire config"
diff --git a/Marlin/language_it.h b/Marlin/language_it.h
index 9ed836dadf..80aa9024c5 100644
--- a/Marlin/language_it.h
+++ b/Marlin/language_it.h
@@ -82,10 +82,7 @@
 #define MSG_MOTION                          "Movimento"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED		          "E in mm³"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Diam. filo 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Diam. filo 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Diam. filo 3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Diam. filo 4"
+#define MSG_FILAMENT_DIAM                   "Diam. filo"
 #define MSG_CONTRAST                        "Contrasto LCD"
 #define MSG_STORE_EPROM                     "Salva in EEPROM"
 #define MSG_LOAD_EPROM                      "Carica da EEPROM"
diff --git a/Marlin/language_kana.h b/Marlin/language_kana.h
index f50a1c40e9..73322e1683 100644
--- a/Marlin/language_kana.h
+++ b/Marlin/language_kana.h
@@ -84,10 +84,7 @@
 #define MSG_MOTION                          "\xb3\xba\xde\xb7\xbe\xaf\xc3\xb2"                             // "Motion"
 #define MSG_VOLUMETRIC                      "\xcc\xa8\xd7\xd2\xdd\xc4"                                     // "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCD\xba\xdd\xc4\xd7\xbd\xc4"                                  // "LCD contrast"
 #define MSG_STORE_EPROM                     "\xd2\xd3\xd8\xcd\xb6\xb8\xc9\xb3"                             // "Store memory"
 #define MSG_LOAD_EPROM                      "\xd2\xd3\xd8\xb6\xd7\xd6\xd0\ba\xd0"                          // "Load memory"
diff --git a/Marlin/language_kana_utf8.h b/Marlin/language_kana_utf8.h
index d3f4203cd3..587d3f682c 100644
--- a/Marlin/language_kana_utf8.h
+++ b/Marlin/language_kana_utf8.h
@@ -88,10 +88,7 @@
 #define MSG_MOTION                          "ウゴキセツテイ"                // "Motion"
 #define MSG_VOLUMETRIC                      "フィラナント"                    // "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCDコントラスト"                 // "LCD contrast"
 #define MSG_STORE_EPROM                     "ナモリヘセケノウ"                 // "Store memory"
 #define MSG_LOAD_EPROM                      "ナモリセラヨミbaミ"               // "Load memory"
diff --git a/Marlin/language_nl.h b/Marlin/language_nl.h
index 1d8b129df1..975954c644 100644
--- a/Marlin/language_nl.h
+++ b/Marlin/language_nl.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Beweging"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "LCD contrast"
 #define MSG_STORE_EPROM                     "Geheugen opslaan"
 #define MSG_LOAD_EPROM                      "Geheugen laden"
diff --git a/Marlin/language_pl.h b/Marlin/language_pl.h
index acae0dbf27..5cf87fc9ed 100644
--- a/Marlin/language_pl.h
+++ b/Marlin/language_pl.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Ruch"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Kontrast LCD"
 #define MSG_STORE_EPROM                     "Zapisz w pamieci"
 #define MSG_LOAD_EPROM                      "Wczytaj z pamieci"
diff --git a/Marlin/language_pt-br.h b/Marlin/language_pt-br.h
index f18b6f887d..56def7aa7d 100644
--- a/Marlin/language_pt-br.h
+++ b/Marlin/language_pt-br.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Movimento"
 #define MSG_VOLUMETRIC                      "Filament"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
 #define MSG_CONTRAST                        "Contrast"
 #define MSG_STORE_EPROM                     "Guardar memoria"
 #define MSG_LOAD_EPROM                      "Carregar memoria"
diff --git a/Marlin/language_pt.h b/Marlin/language_pt.h
index ce80eff649..0c7611c581 100644
--- a/Marlin/language_pt.h
+++ b/Marlin/language_pt.h
@@ -82,9 +82,7 @@
 #define MSG_MOTION                          "Movimento"
 #define MSG_VOLUMETRIC                      "Filamento"
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Diam. 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Diam. 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Diam. 3"
+#define MSG_FILAMENT_DIAM                   "Fil. Diam."
 #define MSG_CONTRAST                        "Contraste"
 #define MSG_STORE_EPROM                     "Guardar na memoria"
 #define MSG_LOAD_EPROM                      "Carregar da memoria"
diff --git a/Marlin/language_ru.h b/Marlin/language_ru.h
index 729e03d6f4..d35daba9e3 100644
--- a/Marlin/language_ru.h
+++ b/Marlin/language_ru.h
@@ -83,9 +83,7 @@
 #define MSG_MOTION                          "Механика"
 #define MSG_VOLUMETRIC                      "Пруток"
 #define MSG_VOLUMETRIC_ENABLED              "E в mm3"
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Диаметр прутка 1"
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Диаметр прутка 2"
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Диаметр прутка 3"
+#define MSG_FILAMENT_DIAM                   "Диаметр прутка"
 #define MSG_CONTRAST                        "Контраст LCD"
 #define MSG_STORE_EPROM                     "Сохранить в EEPROM"
 #define MSG_LOAD_EPROM                      "Считать из EEPROM"
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index b466cfc51e..720e9faa01 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -495,14 +495,19 @@ static void lcd_tune_menu() {
 
   //
   // Nozzle:
+  // Nozzle 1:
   // Nozzle 2:
   // Nozzle 3:
   // Nozzle 4:
   //
-  #if TEMP_SENSOR_0 != 0
-    MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
-  #endif
-  #if EXTRUDERS > 1
+  #if EXTRUDERS == 1
+    #if TEMP_SENSOR_0 != 0
+      MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
+    #endif
+  #else //EXTRUDERS > 1
+    #if TEMP_SENSOR_0 != 0
+      MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N1, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
+    #endif
     #if TEMP_SENSOR_1 != 0
       MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
     #endif
@@ -536,18 +541,21 @@ static void lcd_tune_menu() {
   MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[active_extruder], 10, 999);
 
   //
-  // Flow 0:
+  // Flow:
   // Flow 1:
   // Flow 2:
   // Flow 3:
+  // Flow 4:
   //
-  MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N0, &extruder_multiplier[0], 10, 999);
-  #if EXTRUDERS > 1
-    MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &extruder_multiplier[1], 10, 999);
+  #if EXTRUDERS == 1
+    MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[0], 10, 999);
+  #else // EXTRUDERS > 1
+    MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &extruder_multiplier[0], 10, 999);
+    MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &extruder_multiplier[1], 10, 999);
     #if EXTRUDERS > 2
-      MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &extruder_multiplier[2], 10, 999);
+      MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &extruder_multiplier[2], 10, 999);
       #if EXTRUDERS > 3
-        MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &extruder_multiplier[3], 10, 999);
+        MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N4, &extruder_multiplier[3], 10, 999);
       #endif //EXTRUDERS > 3
     #endif //EXTRUDERS > 2
   #endif //EXTRUDERS > 1
@@ -829,12 +837,12 @@ static void lcd_move_e(
       pos_label = PSTR(MSG_MOVE_E);
     #else
       switch (e) {
-        case 0: pos_label = PSTR(MSG_MOVE_E0); break;
-        case 1: pos_label = PSTR(MSG_MOVE_E1); break;
+        case 0: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E1); break;
+        case 1: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E2); break;
         #if EXTRUDERS > 2
-          case 2: pos_label = PSTR(MSG_MOVE_E2); break;
+          case 2: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E3); break;
           #if EXTRUDERS > 3
-            case 3: pos_label = PSTR(MSG_MOVE_E3); break;
+            case 3: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E4); break;
           #endif //EXTRUDERS > 3
         #endif //EXTRUDERS > 2
       }
@@ -874,12 +882,12 @@ static void lcd_move_menu_axis() {
     #if EXTRUDERS == 1
       MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e);
     #else
-      MENU_ITEM(submenu, MSG_MOVE_E0, lcd_move_e0);
-      MENU_ITEM(submenu, MSG_MOVE_E1, lcd_move_e1);
+      MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E1, lcd_move_e0);
+      MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E2, lcd_move_e1);
       #if EXTRUDERS > 2
-        MENU_ITEM(submenu, MSG_MOVE_E2, lcd_move_e2);
+        MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E3, lcd_move_e2);
         #if EXTRUDERS > 3
-          MENU_ITEM(submenu, MSG_MOVE_E3, lcd_move_e3);
+          MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E4, lcd_move_e3);
         #endif
       #endif
     #endif // EXTRUDERS > 1
@@ -962,18 +970,18 @@ static void lcd_control_menu() {
     PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
     updatePID();
   }
-  void copy_and_scalePID_i_E1() { copy_and_scalePID_i(0); }
-  void copy_and_scalePID_d_E1() { copy_and_scalePID_d(0); }
+  #define COPY_AND_SCALE(eindex) \
+    void copy_and_scalePID_i_E ## eindex() { copy_and_scalePID_i(eindex); } \
+    void copy_and_scalePID_d_E ## eindex() { copy_and_scalePID_d(eindex); }
+
+  COPY_AND_SCALE(0);
   #if ENABLED(PID_PARAMS_PER_EXTRUDER)
     #if EXTRUDERS > 1
-      void copy_and_scalePID_i_E2() { copy_and_scalePID_i(1); }
-      void copy_and_scalePID_d_E2() { copy_and_scalePID_d(1); }
+      COPY_AND_SCALE(1);
       #if EXTRUDERS > 2
-        void copy_and_scalePID_i_E3() { copy_and_scalePID_i(2); }
-        void copy_and_scalePID_d_E3() { copy_and_scalePID_d(2); }
+        COPY_AND_SCALE(2);
         #if EXTRUDERS > 3
-          void copy_and_scalePID_i_E4() { copy_and_scalePID_i(3); }
-          void copy_and_scalePID_d_E4() { copy_and_scalePID_d(3); }
+          COPY_AND_SCALE(3);
         #endif //EXTRUDERS > 3
       #endif //EXTRUDERS > 2
     #endif //EXTRUDERS > 1
@@ -995,12 +1003,17 @@ static void lcd_control_temperature_menu() {
   MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
 
   //
-  // Nozzle, Nozzle 2, Nozzle 3, Nozzle 4
+  // Nozzle
+  // Nozzle 1, Nozzle 2, Nozzle 3, Nozzle 4
   //
-  #if TEMP_SENSOR_0 != 0
-    MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
-  #endif
-  #if EXTRUDERS > 1
+  #if EXTRUDERS == 1
+    #if TEMP_SENSOR_0 != 0
+      MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
+    #endif
+  #else //EXTRUDERS > 1
+    #if TEMP_SENSOR_0 != 0
+      MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N1, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
+    #endif
     #if TEMP_SENSOR_1 != 0
       MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
     #endif
@@ -1040,59 +1053,42 @@ static void lcd_control_temperature_menu() {
 
   //
   // PID-P, PID-I, PID-D, PID-C
+  // PID-P E1, PID-I E1, PID-D E1, PID-C E1
+  // PID-P E2, PID-I E2, PID-D E2, PID-C E2
+  // PID-P E3, PID-I E3, PID-D E3, PID-C E3
+  // PID-P E4, PID-I E4, PID-D E4, PID-C E4
   //
   #if ENABLED(PIDTEMP)
-    // set up temp variables - undo the default scaling
-    raw_Ki = unscalePID_i(PID_PARAM(Ki,0));
-    raw_Kd = unscalePID_d(PID_PARAM(Kd,0));
-    MENU_ITEM_EDIT(float52, MSG_PID_P, &PID_PARAM(Kp,0), 1, 9990);
-    // i is typically a small value so allows values below 1
-    MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E1);
-    MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D, &raw_Kd, 1, 9990, copy_and_scalePID_d_E1);
+
+    #define _PID_MENU_ITEMS(ELABEL, eindex) \
+      raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
+      raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
+      MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
+      MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \
+      MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex)
+
     #if ENABLED(PID_ADD_EXTRUSION_RATE)
-      MENU_ITEM_EDIT(float3, MSG_PID_C, &PID_PARAM(Kc,0), 1, 9990);
-    #endif//PID_ADD_EXTRUSION_RATE
-    #if ENABLED(PID_PARAMS_PER_EXTRUDER)
-      #if EXTRUDERS > 1
-        // set up temp variables - undo the default scaling
-        raw_Ki = unscalePID_i(PID_PARAM(Ki,1));
-        raw_Kd = unscalePID_d(PID_PARAM(Kd,1));
-        MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E2, &PID_PARAM(Kp,1), 1, 9990);
-        // i is typically a small value so allows values below 1
-        MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E2, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E2);
-        MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E2, &raw_Kd, 1, 9990, copy_and_scalePID_d_E2);
-        #if ENABLED(PID_ADD_EXTRUSION_RATE)
-          MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E2, &PID_PARAM(Kc,1), 1, 9990);
-        #endif//PID_ADD_EXTRUSION_RATE
+      #define PID_MENU_ITEMS(ELABEL, eindex) \
+        _PID_MENU_ITEMS(ELABEL, eindex); \
+        MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990)
+    #else
+      #define PID_MENU_ITEMS(ELABEL, eindex) _PID_MENU_ITEMS(ELABEL, eindex)
+    #endif
 
-        #if EXTRUDERS > 2
-          // set up temp variables - undo the default scaling
-          raw_Ki = unscalePID_i(PID_PARAM(Ki,2));
-          raw_Kd = unscalePID_d(PID_PARAM(Kd,2));
-          MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E3, &PID_PARAM(Kp,2), 1, 9990);
-          // i is typically a small value so allows values below 1
-          MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E3, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E3);
-          MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E3, &raw_Kd, 1, 9990, copy_and_scalePID_d_E3);
-          #if ENABLED(PID_ADD_EXTRUSION_RATE)
-            MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E3, &PID_PARAM(Kc,2), 1, 9990);
-          #endif//PID_ADD_EXTRUSION_RATE
+    #if ENABLED(PID_PARAMS_PER_EXTRUDER) && EXTRUDERS > 1
+      PID_MENU_ITEMS(MSG_E1, 0);
+      PID_MENU_ITEMS(MSG_E2, 1);
+      #if EXTRUDERS > 2
+        PID_MENU_ITEMS(MSG_E3, 2);
+        #if EXTRUDERS > 3
+          PID_MENU_ITEMS(MSG_E4, 3);
+        #endif //EXTRUDERS > 3
+      #endif //EXTRUDERS > 2
+    #else //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
+      PID_MENU_ITEMS("", 0);
+    #endif //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
 
-          #if EXTRUDERS > 3
-            // set up temp variables - undo the default scaling
-            raw_Ki = unscalePID_i(PID_PARAM(Ki,3));
-            raw_Kd = unscalePID_d(PID_PARAM(Kd,3));
-            MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E4, &PID_PARAM(Kp,3), 1, 9990);
-            // i is typically a small value so allows values below 1
-            MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E4, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E4);
-            MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E4, &raw_Kd, 1, 9990, copy_and_scalePID_d_E4);
-            #if ENABLED(PID_ADD_EXTRUSION_RATE)
-              MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E4, &PID_PARAM(Kc,3), 1, 9990);
-            #endif//PID_ADD_EXTRUSION_RATE
-          #endif//EXTRUDERS > 3
-        #endif//EXTRUDERS > 2
-      #endif//EXTRUDERS > 1
-    #endif //PID_PARAMS_PER_EXTRUDER
-  #endif//PIDTEMP
+  #endif //PIDTEMP
 
   //
   // Preheat PLA conf
@@ -1201,13 +1197,15 @@ static void lcd_control_volumetric_menu() {
   MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
 
   if (volumetric_enabled) {
-    MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
-    #if EXTRUDERS > 1
-      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
+    #if EXTRUDERS == 1
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
+    #else //EXTRUDERS > 1
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
       #if EXTRUDERS > 2
-        MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_2, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers);
+        MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers);
         #if EXTRUDERS > 3
-          MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_3, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers);
+          MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers);
         #endif //EXTRUDERS > 3
       #endif //EXTRUDERS > 2
     #endif //EXTRUDERS > 1