Ver código fonte

MarlinUI support for up to 5 Material Presets (#18488)

- Add `I` preset parameter to `G26`, `M106`, `M140`, and `M190`.
- Extend menu items to permit a string interpolation.
- Keep material names in a list and interpolate in menu items.
- Extend material presets to support up to 5 predefined materials.

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Giuliano Zaro 3 anos atrás
pai
commit
b0c6cfb051
Nenhuma conta vinculada ao e-mail do autor do commit
51 arquivos alterados com 1181 adições e 872 exclusões
  1. 47
    10
      Marlin/src/gcode/bedlevel/G26.cpp
  2. 65
    11
      Marlin/src/gcode/temp/M104_M109.cpp
  3. 25
    7
      Marlin/src/gcode/temp/M106_M107.cpp
  4. 60
    10
      Marlin/src/gcode/temp/M140_M190.cpp
  5. 0
    8
      Marlin/src/inc/Conditionals_LCD.h
  6. 11
    3
      Marlin/src/inc/Conditionals_post.h
  7. 7
    7
      Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
  8. 8
    8
      Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
  9. 0
    36
      Marlin/src/lcd/dogm/ultralcd_DOGM.h
  10. 17
    14
      Marlin/src/lcd/language/language_an.h
  11. 17
    14
      Marlin/src/lcd/language/language_bg.h
  12. 17
    14
      Marlin/src/lcd/language/language_ca.h
  13. 21
    18
      Marlin/src/lcd/language/language_cz.h
  14. 17
    14
      Marlin/src/lcd/language/language_da.h
  15. 21
    18
      Marlin/src/lcd/language/language_de.h
  16. 17
    14
      Marlin/src/lcd/language/language_el.h
  17. 17
    14
      Marlin/src/lcd/language/language_el_gr.h
  18. 19
    18
      Marlin/src/lcd/language/language_en.h
  19. 21
    18
      Marlin/src/lcd/language/language_es.h
  20. 21
    18
      Marlin/src/lcd/language/language_eu.h
  21. 17
    14
      Marlin/src/lcd/language/language_fi.h
  22. 21
    18
      Marlin/src/lcd/language/language_fr.h
  23. 21
    18
      Marlin/src/lcd/language/language_gl.h
  24. 17
    14
      Marlin/src/lcd/language/language_hr.h
  25. 21
    18
      Marlin/src/lcd/language/language_hu.h
  26. 21
    18
      Marlin/src/lcd/language/language_it.h
  27. 17
    14
      Marlin/src/lcd/language/language_jp_kana.h
  28. 11
    8
      Marlin/src/lcd/language/language_ko_KR.h
  29. 17
    14
      Marlin/src/lcd/language/language_nl.h
  30. 21
    18
      Marlin/src/lcd/language/language_pl.h
  31. 17
    14
      Marlin/src/lcd/language/language_pt.h
  32. 21
    18
      Marlin/src/lcd/language/language_pt_br.h
  33. 21
    18
      Marlin/src/lcd/language/language_ro.h
  34. 26
    20
      Marlin/src/lcd/language/language_ru.h
  35. 21
    18
      Marlin/src/lcd/language/language_sk.h
  36. 21
    18
      Marlin/src/lcd/language/language_tr.h
  37. 21
    18
      Marlin/src/lcd/language/language_uk.h
  38. 21
    18
      Marlin/src/lcd/language/language_vi.h
  39. 21
    18
      Marlin/src/lcd/language/language_zh_CN.h
  40. 21
    18
      Marlin/src/lcd/language/language_zh_TW.h
  41. 11
    8
      Marlin/src/lcd/lcdprint.cpp
  42. 60
    3
      Marlin/src/lcd/lcdprint.h
  43. 1
    0
      Marlin/src/lcd/menu/menu.cpp
  44. 124
    76
      Marlin/src/lcd/menu/menu.h
  45. 0
    3
      Marlin/src/lcd/menu/menu_addon.h
  46. 4
    24
      Marlin/src/lcd/menu/menu_configuration.cpp
  47. 17
    6
      Marlin/src/lcd/menu/menu_filament.cpp
  48. 58
    92
      Marlin/src/lcd/menu/menu_temperature.cpp
  49. 55
    42
      Marlin/src/lcd/menu/menu_ubl.cpp
  50. 27
    4
      Marlin/src/lcd/ultralcd.cpp
  51. 1
    8
      Marlin/src/lcd/ultralcd.h

+ 47
- 10
Marlin/src/gcode/bedlevel/G26.cpp Ver arquivo

@@ -47,6 +47,8 @@
47 47
  *
48 48
  *   H #  Hotend      Set the Nozzle Temperature. If not specified, a default of 205 C. will be assumed.
49 49
  *
50
+ *   I #  Preset      Heat the Nozzle and Bed based on a Material Preset (if material presets are defined).
51
+ *
50 52
  *   F #  Filament    Used to specify the diameter of the filament being used. If not specified
51 53
  *                    1.75mm filament is assumed. If you are not getting acceptable results by using the
52 54
  *                    'correct' numbers, you can scale this number up or down a little bit to change the amount
@@ -140,7 +142,7 @@
140 142
 constexpr float g26_e_axis_feedrate = 0.025;
141 143
 
142 144
 static MeshFlags circle_flags, horizontal_mesh_line_flags, vertical_mesh_line_flags;
143
-float random_deviation = 0.0;
145
+float g26_random_deviation = 0.0;
144 146
 
145 147
 static bool g26_retracted = false; // Track the retracted state of the nozzle so mismatched
146 148
                                    // retracts/recovers won't result in a bad state.
@@ -193,7 +195,7 @@ mesh_index_pair find_closest_circle_to_print(const xy_pos_t &pos) {
193 195
       f += (g26_xy_pos - m).magnitude() / 15.0f;
194 196
 
195 197
       // Add the specified amount of Random Noise to our search
196
-      if (random_deviation > 1.0) f += random(0.0, random_deviation);
198
+      if (g26_random_deviation > 1.0) f += random(0.0, g26_random_deviation);
197 199
 
198 200
       if (f < closest) {
199 201
         closest = f;          // Found a closer un-printed location
@@ -508,15 +510,35 @@ void GcodeSuite::G26() {
508 510
   bool g26_continue_with_closest = parser.boolval('C'),
509 511
        g26_keep_heaters_on       = parser.boolval('K');
510 512
 
513
+  // Accept 'I' if temperature presets are defined
514
+  const uint8_t preset_index = (0
515
+    #if PREHEAT_COUNT
516
+      + (parser.seenval('I') ? _MIN(parser.value_byte(), PREHEAT_COUNT - 1) + 1 : 0)
517
+    #endif
518
+  );
519
+
511 520
   #if HAS_HEATED_BED
512
-    if (parser.seenval('B')) {
513
-      g26_bed_temp = parser.value_celsius();
514
-      if (g26_bed_temp && !WITHIN(g26_bed_temp, 40, BED_MAX_TARGET)) {
521
+
522
+    // Get a temperature from 'I' or 'B'
523
+    int16_t bedtemp = 0;
524
+
525
+    // Use the 'I' index if temperature presets are defined
526
+    #if PREHEAT_COUNT
527
+      if (preset_index) bedtemp = ui.material_preset[preset_index - 1].bed_temp;
528
+    #endif
529
+
530
+    // Look for 'B' Bed Temperature
531
+    if (parser.seenval('B')) bedtemp = parser.value_celsius();
532
+
533
+    if (bedtemp) {
534
+      if (!WITHIN(bedtemp, 40, BED_MAX_TARGET)) {
515 535
         SERIAL_ECHOLNPAIR("?Specified bed temperature not plausible (40-", int(BED_MAX_TARGET), "C).");
516 536
         return;
517 537
       }
538
+      g26_bed_temp = bedtemp;
518 539
     }
519
-  #endif
540
+
541
+  #endif // HAS_HEATED_BED
520 542
 
521 543
   if (parser.seenval('L')) {
522 544
     g26_layer_height = parser.value_linear_units();
@@ -580,20 +602,34 @@ void GcodeSuite::G26() {
580 602
 
581 603
   g26_extrusion_multiplier *= g26_filament_diameter * sq(g26_nozzle) / sq(0.3); // Scale up by nozzle size
582 604
 
583
-  if (parser.seenval('H')) {
584
-    g26_hotend_temp = parser.value_celsius();
585
-    if (!WITHIN(g26_hotend_temp, 165, (HEATER_0_MAXTEMP) - (HOTEND_OVERSHOOT))) {
605
+  // Get a temperature from 'I' or 'H'
606
+  int16_t noztemp = 0;
607
+
608
+  // Accept 'I' if temperature presets are defined
609
+  #if PREHEAT_COUNT
610
+    if (preset_index) noztemp = ui.material_preset[preset_index - 1].hotend_temp;
611
+  #endif
612
+
613
+  // Look for 'H' Hotend Temperature
614
+  if (parser.seenval('H')) noztemp = parser.value_celsius();
615
+
616
+  // If any preset or temperature was specified
617
+  if (noztemp) {
618
+    if (!WITHIN(noztemp, 165, (HEATER_0_MAXTEMP) - (HOTEND_OVERSHOOT))) {
586 619
       SERIAL_ECHOLNPGM("?Specified nozzle temperature not plausible.");
587 620
       return;
588 621
     }
622
+    g26_hotend_temp = noztemp;
589 623
   }
590 624
 
625
+  // 'U' to Randomize and optionally set circle deviation
591 626
   if (parser.seen('U')) {
592 627
     randomSeed(millis());
593 628
     // This setting will persist for the next G26
594
-    random_deviation = parser.has_value() ? parser.value_float() : 50.0;
629
+    g26_random_deviation = parser.has_value() ? parser.value_float() : 50.0;
595 630
   }
596 631
 
632
+  // Get repeat from 'R', otherwise do one full circuit
597 633
   int16_t g26_repeats;
598 634
   #if HAS_LCD_MENU
599 635
     g26_repeats = parser.intval('R', GRID_MAX_POINTS + 1);
@@ -610,6 +646,7 @@ void GcodeSuite::G26() {
610 646
     return;
611 647
   }
612 648
 
649
+  // Set a position with 'X' and/or 'Y'. Default: current_position
613 650
   g26_xy_pos.set(parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position.x,
614 651
                  parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position.y);
615 652
   if (!position_is_reachable(g26_xy_pos)) {

+ 65
- 11
Marlin/src/gcode/temp/M104_M109.cpp Ver arquivo

@@ -50,7 +50,12 @@
50 50
 #endif
51 51
 
52 52
 /**
53
- * M104: Set hot end temperature
53
+ * M104: Set Hotend Temperature target and return immediately
54
+ *
55
+ * Parameters:
56
+ *  I<preset> : Material Preset index (if material presets are defined)
57
+ *  T<index>  : Tool index. If omitted, applies to the active tool
58
+ *  S<target> : The target temperature in current units
54 59
  */
55 60
 void GcodeSuite::M104() {
56 61
 
@@ -63,8 +68,25 @@ void GcodeSuite::M104() {
63 68
     if (target_extruder < 0) return;
64 69
   #endif
65 70
 
66
-  if (parser.seenval('S')) {
67
-    const int16_t temp = parser.value_celsius();
71
+  bool got_temp = false;
72
+  int16_t temp = 0;
73
+
74
+  // Accept 'I' if temperature presets are defined
75
+  #if PREHEAT_COUNT
76
+    got_temp = parser.seenval('I');
77
+    if (got_temp) {
78
+      const uint8_t index = parser.value_byte();
79
+      temp = ui.material_preset[_MIN(index, PREHEAT_COUNT - 1)].hotend_temp;
80
+    }
81
+  #endif
82
+
83
+  // If no 'I' get the temperature from 'S'
84
+  if (!got_temp) {
85
+    got_temp = parser.seenval('S');
86
+    if (got_temp) temp = parser.value_celsius();
87
+  }
88
+
89
+  if (got_temp) {
68 90
     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP)
69 91
       singlenozzle_temp[target_extruder] = temp;
70 92
       if (target_extruder != active_extruder) return;
@@ -91,10 +113,25 @@ void GcodeSuite::M104() {
91 113
 }
92 114
 
93 115
 /**
94
- * M109: Sxxx Wait for hotend(s) to reach temperature. Waits only when heating.
95
- *       Rxxx Wait for hotend(s) to reach temperature. Waits when heating and cooling.
116
+ * M109: Set Hotend Temperature target and wait
117
+ *
118
+ * Parameters
119
+ *  I<preset> : Material Preset index (if material presets are defined)
120
+ *  T<index>  : Tool index. If omitted, applies to the active tool
121
+ *  S<target> : The target temperature in current units. Wait for heating only.
122
+ *  R<target> : The target temperature in current units. Wait for heating and cooling.
96 123
  *
97
- * With PRINTJOB_TIMER_AUTOSTART also start the job timer on heating and stop it if turned off.
124
+ * With AUTOTEMP...
125
+ *  F<factor> : Autotemp Scaling Factor. Set non-zero to enable Auto-temp.
126
+ *  S<min>    : Minimum temperature, in current units.
127
+ *  B<max>    : Maximum temperature, in current units.
128
+ *
129
+ * Examples
130
+ *  M109 S100 : Set target to 100°. Wait until the hotend is at or above 100°.
131
+ *  M109 R150 : Set target to 150°. Wait until the hotend gets close to 150°.
132
+ *
133
+ * With PRINTJOB_TIMER_AUTOSTART turning on heaters will start the print job timer
134
+ *  (used by printingIsActive, etc.) and turning off heaters will stop the timer.
98 135
  */
99 136
 void GcodeSuite::M109() {
100 137
 
@@ -107,10 +144,27 @@ void GcodeSuite::M109() {
107 144
     if (target_extruder < 0) return;
108 145
   #endif
109 146
 
110
-  const bool no_wait_for_cooling = parser.seenval('S'),
111
-             set_temp = no_wait_for_cooling || parser.seenval('R');
112
-  if (set_temp) {
113
-    const int16_t temp = parser.value_celsius();
147
+  bool got_temp = false;
148
+  int16_t temp = 0;
149
+
150
+  // Accept 'I' if temperature presets are defined
151
+  #if PREHEAT_COUNT
152
+    got_temp = parser.seenval('I');
153
+    if (got_temp) {
154
+      const uint8_t index = parser.value_byte();
155
+      temp = ui.material_preset[_MIN(index, PREHEAT_COUNT - 1)].hotend_temp;
156
+    }
157
+  #endif
158
+
159
+  // Get the temperature from 'S' or 'R'
160
+  bool no_wait_for_cooling = false;
161
+  if (!got_temp) {
162
+    no_wait_for_cooling = parser.seenval('S');
163
+    got_temp = no_wait_for_cooling || parser.seenval('R');
164
+    if (got_temp) temp = int16_t(parser.value_celsius());
165
+  }
166
+
167
+  if (got_temp) {
114 168
     #if ENABLED(SINGLENOZZLE_STANDBY_TEMP)
115 169
       singlenozzle_temp[target_extruder] = temp;
116 170
       if (target_extruder != active_extruder) return;
@@ -139,7 +193,7 @@ void GcodeSuite::M109() {
139 193
 
140 194
   TERN_(AUTOTEMP, planner.autotemp_M104_M109());
141 195
 
142
-  if (set_temp)
196
+  if (got_temp)
143 197
     (void)thermalManager.wait_for_hotend(target_extruder, no_wait_for_cooling);
144 198
 }
145 199
 

+ 25
- 7
Marlin/src/gcode/temp/M106_M107.cpp Ver arquivo

@@ -28,6 +28,10 @@
28 28
 #include "../../module/motion.h"
29 29
 #include "../../module/temperature.h"
30 30
 
31
+#if PREHEAT_COUNT
32
+  #include "../../lcd/ultralcd.h"
33
+#endif
34
+
31 35
 #if ENABLED(SINGLENOZZLE)
32 36
   #define _ALT_P active_extruder
33 37
   #define _CNT_P EXTRUDERS
@@ -39,6 +43,7 @@
39 43
 /**
40 44
  * M106: Set Fan Speed
41 45
  *
46
+ *  I<index> Material Preset index (if material presets are defined)
42 47
  *  S<int>   Speed between 0-255
43 48
  *  P<index> Fan index, if more than one fan
44 49
  *
@@ -50,19 +55,32 @@
50 55
  *           3-255 = Set the speed for use with T2
51 56
  */
52 57
 void GcodeSuite::M106() {
53
-  const uint8_t p = parser.byteval('P', _ALT_P);
58
+  const uint8_t pfan = parser.byteval('P', _ALT_P);
54 59
 
55
-  if (p < _CNT_P) {
60
+  if (pfan < _CNT_P) {
56 61
 
57 62
     #if ENABLED(EXTRA_FAN_SPEED)
58 63
       const uint16_t t = parser.intval('T');
59
-      if (t > 0) return thermalManager.set_temp_fan_speed(p, t);
64
+      if (t > 0) return thermalManager.set_temp_fan_speed(pfan, t);
65
+    #endif
66
+
67
+    const uint16_t dspeed = parser.seen('A') ? thermalManager.fan_speed[active_extruder] : 255;
68
+
69
+    uint16_t speed = dspeed;
70
+
71
+    // Accept 'I' if temperature presets are defined
72
+    #if PREHEAT_COUNT
73
+      const bool got_preset = parser.seenval('I');
74
+      if (got_preset) speed = ui.material_preset[_MIN(parser.value_byte(), PREHEAT_COUNT - 1)].fan_speed;
75
+    #else
76
+      constexpr bool got_preset = false;
60 77
     #endif
61
-    uint16_t d = parser.seen('A') ? thermalManager.fan_speed[active_extruder] : 255;
62
-    uint16_t s = parser.ushortval('S', d);
63
-    NOMORE(s, 255U);
64 78
 
65
-    thermalManager.set_fan_speed(p, s);
79
+    if (!got_preset && parser.seenval('S'))
80
+      speed = parser.value_ushort();
81
+
82
+    // Set speed, with constraint
83
+    thermalManager.set_fan_speed(pfan, speed);
66 84
   }
67 85
 }
68 86
 

+ 60
- 10
Marlin/src/gcode/temp/M140_M190.cpp Ver arquivo

@@ -47,11 +47,33 @@
47 47
 
48 48
 /**
49 49
  * M140: Set bed temperature
50
+ *
51
+ *  I<index>  : Preset index (if material presets are defined)
52
+ *  S<target> : The target temperature in current units
50 53
  */
51 54
 void GcodeSuite::M140() {
52 55
   if (DEBUGGING(DRYRUN)) return;
53
-  if (parser.seenval('S')) {
54
-    thermalManager.setTargetBed(parser.value_celsius());
56
+
57
+  bool got_temp = false;
58
+  int16_t temp = 0;
59
+
60
+  // Accept 'I' if temperature presets are defined
61
+  #if PREHEAT_COUNT
62
+    got_temp = parser.seenval('I');
63
+    if (got_temp) {
64
+      const uint8_t index = parser.value_byte();
65
+      temp = ui.material_preset[_MIN(index, PREHEAT_COUNT - 1)].bed_temp;
66
+    }
67
+  #endif
68
+
69
+  // If no 'I' get the temperature from 'S'
70
+  if (!got_temp) {
71
+    got_temp = parser.seenval('S');
72
+    if (got_temp) temp = parser.value_celsius();
73
+  }
74
+
75
+  if (got_temp) {
76
+    thermalManager.setTargetBed(temp);
55 77
 
56 78
     #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
57 79
       /**
@@ -65,20 +87,48 @@ void GcodeSuite::M140() {
65 87
 }
66 88
 
67 89
 /**
68
- * M190: Sxxx Wait for bed current temp to reach target temp. Waits only when heating
69
- *       Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
90
+ * M190 - Set Bed Temperature target and wait
91
+ *
92
+ * Parameters:
93
+ *  I<index>  : Preset index (if material presets are defined)
94
+ *  S<target> : The target temperature in current units. Wait for heating only.
95
+ *  R<target> : The target temperature in current units. Wait for heating and cooling.
70 96
  *
71
- * With PRINTJOB_TIMER_AUTOSTART also start the job timer on heating.
97
+ * Examples:
98
+ *  M190 S60 : Set target to 60°. Wait until the bed is at or above 60°.
99
+ *  M190 R40 : Set target to 40°. Wait until the bed gets close to 40°.
100
+ *
101
+ * With PRINTJOB_TIMER_AUTOSTART turning on heaters will start the print job timer
102
+ *  (used by printingIsActive, etc.) and turning off heaters will stop the timer.
72 103
  */
73 104
 void GcodeSuite::M190() {
74 105
   if (DEBUGGING(DRYRUN)) return;
75 106
 
76
-  const bool no_wait_for_cooling = parser.seenval('S');
77
-  if (no_wait_for_cooling || parser.seenval('R')) {
78
-    thermalManager.setTargetBed(parser.value_celsius());
79
-    TERN_(PRINTJOB_TIMER_AUTOSTART, thermalManager.check_timer_autostart(true, false));
107
+  bool got_temp = false;
108
+  int16_t temp = 0;
109
+
110
+  // Accept 'I' if temperature presets are defined
111
+  #if PREHEAT_COUNT
112
+    got_temp = parser.seenval('I');
113
+    if (got_temp) {
114
+      const uint8_t index = parser.value_byte();
115
+      temp = ui.material_preset[_MIN(index, PREHEAT_COUNT - 1)].bed_temp;
116
+    }
117
+  #endif
118
+
119
+  // Get the temperature from 'S' or 'R'
120
+  bool no_wait_for_cooling = false;
121
+  if (!got_temp) {
122
+    no_wait_for_cooling = parser.seenval('S');
123
+    got_temp = no_wait_for_cooling || parser.seenval('R');
124
+    if (got_temp) temp = int16_t(parser.value_celsius());
80 125
   }
81
-  else return;
126
+
127
+  if (!got_temp) return;
128
+
129
+  thermalManager.setTargetBed(temp);
130
+
131
+  TERN_(PRINTJOB_TIMER_AUTOSTART, thermalManager.check_timer_autostart(true, false));
82 132
 
83 133
   ui.set_status_P(thermalManager.isHeatingBed() ? GET_TEXT(MSG_BED_HEATING) : GET_TEXT(MSG_BED_COOLING));
84 134
 

+ 0
- 8
Marlin/src/inc/Conditionals_LCD.h Ver arquivo

@@ -589,14 +589,6 @@
589 589
   #define NUM_SERVOS 0
590 590
 #endif
591 591
 
592
-#ifndef PREHEAT_1_LABEL
593
-  #define PREHEAT_1_LABEL "PLA"
594
-#endif
595
-
596
-#ifndef PREHEAT_2_LABEL
597
-  #define PREHEAT_2_LABEL "ABS"
598
-#endif
599
-
600 592
 /**
601 593
  * Set a flag for a servo probe (or BLTouch)
602 594
  */

+ 11
- 3
Marlin/src/inc/Conditionals_post.h Ver arquivo

@@ -2129,9 +2129,17 @@
2129 2129
 #endif
2130 2130
 
2131 2131
 #if HAS_TEMPERATURE && EITHER(HAS_LCD_MENU, DWIN_CREALITY_LCD)
2132
-  #define PREHEAT_COUNT 2
2133
-#else
2134
-  #undef PREHEAT_COUNT
2132
+  #ifdef PREHEAT_5_LABEL
2133
+    #define PREHEAT_COUNT 5
2134
+  #elif defined(PREHEAT_4_LABEL)
2135
+    #define PREHEAT_COUNT 4
2136
+  #elif defined(PREHEAT_3_LABEL)
2137
+    #define PREHEAT_COUNT 3
2138
+  #elif defined(PREHEAT_2_LABEL)
2139
+    #define PREHEAT_COUNT 2
2140
+  #elif defined(PREHEAT_1_LABEL)
2141
+    #define PREHEAT_COUNT 1
2142
+  #endif
2135 2143
 #endif
2136 2144
 
2137 2145
 /**

+ 7
- 7
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp Ver arquivo

@@ -1004,7 +1004,7 @@ void MarlinUI::draw_status_screen() {
1004 1004
       int8_t pad = (LCD_WIDTH - utf8_strlen_P(pstr)) / 2;
1005 1005
       while (--pad >= 0) { lcd_put_wchar(' '); n--; }
1006 1006
     }
1007
-    n = lcd_put_u8str_ind_P(pstr, itemIndex, n);
1007
+    n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, n);
1008 1008
     if (valstr) n -= lcd_put_u8str_max(valstr, n);
1009 1009
     for (; n > 0; --n) lcd_put_wchar(' ');
1010 1010
   }
@@ -1012,20 +1012,20 @@ void MarlinUI::draw_status_screen() {
1012 1012
   // Draw a generic menu item with pre_char (if selected) and post_char
1013 1013
   void MenuItemBase::_draw(const bool sel, const uint8_t row, PGM_P const pstr, const char pre_char, const char post_char) {
1014 1014
     lcd_put_wchar(0, row, sel ? pre_char : ' ');
1015
-    uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2);
1015
+    uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2);
1016 1016
     for (; n; --n) lcd_put_wchar(' ');
1017 1017
     lcd_put_wchar(post_char);
1018 1018
   }
1019 1019
 
1020 1020
   // Draw a menu item with a (potentially) editable value
1021
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm) {
1022
-    const uint8_t vlen = data ? (pgm ? utf8_strlen_P(data) : utf8_strlen(data)) : 0;
1021
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const inStr, const bool pgm) {
1022
+    const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0;
1023 1023
     lcd_put_wchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
1024
-    uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2 - vlen);
1024
+    uint8_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2 - vlen);
1025 1025
     if (vlen) {
1026 1026
       lcd_put_wchar(':');
1027 1027
       for (; n; --n) lcd_put_wchar(' ');
1028
-      if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str(data);
1028
+      if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str(inStr);
1029 1029
     }
1030 1030
   }
1031 1031
 
@@ -1033,7 +1033,7 @@ void MarlinUI::draw_status_screen() {
1033 1033
   void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char* const value/*=nullptr*/) {
1034 1034
     ui.encoder_direction_normal();
1035 1035
 
1036
-    uint8_t n = lcd_put_u8str_ind_P(0, 1, pstr, itemIndex, LCD_WIDTH - 1);
1036
+    uint8_t n = lcd_put_u8str_ind_P(0, 1, pstr, itemIndex, itemString, LCD_WIDTH - 1);
1037 1037
     if (value != nullptr) {
1038 1038
       lcd_put_wchar(':');
1039 1039
       int len = utf8_strlen(value);

+ 8
- 8
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp Ver arquivo

@@ -359,7 +359,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
359 359
           n -= MENU_FONT_WIDTH;
360 360
         }
361 361
 
362
-      n = lcd_put_u8str_ind_P(pstr, itemIndex, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
362
+      n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
363 363
       if (valstr) n -= lcd_put_u8str_max(valstr, n);
364 364
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
365 365
     }
@@ -368,7 +368,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
368 368
   // Draw a generic menu item
369 369
   void MenuItemBase::_draw(const bool sel, const uint8_t row, PGM_P const pstr, const char, const char post_char) {
370 370
     if (mark_as_selected(row, sel)) {
371
-      pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
371
+      pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
372 372
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
373 373
       lcd_put_wchar(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH), row_y2, post_char);
374 374
       lcd_put_wchar(' ');
@@ -376,17 +376,17 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
376 376
   }
377 377
 
378 378
   // Draw a menu item with an editable value
379
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm) {
379
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const inStr, const bool pgm) {
380 380
     if (mark_as_selected(row, sel)) {
381
-      const uint8_t vallen = (pgm ? utf8_strlen_P(data) : utf8_strlen((char*)data)),
382
-                    pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), data) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)data));
381
+      const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen((char*)inStr)),
382
+                    pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), inStr) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)inStr));
383 383
 
384
-      pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2 - vallen) * (MENU_FONT_WIDTH);
384
+      pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2 - vallen) * (MENU_FONT_WIDTH);
385 385
       if (vallen) {
386 386
         lcd_put_wchar(':');
387 387
         while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
388 388
         lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
389
-        if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str((char*)data);
389
+        if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str((char*)inStr);
390 390
       }
391 391
     }
392 392
   }
@@ -423,7 +423,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
423 423
 
424 424
     // Assume the label is alpha-numeric (with a descender)
425 425
     bool onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline + EDIT_FONT_DESCENT);
426
-    if (onpage) lcd_put_u8str_ind_P(0, baseline, pstr, itemIndex);
426
+    if (onpage) lcd_put_u8str_ind_P(0, baseline, pstr, itemIndex, itemString);
427 427
 
428 428
     // If a value is included, print a colon, then print the value right-justified
429 429
     if (value != nullptr) {

+ 0
- 36
Marlin/src/lcd/dogm/ultralcd_DOGM.h Ver arquivo

@@ -230,42 +230,6 @@
230 230
 #define PAGE_UNDER(yb)        ((yb) >= u8g.getU8g()->current_page.y0) // Does the current page precede a region bottom?
231 231
 #define PAGE_CONTAINS(ya, yb) ((yb) >= u8g.getU8g()->current_page.y0 && (ya) <= u8g.getU8g()->current_page.y1) // Do two vertical regions overlap?
232 232
 
233
-// Only Western languages support big / small fonts
234
-#if DISABLED(DISPLAY_CHARSET_ISO10646_1)
235
-  #undef USE_BIG_EDIT_FONT
236
-  #undef USE_SMALL_INFOFONT
237
-#endif
238
-
239
-#define MENU_FONT_NAME    ISO10646_1_5x7
240
-#define MENU_FONT_WIDTH    6
241
-#define MENU_FONT_ASCENT  10
242
-#define MENU_FONT_DESCENT  2
243
-#define MENU_FONT_HEIGHT  (MENU_FONT_ASCENT + MENU_FONT_DESCENT)
244
-
245
-#if ENABLED(USE_BIG_EDIT_FONT)
246
-  #define EDIT_FONT_NAME    u8g_font_9x18
247
-  #define EDIT_FONT_WIDTH    9
248
-  #define EDIT_FONT_ASCENT  10
249
-  #define EDIT_FONT_DESCENT  3
250
-#else
251
-  #define EDIT_FONT_NAME    MENU_FONT_NAME
252
-  #define EDIT_FONT_WIDTH   MENU_FONT_WIDTH
253
-  #define EDIT_FONT_ASCENT  MENU_FONT_ASCENT
254
-  #define EDIT_FONT_DESCENT MENU_FONT_DESCENT
255
-#endif
256
-#define EDIT_FONT_HEIGHT (EDIT_FONT_ASCENT + EDIT_FONT_DESCENT)
257
-
258
-// Get the Ascent, Descent, and total Height for the Info Screen font
259
-#if ENABLED(USE_SMALL_INFOFONT)
260
-  extern const u8g_fntpgm_uint8_t u8g_font_6x9[];
261
-  #define INFO_FONT_ASCENT 7
262
-#else
263
-  #define INFO_FONT_ASCENT 8
264
-#endif
265
-#define INFO_FONT_DESCENT 2
266
-#define INFO_FONT_HEIGHT (INFO_FONT_ASCENT + INFO_FONT_DESCENT)
267
-#define INFO_FONT_WIDTH   6
268
-
269 233
 #ifndef FSMC_UPSCALE
270 234
   #define FSMC_UPSCALE 2
271 235
 #endif

+ 17
- 14
Marlin/src/lcd/language/language_an.h Ver arquivo

@@ -56,20 +56,23 @@ namespace Language_an {
56 56
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Achustar desfases");
57 57
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Desfase aplicau");
58 58
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Establir orichen");
59
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Precalentar ") PREHEAT_1_LABEL;
60
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~";
61
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
64
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
65
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
66
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Precalentar ") PREHEAT_2_LABEL;
67
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Precalentar ") PREHEAT_2_LABEL " ~";
68
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ~");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Tot");
71
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Base");
72
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Conf");
59
+  #if PREHEAT_COUNT
60
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Precalentar ") PREHEAT_1_LABEL;
61
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~";
62
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
65
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
66
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
67
+
68
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Precalentar $");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Precalentar $ ~");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Precal. $ Boquilla");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Precal. $ Boquilla ~");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Precalentar $ Tot");
73
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Precalentar $ Base");
74
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Precalentar $ Conf");
75
+  #endif
73 76
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Enfriar");
74 77
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Enchegar Fuent");
75 78
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Amortar Fuent");

+ 17
- 14
Marlin/src/lcd/language/language_bg.h Ver arquivo

@@ -46,20 +46,23 @@ namespace Language_bg {
46 46
   PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Паркиране");
47 47
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Задай Начало");
48 48
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Изходна точка");
49
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Подгряване ") PREHEAT_1_LABEL;
50
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~";
51
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
52
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~");
53
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички");
54
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло");
55
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Настройки ") PREHEAT_2_LABEL;
56
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Подгряване ") PREHEAT_2_LABEL;
57
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Подгряване ") PREHEAT_2_LABEL " ~";
58
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза");
59
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ~");
60
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Всички");
61
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Легло");
62
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Настройки ") PREHEAT_2_LABEL;
49
+  #if PREHEAT_COUNT
50
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Подгряване ") PREHEAT_1_LABEL;
51
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~";
52
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
53
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~");
54
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички");
55
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло");
56
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Настройки ") PREHEAT_1_LABEL;
57
+
58
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Подгряване $");
59
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Подгряване $ ~");
60
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Подгряване $ Дюза");
61
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Подгряване $ Дюза ~");
62
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Подгр. $ Всички");
63
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Подгр. $ Легло");
64
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Настройки $");
65
+  #endif
63 66
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Охлаждане");
64 67
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Вкл. захранване");
65 68
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Изкл. захранване");

+ 17
- 14
Marlin/src/lcd/language/language_ca.h Ver arquivo

@@ -54,20 +54,23 @@ namespace Language_ca {
54 54
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ajusta decalatge");
55 55
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Decalatge aplicat");
56 56
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Estableix origen");
57
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Preescalfa ") PREHEAT_1_LABEL;
58
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~";
59
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End");
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf.");
64
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Preescalfa ") PREHEAT_2_LABEL;
65
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Preescalfa ") PREHEAT_2_LABEL " ~";
66
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preescalfa ") PREHEAT_2_LABEL _UxGT(" End");
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Preescalfa ") PREHEAT_2_LABEL _UxGT(" End ~");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preescalfa ") PREHEAT_2_LABEL _UxGT(" Tot");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preescalfa ") PREHEAT_2_LABEL _UxGT(" Llit");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preescalfa ") PREHEAT_2_LABEL _UxGT(" Conf.");
57
+  #if PREHEAT_COUNT
58
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Preescalfa ") PREHEAT_1_LABEL;
59
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~";
60
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End");
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf.");
65
+
66
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Preescalfa $");
67
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Preescalfa $ ~");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Preescalfa $ End");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Preescalfa $ End ~");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Preescalfa $ Tot");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Preescalfa $ Llit");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Preescalfa $ Conf.");
73
+  #endif
71 74
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Refreda");
72 75
 
73 76
   PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrudeix");

+ 21
- 18
Marlin/src/lcd/language/language_cz.h Ver arquivo

@@ -79,20 +79,23 @@ namespace Language_cz {
79 79
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Nastavit ofsety");
80 80
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Ofsety nastaveny");
81 81
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Nastavit počátek");
82
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Zahřát ") PREHEAT_1_LABEL;
83
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~";
84
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end");
85
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~");
86
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše");
87
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož");
88
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast");
89
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Zahřát ") PREHEAT_2_LABEL;
90
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Zahřát ") PREHEAT_2_LABEL " ~";
91
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end");
92
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ~");
93
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" vše");
94
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" podlož");
95
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" nast");
82
+  #if PREHEAT_COUNT
83
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Zahřát ") PREHEAT_1_LABEL;
84
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~";
85
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end");
86
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~");
87
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše");
88
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož");
89
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast");
90
+
91
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Zahřát $");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Zahřát $ ~");
93
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Zahřát $ end");
94
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Zahřát $ end ~");
95
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Zahřát $ vše");
96
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Zahřát $ podlož");
97
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Zahřát $ nast");
98
+  #endif
96 99
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Zahřát vlastní");
97 100
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Zchladit");
98 101
   PROGMEM Language_Str MSG_LASER_MENU                      = _UxGT("Ovládání laseru");
@@ -156,14 +159,14 @@ namespace Language_cz {
156 159
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Konec úprav sítě");
157 160
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Vlastní síť");
158 161
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Vytvořit síť");
159
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Síť bodů ") PREHEAT_1_LABEL;
160
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Síť bodů ") PREHEAT_2_LABEL;
162
+  #if PREHEAT_COUNT
163
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Síť bodů $");
164
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Kontrola sítě $");
165
+  #endif
161 166
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Studená síť bodů");
162 167
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Upravit výšku sítě");
163 168
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Výška");
164 169
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Zkontrolovat síť");
165
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Kontrola sítě ") PREHEAT_1_LABEL;
166
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Kontrola sítě ") PREHEAT_2_LABEL;
167 170
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Kontrola vlast. sítě");
168 171
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 zahřívání podl.");
169 172
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 zařívání trysky");

+ 17
- 14
Marlin/src/lcd/language/language_da.h Ver arquivo

@@ -49,20 +49,23 @@ namespace Language_da {
49 49
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Sæt forsk. af home");
50 50
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Forsk. er nu aktiv");
51 51
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Sæt origin");
52
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Forvarm ") PREHEAT_1_LABEL;
53
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~";
54
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end")
55
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~");
56
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
57
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
58
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
59
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Forvarm ") PREHEAT_2_LABEL;
60
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Forvarm ") PREHEAT_2_LABEL " ~";
61
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end")
62
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ~");
63
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Alle");
64
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Bed");
65
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" conf");
52
+  #if PREHEAT_COUNT
53
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Forvarm ") PREHEAT_1_LABEL;
54
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~";
55
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end")
56
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~");
57
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
58
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
59
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
60
+
61
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Forvarm $");
62
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Forvarm $ ~");
63
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Forvarm $ end")
64
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Forvarm $ end ~");
65
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Forvarm $ Alle");
66
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Forvarm $ Bed");
67
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Forvarm $ conf");
68
+  #endif
66 69
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Afkøl");
67 70
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Slå strøm til");
68 71
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Slå strøm fra");

+ 21
- 18
Marlin/src/lcd/language/language_de.h Ver arquivo

@@ -64,20 +64,23 @@ namespace Language_de {
64 64
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Setze Homeversatz");
65 65
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Homeversatz aktiv");
66 66
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Setze Nullpunkte"); //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
67
-  PROGMEM Language_Str MSG_PREHEAT_1                       = PREHEAT_1_LABEL _UxGT(" Vorwärmen");
68
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " ~";
69
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen");
70
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~");
71
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen");
72
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen");
73
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = PREHEAT_1_LABEL _UxGT(" Einstellungen");
74
-  PROGMEM Language_Str MSG_PREHEAT_2                       = PREHEAT_2_LABEL _UxGT(" Vorwärmen");
75
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " ~";
76
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärmen");
77
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ~");
78
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = PREHEAT_2_LABEL _UxGT(" Alles Vorwärmen");
79
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = PREHEAT_2_LABEL _UxGT(" Bett Vorwärmen");
80
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = PREHEAT_2_LABEL _UxGT(" Einstellungen");
67
+  #if PREHEAT_COUNT
68
+    PROGMEM Language_Str MSG_PREHEAT_1                     = PREHEAT_1_LABEL _UxGT(" Vorwärmen");
69
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~");
70
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen");
71
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~");
72
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen");
73
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen");
74
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = PREHEAT_1_LABEL _UxGT(" Einstellungen");
75
+
76
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("$ Vorwärmen");
77
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("$ Vorwärmen") " ~";
78
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("$ Extr. Vorwärmen");
79
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("$ Extr. Vorwärm. ~");
80
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("$ Alles Vorwärmen");
81
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("$ Bett Vorwärmen");
82
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("$ Einstellungen");
83
+  #endif
81 84
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("benutzerdef. Heizen");
82 85
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Abkühlen");
83 86
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frequenz");
@@ -140,14 +143,14 @@ namespace Language_de {
140 143
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Bearbeitung beendet");
141 144
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Eigenes Netz erst.");
142 145
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Netz erstellen");
143
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = PREHEAT_1_LABEL _UxGT(" Netz erstellen");
144
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = PREHEAT_2_LABEL _UxGT(" Netz erstellen");
146
+  #if PREHEAT_COUNT
147
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("$ Netz erstellen");
148
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("$ Netz validieren");
149
+  #endif
145 150
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Netz erstellen kalt");
146 151
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Netzhöhe einst.");
147 152
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Höhe");
148 153
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Netz validieren");
149
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = PREHEAT_1_LABEL _UxGT(" Netz validieren");
150
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = PREHEAT_2_LABEL _UxGT(" Netz validieren");
151 154
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Eig. Netz validieren");
152 155
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 heizt Bett");
153 156
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Düse aufheizen");

+ 17
- 14
Marlin/src/lcd/language/language_el.h Ver arquivo

@@ -54,20 +54,23 @@ namespace Language_el {
54 54
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ορισμός βασικών μετατοπίσεων"); //SHORTEN
55 55
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); //SHORTEN
56 56
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ορισμός προέλευσης");
57
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
58
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
59
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); //SHORTEN
63
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
64
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
65
-  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " ~";
66
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ~");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" bed"); //SHORTEN
70
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
57
+  #if PREHEAT_COUNT
58
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
59
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
60
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); //SHORTEN
64
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
65
+
66
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Προθέρμανση $");
67
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Προθέρμανση $ ~");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Προθέρμανση $ End");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Προθέρμανση $ End ~");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Προθέρμανση $ όλα");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Προθέρμανση $ bed"); //SHORTEN
72
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Προθέρμανση $ επιβεβαίωση"); //SHORTEN
73
+  #endif
71 74
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Μειωση θερμοκρασιας");
72 75
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ενεργοποίηση");
73 76
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Απενεργοποίηση");

+ 17
- 14
Marlin/src/lcd/language/language_el_gr.h Ver arquivo

@@ -55,20 +55,23 @@ namespace Language_el_gr {
55 55
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ορισμός βασικών μετατοπίσεων");
56 56
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις");
57 57
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ορισμός προέλευσης");
58
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
59
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
64
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
65
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
66
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " ~";
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ~");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" κλίνη");
71
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση");
58
+  #if PREHEAT_COUNT
59
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
60
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~";
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
65
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
66
+
67
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Προθέρμανση $");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Προθέρμανση $ ~");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Προθέρμανση $ End");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Προθέρμανση $ End ~");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Προθέρμανση $ όλα");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Προθέρμανση $ κλίνη");
73
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Προθέρμανση $ επιβεβαίωση");
74
+  #endif
72 75
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Μειωση θερμοκρασιας");
73 76
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ενεργοποίηση");
74 77
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Απενεργοποίηση");

+ 19
- 18
Marlin/src/lcd/language/language_en.h Ver arquivo

@@ -74,20 +74,23 @@ namespace Language_en {
74 74
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Set Home Offsets");
75 75
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets Applied");
76 76
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Set Origin");
77
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Preheat ") PREHEAT_1_LABEL;
78
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
79
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
80
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All");
82
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed");
83
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf");
84
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Preheat ") PREHEAT_2_LABEL;
85
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Preheat ") PREHEAT_2_LABEL " ~";
86
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End");
87
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ~");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" All");
89
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Bed");
90
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf");
77
+  #if PREHEAT_COUNT
78
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Preheat ") PREHEAT_1_LABEL;
79
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
80
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
81
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All");
83
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed");
84
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf");
85
+
86
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Preheat $");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Preheat $ ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Preheat $ End");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Preheat $ End ~");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Preheat $ All");
91
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Preheat $ Bed");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Preheat $ Conf");
93
+  #endif
91 94
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Preheat Custom");
92 95
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Cooldown");
93 96
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frequency");
@@ -150,14 +153,12 @@ namespace Language_en {
150 153
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Done Editing Mesh");
151 154
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Build Custom Mesh");
152 155
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Build Mesh");
153
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Build Mesh (") PREHEAT_1_LABEL _UxGT(")");
154
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Build Mesh (") PREHEAT_2_LABEL _UxGT(")");
156
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M                = _UxGT("Build Mesh ($)");
155 157
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Build Cold Mesh");
156 158
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Adjust Mesh Height");
157 159
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Height Amount");
158 160
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Validate Mesh");
159
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Validate Mesh (") PREHEAT_1_LABEL _UxGT(")");
160
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Validate Mesh (") PREHEAT_2_LABEL _UxGT(")");
161
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M             = _UxGT("Validate Mesh ($)");
161 162
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Validate Custom Mesh");
162 163
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Heating Bed");
163 164
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Heating Nozzle");

+ 21
- 18
Marlin/src/lcd/language/language_es.h Ver arquivo

@@ -69,20 +69,23 @@ namespace Language_es {
69 69
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ajustar desfases");
70 70
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Desfase aplicada");
71 71
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Establecer origen");
72
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Precal. ") PREHEAT_1_LABEL;
73
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Precal. ") PREHEAT_1_LABEL " ~";
74
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor");
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~");
76
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo");
77
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste");
79
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Precal. ") PREHEAT_2_LABEL;
80
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Precal. ") PREHEAT_2_LABEL " ~";
81
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Fusor");
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Fusor ~");
83
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Todo");
84
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Cama");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Ajuste");
72
+  #if PREHEAT_COUNT
73
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Precal. $");
74
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Precal. $ ~");
75
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Precal. $ Fusor");
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Precal. $ Fusor ~");
77
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Precal. $ Todo");
78
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Precal. $ Cama");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Precal. $ Ajuste");
80
+
81
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Precal. ") PREHEAT_1_LABEL;
82
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Precal. ") PREHEAT_1_LABEL " ~";
83
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor");
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste");
88
+  #endif
86 89
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Precal. manual");
87 90
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Enfriar");
88 91
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frecuencia");
@@ -145,14 +148,14 @@ namespace Language_es {
145 148
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Term. edici. Mallado");
146 149
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Crear Mallado Pers.");
147 150
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Crear Mallado");
148
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Crear Mallado (") PREHEAT_1_LABEL _UxGT(")");
149
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Crear Mallado (") PREHEAT_2_LABEL _UxGT(")");
151
+  #if PREHEAT_COUNT
152
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Crear Mallado ($)");
153
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Valid. Mall. ($)");
154
+  #endif
150 155
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Crear Mallado Frío");
151 156
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Ajustar alt. Mallado");
152 157
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Cantidad de altura");
153 158
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Valid. Mallado");
154
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Valid. Mall. (") PREHEAT_1_LABEL _UxGT(")");
155
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Valid. Mall. (") PREHEAT_2_LABEL _UxGT(")");
156 159
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Valid. Mall. perso.");
157 160
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Calentando Cama");
158 161
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Calent. Boquilla");

+ 21
- 18
Marlin/src/lcd/language/language_eu.h Ver arquivo

@@ -58,20 +58,23 @@ namespace Language_eu {
58 58
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Etxe. offset eza.");
59 59
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsetak ezarrita");
60 60
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Hasiera ipini");
61
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Berotu ") PREHEAT_1_LABEL;
62
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Berotu ") PREHEAT_1_LABEL " ~";
63
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
64
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~");
65
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
66
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
67
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
68
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Berotu ") PREHEAT_2_LABEL;
69
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Berotu ") PREHEAT_2_LABEL " ~";
70
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia");
71
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ~");
72
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Guztia");
73
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ohea");
74
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ezarp.");
61
+  #if PREHEAT_COUNT
62
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Berotu ") PREHEAT_1_LABEL;
63
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Berotu ") PREHEAT_1_LABEL " ~";
64
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
65
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~");
66
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
67
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
68
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
69
+
70
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Berotu $");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Berotu $ ~");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Berotu $ Amaia");
73
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Berotu $ Amaia ~");
74
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Berotu $ Guztia");
75
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Berotu $ Ohea");
76
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Berotu $ Ezarp.");
77
+  #endif
75 78
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Hoztu");
76 79
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Energia piztu");
77 80
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Energia itzali");
@@ -98,13 +101,13 @@ namespace Language_eu {
98 101
   PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Sarea editatu");
99 102
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Sarea editatzea eginda");
100 103
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Sarea sortu");
101
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = PREHEAT_1_LABEL _UxGT(" sarea sortu");
102
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = PREHEAT_2_LABEL _UxGT(" sarea sortu");
104
+  #if PREHEAT_COUNT
105
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("$ sarea sortu");
106
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("$ sarea balioetsi");
107
+  #endif
103 108
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Sare hotza sortu");
104 109
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Sarearen altuera doitu");
105 110
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Sarea balioetsi");
106
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = PREHEAT_1_LABEL _UxGT(" sarea balioetsi");
107
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = PREHEAT_2_LABEL _UxGT(" sarea balioetsi");
108 111
   PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Ohe sarea balioetsi");
109 112
   PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Sare berdinketa");
110 113
   PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("3 puntuko berdinketa");

+ 17
- 14
Marlin/src/lcd/language/language_fi.h Ver arquivo

@@ -45,20 +45,23 @@ namespace Language_fi {
45 45
   PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Vapauta moottorit");
46 46
   PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Aja referenssiin");
47 47
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Aseta origo");
48
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Esilämmitä ") PREHEAT_1_LABEL;
49
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~";
50
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
51
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~");
52
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
53
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
54
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
55
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Esilämmitä ") PREHEAT_2_LABEL;
56
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " ~";
57
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin");
58
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ~");
59
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Kaikki");
60
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Alusta");
61
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Esilämm. ") PREHEAT_2_LABEL _UxGT(" konf");
48
+  #if PREHEAT_COUNT
49
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Esilämmitä ") PREHEAT_1_LABEL;
50
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~";
51
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
52
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~");
53
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
54
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
55
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
56
+
57
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Esilämmitä $");
58
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Esilämmitä $ ~");
59
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Esilä. $Suutin");
60
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Esilä. $Suutin ~");
61
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Esilä. $ Kaikki");
62
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Esilä. $ Alusta");
63
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Esilämm. $ konf");
64
+  #endif
62 65
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Jäähdytä");
63 66
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Virta päälle");
64 67
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Virta pois");

+ 21
- 18
Marlin/src/lcd/language/language_fr.h Ver arquivo

@@ -70,20 +70,23 @@ namespace Language_fr {
70 70
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Régl. décal origine");
71 71
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Décalages appliqués");
72 72
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Régler origine");
73
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Préchauffage ") PREHEAT_1_LABEL;
74
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~";
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse");
76
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~");
77
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit");
79
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Régler préch. ") PREHEAT_1_LABEL;
80
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Préchauffage ") PREHEAT_2_LABEL;
81
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Préchauffage ") PREHEAT_2_LABEL " ~";
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse");
83
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ~");
84
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" Tout");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" lit");
86
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Régler préch. ") PREHEAT_2_LABEL;
73
+  #if PREHEAT_COUNT
74
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Préchauffage ") PREHEAT_1_LABEL;
75
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~";
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse");
77
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~");
78
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit");
80
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Régler préch. ") PREHEAT_1_LABEL;
81
+
82
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Préchauffage $");
83
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Préchauffage $ ~");
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Préch. $ buse");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Préch. $ buse ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Préch. $ Tout");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Préch. $ lit");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Régler préch. $");
89
+  #endif
87 90
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Préchauf. perso");
88 91
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Refroidir");
89 92
   PROGMEM Language_Str MSG_LASER_MENU                      = _UxGT("Contrôle Laser");
@@ -146,15 +149,15 @@ namespace Language_fr {
146 149
   PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("Réglage fin");
147 150
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Terminer");
148 151
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Créer la grille");
149
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Créer grille ") PREHEAT_1_LABEL;
150
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Créer grille ") PREHEAT_2_LABEL;
152
+  #if PREHEAT_COUNT
153
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Créer grille $");
154
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Impr. grille $");
155
+  #endif
151 156
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Créer grille ...");
152 157
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Mesure à froid");
153 158
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Ajuster haut. couche");
154 159
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Hauteur (x0.1mm)");
155 160
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Vérifier grille");
156
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Impr. grille ") PREHEAT_1_LABEL;
157
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Impr. grille ") PREHEAT_2_LABEL;
158 161
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Impr. grille ...");
159 162
   PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Continuer grille");
160 163
   PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Niveau par mailles");

+ 21
- 18
Marlin/src/lcd/language/language_gl.h Ver arquivo

@@ -72,20 +72,23 @@ namespace Language_gl {
72 72
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Axustar Desfases");
73 73
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Desfases aplicados");
74 74
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Fixar orixe");
75
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Prequentar ") PREHEAT_1_LABEL;
76
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~";
77
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~");
79
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
80
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
82
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Prequentar ") PREHEAT_2_LABEL;
83
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Prequentar ") PREHEAT_2_LABEL " ~";
84
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ~");
86
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Todo");
87
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Cama");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" conf");
75
+  #if PREHEAT_COUNT
76
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Prequentar ") PREHEAT_1_LABEL;
77
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~";
78
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~");
80
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
81
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
83
+
84
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Prequentar $");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Prequentar $ ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Preque. $ Bico");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Preque. $ Bico ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Preque. $ Todo");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Preque. $ Cama");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Preque. $ conf");
91
+  #endif
89 92
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Preque. Personali.");
90 93
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Arrefriar");
91 94
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frecuencia");
@@ -148,14 +151,14 @@ namespace Language_gl {
148 151
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Fin Edición da Malla");
149 152
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Crear Malla Person.");
150 153
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Crear Malla");
151
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Crear Malla (") PREHEAT_1_LABEL _UxGT(")");
152
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Crear Malla (") PREHEAT_2_LABEL _UxGT(")");
154
+  #if PREHEAT_COUNT
155
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Crear Malla ($)");
156
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Validar Malla ($)");
157
+  #endif
153 158
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Crear Malla Fría");
154 159
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Axustar Altura Malla");
155 160
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Altura");
156 161
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Validar Malla");
157
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Validar Malla (") PREHEAT_1_LABEL _UxGT(")");
158
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Validar Malla (") PREHEAT_2_LABEL _UxGT(")");
159 162
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Validar Malla perso.");
160 163
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Quentando Cama");
161 164
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Quentando Bico");

+ 17
- 14
Marlin/src/lcd/language/language_hr.h Ver arquivo

@@ -55,20 +55,23 @@ namespace Language_hr {
55 55
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Postavi home offsete");
56 56
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets postavljeni");
57 57
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Postavi ishodište");
58
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Predgrij ") PREHEAT_1_LABEL;
59
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~";
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
64
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
65
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Predgrij ") PREHEAT_2_LABEL;
66
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Predgrij ") PREHEAT_2_LABEL " ~";
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ~");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Sve");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Bed");
71
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" conf");
58
+  #if PREHEAT_COUNT
59
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Predgrij ") PREHEAT_1_LABEL;
60
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~";
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
65
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
66
+
67
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Predgrij $");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Predgrij $ ~");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Predgrij $ Dizna");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Predgrij $ Dizna ~");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Predgrij $ Sve");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Predgrij $ Bed");
73
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Predgrij $ conf");
74
+  #endif
72 75
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Hlađenje");
73 76
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Uključi napajanje");
74 77
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Isključi napajanje");

+ 21
- 18
Marlin/src/lcd/language/language_hu.h Ver arquivo

@@ -74,20 +74,23 @@ namespace Language_hu {
74 74
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Kezdöpont eltolás");
75 75
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Eltolás beállítva.");
76 76
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Eredeti Be");
77
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Fütés ") PREHEAT_1_LABEL;
78
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Fütés ") PREHEAT_1_LABEL " ~";
79
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej");
80
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind");
82
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy");
83
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll");
84
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Fütés ") PREHEAT_2_LABEL;
85
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Fütés ") PREHEAT_2_LABEL " ~";
86
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Fütés ") PREHEAT_2_LABEL _UxGT(" Fej");
87
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Fütés ") PREHEAT_2_LABEL _UxGT(" Fej ~");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Fütés ") PREHEAT_2_LABEL _UxGT(" Mind");
89
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Fütés ") PREHEAT_2_LABEL _UxGT(" Ágy");
90
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Fütés ") PREHEAT_2_LABEL _UxGT(" Beáll");
77
+  #if PREHEAT_COUNT
78
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Fütés ") PREHEAT_1_LABEL;
79
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Fütés ") PREHEAT_1_LABEL " ~";
80
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej");
81
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind");
83
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy");
84
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll");
85
+
86
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Fütés $");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Fütés $ ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Fütés $ Fej");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Fütés $ Fej ~");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Fütés $ Mind");
91
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Fütés $ Ágy");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Fütés $ Beáll");
93
+  #endif
91 94
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Egyedi Elömelegítés");
92 95
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Visszahütés");
93 96
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frekvencia");
@@ -150,14 +153,14 @@ namespace Language_hu {
150 153
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Háló Kész");
151 154
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Egyéni Háló Építés");
152 155
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Háló Építés");
153
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Háló Építés (") PREHEAT_1_LABEL _UxGT(")");
154
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Háló Építés (") PREHEAT_2_LABEL _UxGT(")");
156
+  #if PREHEAT_COUNT
157
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Háló Építés ($)");
158
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Háló Elfogadás ($)");
159
+  #endif
155 160
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Hideg Háló Építés");
156 161
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("AHáló Magasság Állítása");
157 162
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Összmagasság");
158 163
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Háló Elfogadás");
159
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Háló Elfogadás (") PREHEAT_1_LABEL _UxGT(")");
160
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Háló Elfogadás (") PREHEAT_2_LABEL _UxGT(")");
161 164
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Valódi Háló Elfogadása");
162 165
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Ágy Fűtés");
163 166
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Fúvóka Fűtés");

+ 21
- 18
Marlin/src/lcd/language/language_it.h Ver arquivo

@@ -72,20 +72,23 @@ namespace Language_it {
72 72
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Imp. offset home");
73 73
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offset applicato");
74 74
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Imposta Origine");
75
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Preriscalda ") PREHEAT_1_LABEL;
76
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~";
77
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~");
79
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto");
80
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf");
82
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Preriscalda ") PREHEAT_2_LABEL;
83
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Preriscalda ") PREHEAT_2_LABEL " ~";
84
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ~");
86
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Tutto");
87
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Piatto");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" conf");
75
+  #if PREHEAT_COUNT
76
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Preriscalda ") PREHEAT_1_LABEL;
77
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~";
78
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ~");
80
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto");
81
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf");
83
+
84
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Preriscalda $");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Preriscalda $ ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Preris.$ Ugello");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Preris.$ Ugello ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Preris.$ Tutto");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Preris.$ Piatto");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Preris.$ conf");
91
+  #endif
89 92
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Prerisc.personal.");
90 93
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Raffredda");
91 94
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frequenza");
@@ -148,14 +151,14 @@ namespace Language_it {
148 151
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Modif.Mesh fatta");
149 152
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Crea Mesh personal.");
150 153
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Crea Mesh");
151
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Crea Mesh ") PREHEAT_1_LABEL;
152
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Crea Mesh ") PREHEAT_2_LABEL;
154
+  #if PREHEAT_COUNT
155
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Crea Mesh ($)");
156
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Valida Mesh ($)");
157
+  #endif
153 158
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Crea Mesh a freddo");
154 159
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Aggiusta Alt. Mesh");
155 160
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Altezza");
156 161
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Valida Mesh");
157
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Valida Mesh ") PREHEAT_1_LABEL;
158
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Valida Mesh ") PREHEAT_2_LABEL;
159 162
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 riscald.letto");
160 163
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 riscald.ugello");
161 164
   PROGMEM Language_Str MSG_G26_MANUAL_PRIME                = _UxGT("Priming manuale...");

+ 17
- 14
Marlin/src/lcd/language/language_jp_kana.h Ver arquivo

@@ -63,20 +63,23 @@ namespace Language_jp_kana {
63 63
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("キジュンオフセットセッテイ");         // "Set home offsets"
64 64
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("オフセットガテキヨウサレマシタ");       // "Offsets applied"
65 65
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("キジュンセット");                 // "Set origin"
66
-  PROGMEM Language_Str MSG_PREHEAT_1                       = PREHEAT_1_LABEL _UxGT(" ヨネツ");       // "Preheat " PREHEAT_1_LABEL
67
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = PREHEAT_1_LABEL _UxGT(" ヨネツ ~");       // "Preheat " PREHEAT_1_LABEL
68
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = PREHEAT_1_LABEL _UxGT(" ヨネツノズル");  // " Nozzle"
69
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~");  // " Nozzle"
70
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = PREHEAT_1_LABEL _UxGT(" スベテヨネツ");  // " All"
71
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ");  // " Bed"
72
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ");  // " conf"
73
-  PROGMEM Language_Str MSG_PREHEAT_2                       = PREHEAT_2_LABEL _UxGT(" ヨネツ");       // "Preheat " PREHEAT_1_LABEL
74
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = PREHEAT_2_LABEL _UxGT(" ヨネツ ~");       // "Preheat " PREHEAT_1_LABEL
75
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = PREHEAT_2_LABEL _UxGT(" ヨネツノズル");  // " Nozzle"
76
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ~");  // " Nozzle"
77
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = PREHEAT_2_LABEL _UxGT(" スベテヨネツ");  // " All"
78
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = PREHEAT_2_LABEL _UxGT(" ベッドヨネツ");  // " Bed"
79
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = PREHEAT_2_LABEL _UxGT(" ヨネツセッテイ");  // " conf"
66
+  #if PREHEAT_COUNT
67
+    PROGMEM Language_Str MSG_PREHEAT_1                     = PREHEAT_1_LABEL _UxGT(" ヨネツ");       // "Preheat " PREHEAT_1_LABEL
68
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = PREHEAT_1_LABEL _UxGT(" ヨネツ ~");       // "Preheat " PREHEAT_1_LABEL
69
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル");  // " Nozzle"
70
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~");  // " Nozzle"
71
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = PREHEAT_1_LABEL _UxGT(" スベテヨネツ");  // " All"
72
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ");  // " Bed"
73
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ");  // " conf"
74
+
75
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("$ ヨネツ");       // "Preheat " PREHEAT_1_LABEL
76
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("$ ヨネツ ~");       // "Preheat " PREHEAT_1_LABEL
77
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("$ ヨネツノズル");  // " Nozzle"
78
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("$ ヨネツノズル ~");  // " Nozzle"
79
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("$ スベテヨネツ");  // " All"
80
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("$ ベッドヨネツ");  // " Bed"
81
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("$ ヨネツセッテイ");  // " conf"
82
+  #endif
80 83
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("カネツテイシ");                  // "Cooldown"
81 84
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("デンゲン オン");                 // "Switch power on"
82 85
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("デンゲン オフ");                 // "Switch power off"

+ 11
- 8
Marlin/src/lcd/language/language_ko_KR.h Ver arquivo

@@ -55,14 +55,17 @@ namespace Language_ko_KR {
55 55
   PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("누르면 시작합니다");
56 56
   PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("다음 Point");
57 57
   PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("레벨링 완료!");
58
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("예열하기 - ") PREHEAT_1_LABEL;
59
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~";
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~");
62
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("예열하기 - ") PREHEAT_2_LABEL;
63
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("예열하기 - ") PREHEAT_2_LABEL " ~";
64
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐");
65
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ~");
58
+  #if PREHEAT_COUNT
59
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("예열하기 - ") PREHEAT_1_LABEL;
60
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~";
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~");
63
+
64
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("예열하기 - $");
65
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("예열하기 - $ ~");
66
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("예열하기 - $ 노즐");
67
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("예열하기 - $ 노즐 ~");
68
+  #endif
66 69
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Custom 예열");
67 70
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("식히기");
68 71
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("스위치 전원 켜기");

+ 17
- 14
Marlin/src/lcd/language/language_nl.h Ver arquivo

@@ -55,20 +55,23 @@ namespace Language_nl {
55 55
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Zet home offsets");
56 56
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("H offset toegep.");
57 57
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Nulpunt instellen");
58
-  PROGMEM Language_Str MSG_PREHEAT_1                       = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
59
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = PREHEAT_1_LABEL _UxGT(" voorverw. ~");
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
64
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = PREHEAT_1_LABEL _UxGT(" verw. conf");
65
-  PROGMEM Language_Str MSG_PREHEAT_2                       = PREHEAT_2_LABEL _UxGT(" voorverwarmen");
66
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = PREHEAT_2_LABEL _UxGT(" voorverw. ~");
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = PREHEAT_2_LABEL _UxGT(" voorverw. Einde");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ~");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = PREHEAT_2_LABEL _UxGT(" voorverw. aan");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = PREHEAT_2_LABEL _UxGT(" voorverw. Bed");
71
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = PREHEAT_2_LABEL _UxGT(" verw. conf");
58
+  #if PREHEAT_COUNT
59
+    PROGMEM Language_Str MSG_PREHEAT_1                     = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
60
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = PREHEAT_1_LABEL _UxGT(" voorverw. ~");
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
65
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = PREHEAT_1_LABEL _UxGT(" verw. conf");
66
+
67
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("$ voorverwarmen");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("$ voorverw. ~");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("$ voorverw. Einde");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("$ voorverw. Einde ~");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("$ voorverw. aan");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("$ voorverw. Bed");
73
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("$ verw. conf");
74
+  #endif
72 75
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Afkoelen");
73 76
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Stroom aan");
74 77
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Stroom uit");

+ 21
- 18
Marlin/src/lcd/language/language_pl.h Ver arquivo

@@ -70,20 +70,23 @@ namespace Language_pl {
70 70
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ust. poz. zer.");
71 71
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Poz. zerowa ust.");
72 72
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ustaw punkt zero");
73
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
74
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~";
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
76
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~");
77
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół");
79
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw.");
80
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Rozgrzej ") PREHEAT_2_LABEL;
81
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " ~";
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza");
83
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ~");
84
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" wsz.");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" stół");
86
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" ustaw.");
73
+  #if PREHEAT_COUNT
74
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
75
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~";
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
77
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~");
78
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół");
80
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw.");
81
+
82
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Rozgrzej $");
83
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Rozgrzej $ ~");
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Rozgrzej $ Dysza");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Rozgrzej $ Dysza ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Rozgrzej $ wsz.");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Rozgrzej $ stół");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Rozgrzej $ ustaw.");
89
+  #endif
87 90
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Rozgrzej własne ust.");
88 91
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Chłodzenie");
89 92
   PROGMEM Language_Str MSG_LASER_MENU                      = _UxGT("Sterowanie Lasera");
@@ -145,14 +148,14 @@ namespace Language_pl {
145 148
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Koniec edycji siati");
146 149
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Buduj własna siatkę");
147 150
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Buduj siatkę");
148
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Buduj siatkę (") PREHEAT_1_LABEL _UxGT(")");
149
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Buduj siatkę (") PREHEAT_2_LABEL _UxGT(")");
151
+  #if PREHEAT_COUNT
152
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Buduj siatkę ($)");
153
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Sprawdzenie siatki ($)");
154
+  #endif
150 155
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Buduj siatkę na zimno");
151 156
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Dostrojenie wysokości siatki");
152 157
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Wartość wysokości");
153 158
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Sprawdzenie siatki");
154
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Sprawdzenie siatki (") PREHEAT_1_LABEL _UxGT(")");
155
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Sprawdzenie siatki (") PREHEAT_2_LABEL _UxGT(")");
156 159
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Sprawdzenie własnej siatki");
157 160
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Nagrzewanie stołu");
158 161
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Nagrzewanie dyszy");

+ 17
- 14
Marlin/src/lcd/language/language_pt.h Ver arquivo

@@ -54,20 +54,23 @@ namespace Language_pt {
54 54
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Definir desvio");
55 55
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets aplicados");
56 56
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Definir origem");
57
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
58
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
59
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
60
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~");
61
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
62
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
63
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Definições ") PREHEAT_1_LABEL;
64
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
65
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " ~";
66
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico");
67
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ~");
68
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" Tudo");
69
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
70
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Definições ") PREHEAT_2_LABEL;
57
+  #if PREHEAT_COUNT
58
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
59
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
60
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
61
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~");
62
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
63
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
64
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Definições ") PREHEAT_1_LABEL;
65
+
66
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Pre-aquecer $");
67
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Pre-aquecer $ ~");
68
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Pre-aquecer $ Bico");
69
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Pre-aquecer $ Bico ~");
70
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Pre-aq. $ Tudo");
71
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base");
72
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Definições $");
73
+  #endif
71 74
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Arrefecer");
72 75
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ligar");
73 76
   PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Desligar");

+ 21
- 18
Marlin/src/lcd/language/language_pt_br.h Ver arquivo

@@ -69,20 +69,23 @@ namespace Language_pt_br {
69 69
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Compensar origem");
70 70
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Alteração aplicada");
71 71
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ajustar Origem");
72
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
73
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
74
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Extrusora ") PREHEAT_1_LABEL;
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~";
76
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
77
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
78
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Ajustar ") PREHEAT_1_LABEL;
79
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
80
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " ~";
81
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Extrusora ") PREHEAT_2_LABEL;
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Extrusora ") PREHEAT_2_LABEL " ~";
83
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Pre-aq.Todo ") PREHEAT_2_LABEL;
84
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Pre-aq.Mesa ") PREHEAT_2_LABEL;
85
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Ajustar ") PREHEAT_2_LABEL;
72
+  #if PREHEAT_COUNT
73
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
74
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~";
75
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Extrusora ") PREHEAT_1_LABEL;
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~";
77
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
78
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
79
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Ajustar ") PREHEAT_1_LABEL;
80
+
81
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Pre-aquecer $");
82
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Pre-aquecer $ ~");
83
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Extrusora $");
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Extrusora $ ~");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Pre-aq.Todo $");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Pre-aq.Mesa $");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Ajustar $");
88
+  #endif
86 89
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Customizar Pre-aq.");
87 90
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Esfriar");
88 91
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ligar");
@@ -132,14 +135,14 @@ namespace Language_pt_br {
132 135
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Fim da Edição");
133 136
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Montar Malha Custom");
134 137
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Montar ");
135
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Montar ") PREHEAT_1_LABEL;
136
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Montar ") PREHEAT_2_LABEL;
138
+  #if PREHEAT_COUNT
139
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Montar $");
140
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Checar $");
141
+  #endif
137 142
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Montar Malha fria");
138 143
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Ajustar Altura");
139 144
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Quant. de Altura");
140 145
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Validar Malha");
141
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Checar ") PREHEAT_1_LABEL;
142
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Checar ") PREHEAT_2_LABEL;
143 146
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Validar Malha Custom");
144 147
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Aquecendo Mesa");
145 148
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Aquecendo Ext.");

+ 21
- 18
Marlin/src/lcd/language/language_ro.h Ver arquivo

@@ -70,20 +70,23 @@ namespace Language_ro {
70 70
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Seteaza Offseturile Acasa");
71 71
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offseturi Aplicate");
72 72
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Seteaza Originea");
73
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Preincalzeste ") PREHEAT_1_LABEL;
74
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~";
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul");
76
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~");
77
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot");
78
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul");
79
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf");
80
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Preincalzeste ") PREHEAT_2_LABEL;
81
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Preincalzeste ") PREHEAT_2_LABEL " ~";
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preincalzeste ") PREHEAT_2_LABEL _UxGT(" Capatul");
83
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Preincalzeste ") PREHEAT_2_LABEL _UxGT(" Capatul ~");
84
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preincalzeste ") PREHEAT_2_LABEL _UxGT(" Tot");
85
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preincalzeste ") PREHEAT_2_LABEL _UxGT(" Patul");
86
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preincalzeste ") PREHEAT_2_LABEL _UxGT(" Conf");
73
+  #if PREHEAT_COUNT
74
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Preincalzeste ") PREHEAT_1_LABEL;
75
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~";
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul");
77
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~");
78
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot");
79
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul");
80
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf");
81
+
82
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Preincalzeste $");
83
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Preincalzeste $ ~");
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Preincalzeste $ Capatul");
85
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Preincalzeste $ Capatul ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Preincalzeste $ Tot");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Preincalzeste $ Patul");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Preincalzeste $ Conf");
89
+  #endif
87 90
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Preincalzeste Personalizat");
88 91
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Racire");
89 92
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frecventa");
@@ -146,14 +149,14 @@ namespace Language_ro {
146 149
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Done Editing Mesh");
147 150
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Build Custom Mesh");
148 151
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Build Mesh");
149
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Build Mesh (") PREHEAT_1_LABEL _UxGT(")");
150
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Build Mesh (") PREHEAT_2_LABEL _UxGT(")");
152
+  #if PREHEAT_COUNT
153
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Build Mesh ($)");
154
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Validate Mesh ($)");
155
+  #endif
151 156
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Build Cold Mesh");
152 157
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Adjust Mesh Height");
153 158
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Height Amount");
154 159
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Validate Mesh");
155
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Validate Mesh (") PREHEAT_1_LABEL _UxGT(")");
156
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Validate Mesh (") PREHEAT_2_LABEL _UxGT(")");
157 160
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Validate Custom Mesh");
158 161
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Heating Bed");
159 162
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Heating Nozzle");

+ 26
- 20
Marlin/src/lcd/language/language_ru.h Ver arquivo

@@ -78,20 +78,23 @@ namespace Language_ru {
78 78
   #endif
79 79
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Смещения применены");
80 80
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Установить ноль");
81
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
82
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Нагрев ") PREHEAT_1_LABEL " ~";
83
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло");
84
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло ~");
85
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" всё");
86
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" стол");
87
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" правка");
88
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Преднагрев ") PREHEAT_2_LABEL;
89
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Нагрев ") PREHEAT_2_LABEL " ~";
90
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" сопло");
91
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" сопло ~");
92
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" всё");
93
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" стол");
94
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Нагрев ") PREHEAT_2_LABEL _UxGT(" правка");
81
+  #if PREHEAT_COUNT
82
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
83
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Нагрев ") PREHEAT_1_LABEL " ~";
84
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло");
85
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" сопло ~");
86
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" всё");
87
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" стол");
88
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Нагрев ") PREHEAT_1_LABEL _UxGT(" правка");
89
+
90
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Преднагрев $");
91
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Нагрев $ ~");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Нагрев $ сопло");
93
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Нагрев $ сопло ~");
94
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Нагрев $ всё");
95
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Нагрев $ стол");
96
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Нагрев $ правка");
97
+  #endif
95 98
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Нагрев Свой");
96 99
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Охлаждение");
97 100
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Частота");
@@ -184,8 +187,9 @@ namespace Language_ru {
184 187
   #endif
185 188
   PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("Точная правка сетки");
186 189
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Построить сетку");
187
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Построить сетку ") PREHEAT_1_LABEL;
188
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Построить сетку ") PREHEAT_2_LABEL;
190
+  #if PREHEAT_COUNT
191
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Построить сетку $");
192
+  #endif
189 193
   #if LCD_WIDTH > 21
190 194
     PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH           = _UxGT("Построить холодную сетку");
191 195
   #else
@@ -195,12 +199,14 @@ namespace Language_ru {
195 199
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Высота");
196 200
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Проверить сетку");
197 201
   #if LCD_WIDTH > 21
198
-    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1          = _UxGT("Проверить сетку ") PREHEAT_1_LABEL;
199
-    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2          = _UxGT("Проверить сетку ") PREHEAT_2_LABEL;
202
+    #if PREHEAT_COUNT
203
+      PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M         = _UxGT("Проверить сетку $");
204
+    #endif
200 205
     PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH      = _UxGT("Проверить свою сетку");
201 206
   #else
202
-    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1          = _UxGT("Провер. сетку ") PREHEAT_1_LABEL;
203
-    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2          = _UxGT("Провер. сетку ") PREHEAT_2_LABEL;
207
+    #if PREHEAT_COUNT
208
+      PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M         = _UxGT("Провер. сетку $");
209
+    #endif
204 210
     PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH      = _UxGT("Провер. свою сетку");
205 211
   #endif
206 212
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 нагрев стола");

+ 21
- 18
Marlin/src/lcd/language/language_sk.h Ver arquivo

@@ -74,20 +74,23 @@ namespace Language_sk {
74 74
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Nastaviť ofsety");
75 75
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Ofsety nastavené");
76 76
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Nastaviť začiatok");
77
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Zahriať ") PREHEAT_1_LABEL;
78
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~";
79
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend");
80
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko");
82
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož");
83
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast.");
84
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Zahriať ") PREHEAT_2_LABEL;
85
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Zahriať ") PREHEAT_2_LABEL " ~";
86
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" hotend");
87
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" hotend ~");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" všetko");
89
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" podlož");
90
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" nast.");
77
+  #if PREHEAT_COUNT
78
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Zahriať ") PREHEAT_1_LABEL;
79
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~";
80
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend");
81
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko");
83
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož");
84
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast.");
85
+
86
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Zahriať $");
87
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Zahriať $ ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Zahriať $ hotend");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Zahriať $ hotend ~");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Zahriať $ všetko");
91
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Zahriať $ podlož");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Zahriať $ nast.");
93
+  #endif
91 94
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Vlastná teplota");
92 95
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Schladiť");
93 96
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Frekvencia");
@@ -150,14 +153,14 @@ namespace Language_sk {
150 153
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Koniec úprav siete");
151 154
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Vlastná sieť");
152 155
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Vytvoriť sieť");
153
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Sieť bodov ") PREHEAT_1_LABEL;
154
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Sieť bodov ") PREHEAT_2_LABEL;
156
+  #if PREHEAT_COUNT
157
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Sieť bodov $");
158
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Kontrola siete $");
159
+  #endif
155 160
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Studená sieť bodov");
156 161
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Upraviť výšku siete");
157 162
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Výška");
158 163
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Skontrolovať sieť");
159
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Kontrola siete ") PREHEAT_1_LABEL;
160
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Kontrola siete ") PREHEAT_2_LABEL;
161 164
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Kontrola vlast.siete");
162 165
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 ohrev podlž.");
163 166
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 ohrev trysky");

+ 21
- 18
Marlin/src/lcd/language/language_tr.h Ver arquivo

@@ -75,20 +75,23 @@ namespace Language_tr {
75 75
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ofset Ayarla");
76 76
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Ofset Tamam");
77 77
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Sıfır Belirle");
78
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
79
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~";
80
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
81
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~");
82
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
83
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
84
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
85
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Ön Isınma ") PREHEAT_2_LABEL;
86
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " ~";
87
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul");
88
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ~");
89
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tüm");
90
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tabla");
91
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Ayarlar");
78
+  #if PREHEAT_COUNT
79
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
80
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " ~";
81
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
82
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ~");
83
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
84
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
85
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
86
+
87
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Ön Isınma $");
88
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Ön Isınma $ ~");
89
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Ön Isınma $ Nozul");
90
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Ön Isınma $ Nozul ~");
91
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Ön Isınma $ Tüm");
92
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Ön Isınma $ Tabla");
93
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Ön Isınma $ Ayarlar");
94
+  #endif
92 95
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Özel Ön Isınma");
93 96
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Soğut/(Durdur)");
94 97
   PROGMEM Language_Str MSG_LASER_MENU                      = _UxGT("Lazer Kontrolü");
@@ -150,14 +153,14 @@ namespace Language_tr {
150 153
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Mesh Düzenleme Tamam");
151 154
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Özel Mesh Oluştur");
152 155
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Mesh Oluştur");
153
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Mesh Oluştur (") PREHEAT_1_LABEL _UxGT(")");
154
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Mesh Oluştur (") PREHEAT_2_LABEL _UxGT(")");
156
+  #if PREHEAT_COUNT
157
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Mesh Oluştur ($)");
158
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Doğrulama Mesh ($)");
159
+  #endif
155 160
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Soğuk Mesh Oluştur");
156 161
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Mesh Yükseklik Ayarı");
157 162
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Yükseklik miktarı");
158 163
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Doğrulama Mesh");
159
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Doğrulama Mesh (") PREHEAT_1_LABEL _UxGT(")");
160
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Doğrulama Mesh (") PREHEAT_2_LABEL _UxGT(")");
161 164
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Özel Mesh Doğrulama");
162 165
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 Isıtma Tablası");
163 166
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 Isıtma Memesi");

+ 21
- 18
Marlin/src/lcd/language/language_uk.h Ver arquivo

@@ -80,20 +80,23 @@ namespace Language_uk {
80 80
   #endif
81 81
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Зміщення прийняті");
82 82
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Встановити ноль");
83
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Нагрів ") PREHEAT_1_LABEL;
84
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~";
85
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло");
86
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~");
87
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все");
88
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл");
89
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт");
90
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Нагрів ") PREHEAT_2_LABEL;
91
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Нагрів ") PREHEAT_2_LABEL " ~";
92
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" сопло");
93
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" сопло ~");
94
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" все");
95
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" стіл");
96
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" налашт");
83
+  #if PREHEAT_COUNT
84
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Нагрів ") PREHEAT_1_LABEL;
85
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~";
86
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло");
87
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~");
88
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все");
89
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл");
90
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт");
91
+
92
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Нагрів $");
93
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Нагрів $ ~");
94
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Нагрів $ сопло");
95
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Нагрів $ сопло ~");
96
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Нагрів $ все");
97
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Нагрів $ стіл");
98
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Нагрів $ налашт");
99
+  #endif
97 100
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Нагрів Свій");
98 101
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Вимкнути нагрів");
99 102
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("Частота");
@@ -185,14 +188,14 @@ namespace Language_uk {
185 188
   PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Редагування сітки");
186 189
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Сітка побудована");
187 190
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Будувати сітку");
188
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Будувати сітку ") PREHEAT_1_LABEL;
189
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Будувати сітку ") PREHEAT_2_LABEL;
191
+  #if PREHEAT_COUNT
192
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Будувати сітку $");
193
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Підтвердити $");
194
+  #endif
190 195
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Буд. холодну сітку");
191 196
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Встан.висоту сітки");
192 197
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Висота");
193 198
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Підтвердити сітку");
194
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Підтвердити ") PREHEAT_1_LABEL;
195
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Підтвердити ") PREHEAT_2_LABEL;
196 199
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Підтвердити свою");
197 200
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 нагрів столу");
198 201
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 нагрів сопла");

+ 21
- 18
Marlin/src/lcd/language/language_vi.h Ver arquivo

@@ -65,20 +65,23 @@ namespace Language_vi {
65 65
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Đặt bù đắp nhà");                       // Set home offsets
66 66
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Bù đắp được áp dụng");                  // Offsets applied
67 67
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Đặt nguồn gốc");                        // Set origin
68
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước");      // Preheat
69
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~");    // Preheat
70
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu");
71
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~");
72
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả");     // all
73
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn");        // bed -- using vietnamese term for 'table' instead
74
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình");   // conf
75
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước");      // Preheat
76
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ~");    // Preheat
77
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu");
78
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ~");
79
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Tất cả");    // all
80
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Bàn");       // bed -- using vietnamese term for 'table' instead
81
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Cấu hình");  // conf
68
+  #if PREHEAT_COUNT
69
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước");      // Preheat
70
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~");    // Preheat
71
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu");
72
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~");
73
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả");     // all
74
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn");        // bed -- using vietnamese term for 'table' instead
75
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình");   // conf
76
+
77
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("Làm nóng $ trước");      // Preheat
78
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("Làm nóng $ trước ~");    // Preheat
79
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("Làm nóng $ Đầu");
80
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("Làm nóng $ Đầu ~");
81
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("Làm nóng $ Tất cả");     // all
82
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("Làm nóng $ Bàn");        // bed -- using vietnamese term for 'table' instead
83
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("Làm nóng $ Cấu hình");   // conf
84
+  #endif
82 85
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Sự nóng trước tự chọn");                // Preheat Custom
83 86
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Nguội xuống");                          // Cooldown
84 87
   PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Bật nguồn");                            // Switch power on
@@ -124,14 +127,14 @@ namespace Language_vi {
124 127
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Chỉnh sửa xong lưới");                  // Done Editing Mesh
125 128
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Xây dựng lưới tự chọn");                // Build Custom Mesh
126 129
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Xây dựng lưới");                        // Build Mesh
127
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Xây dựng lưới (") PREHEAT_1_LABEL _UxGT(")");
128
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Xây dựng lưới (") PREHEAT_2_LABEL _UxGT(")");
130
+  #if PREHEAT_COUNT
131
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("Xây dựng lưới ($)");
132
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("Thẩm tra lưới ($)");
133
+  #endif
129 134
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Xây dựng lưới lạnh");                   // Build cold mesh
130 135
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Điều chỉnh chiều cao lưới");            // Adjust Mesh Height
131 136
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Số lượng chiều cao");                   // Height Amount
132 137
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Thẩm tra lưới");                        // Validate Mesh
133
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Thẩm tra lưới (") PREHEAT_1_LABEL _UxGT(")");
134
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Thẩm tra lưới (") PREHEAT_2_LABEL _UxGT(")");
135 138
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Thẩm tra lưới tự chọn");                // validate custom mesh
136 139
   PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Tiếp tục xây lưới bàn");                // Continue Bed Mesh
137 140
   PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Đang san lấp lưới");                    // Mesh Leveling

+ 21
- 18
Marlin/src/lcd/language/language_zh_CN.h Ver arquivo

@@ -69,20 +69,23 @@ namespace Language_zh_CN {
69 69
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("设置原点偏移");     //"Set home offsets"
70 70
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("偏移已启用");     //"Offsets applied"
71 71
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("设置原点");     //"Set origin"
72
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("预热 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_2_LABEL"
73
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("预热 ") PREHEAT_1_LABEL " ~";     //"Preheat PREHEAT_2_LABEL"
74
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴");     //MSG_PREHEAT_1 " "
75
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~");     //MSG_PREHEAT_1 " "
76
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
77
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床");     //MSG_PREHEAT_1 " Bed"
78
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置");     //MSG_PREHEAT_1 " conf"
79
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("预热 ") PREHEAT_2_LABEL;     //"Preheat PREHEAT_2_LABEL"
80
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("预热 ") PREHEAT_2_LABEL " ~";     //"Preheat PREHEAT_2_LABEL"
81
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴");     //MSG_PREHEAT_2 " "
82
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ~");     //MSG_PREHEAT_2 " "
83
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 全部");     //MSG_PREHEAT_2 " All"
84
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 热床");     //MSG_PREHEAT_2 " Bed"
85
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 设置");     //MSG_PREHEAT_2 " conf"
72
+  #if PREHEAT_COUNT
73
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("预热 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_2_LABEL"
74
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("预热 ") PREHEAT_1_LABEL " ~";     //"Preheat PREHEAT_2_LABEL"
75
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴");     //MSG_PREHEAT_1 " "
76
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~");     //MSG_PREHEAT_1 " "
77
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
78
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床");     //MSG_PREHEAT_1 " Bed"
79
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置");     //MSG_PREHEAT_1 " conf"
80
+
81
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("预热 $");     //"Preheat PREHEAT_2_LABEL"
82
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("预热 $ ~");     //"Preheat PREHEAT_2_LABEL"
83
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("预热 $ 喷嘴");     //MSG_PREHEAT_1 " "
84
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("预热 $ 喷嘴 ~");     //MSG_PREHEAT_1 " "
85
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("预热 $ 全部");     //MSG_PREHEAT_1 " All"
86
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("预热 $ 热床");     //MSG_PREHEAT_1 " Bed"
87
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("预热 $ 设置");     //MSG_PREHEAT_1 " conf"
88
+  #endif
86 89
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("预热自定义");
87 90
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("降温");     //"Cooldown"
88 91
   PROGMEM Language_Str MSG_CUTTER_FREQUENCY                = _UxGT("切割频率");
@@ -145,14 +148,14 @@ namespace Language_zh_CN {
145 148
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("完成编辑网格");     // "Done Editing Mesh"
146 149
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("创设客户网格");     // "Build Custom Mesh"
147 150
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("创设网格");     // "Build Mesh"
148
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("创设 ") PREHEAT_1_LABEL _UxGT(" 网格");     // "Build PREHEAT_1_LABEL Mesh"
149
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("创设 ") PREHEAT_2_LABEL _UxGT(" 网格");     // "Build PREHEAT_2_LABEL Mesh"
151
+  #if PREHEAT_COUNT
152
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("创设 $ 网格");     // "Build PREHEAT_1_LABEL Mesh"
153
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("批准 $ 网格");     // "Validate PREHEAT_1_LABEL Mesh"
154
+  #endif
150 155
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("创设冷网格");     // "Build Cold Mesh"
151 156
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("调整网格高度");     // "Adjust Mesh Height"
152 157
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("高度合计");     // "Height Amount"
153 158
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("批准网格");     // "Validate Mesh"
154
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 网格");     // "Validate PREHEAT_1_LABEL Mesh"
155
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 网格");     // "Validate PREHEAT_2_LABEL Mesh"
156 159
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("批准客户网格");     // "Validate Custom Mesh"
157 160
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26加热热床");
158 161
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26加热喷嘴");

+ 21
- 18
Marlin/src/lcd/language/language_zh_TW.h Ver arquivo

@@ -68,20 +68,23 @@ namespace Language_zh_TW {
68 68
   PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("設置原點偏移");     //"Set home offsets"
69 69
   PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("偏移已啟用");     //"Offsets applied"
70 70
   PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("設置原點");     //"Set origin"
71
-  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("預熱 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_1_LABEL"
72
-  PROGMEM Language_Str MSG_PREHEAT_1_H                     = _UxGT("預熱 ") PREHEAT_1_LABEL " ~";     //"Preheat PREHEAT_1_LABEL"
73
-  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴");     //MSG_PREHEAT_1 " "
74
-  PROGMEM Language_Str MSG_PREHEAT_1_END_E                 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~");     //MSG_PREHEAT_1 " "
75
-  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
76
-  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床");     //MSG_PREHEAT_1 " Bed"
77
-  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置");     //MSG_PREHEAT_1 " conf"
78
-  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("預熱 ") PREHEAT_2_LABEL;     //"Preheat PREHEAT_2_LABEL"
79
-  PROGMEM Language_Str MSG_PREHEAT_2_H                     = _UxGT("預熱 ") PREHEAT_2_LABEL " ~";     //"Preheat PREHEAT_2_LABEL"
80
-  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴");     //MSG_PREHEAT_2 " "
81
-  PROGMEM Language_Str MSG_PREHEAT_2_END_E                 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ~");     //MSG_PREHEAT_2 " "
82
-  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 全部");     //MSG_PREHEAT_2 " All"
83
-  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 熱床");     //MSG_PREHEAT_2 " Bed"
84
-  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 設置");     //MSG_PREHEAT_2 " conf"
71
+  #if PREHEAT_COUNT
72
+    PROGMEM Language_Str MSG_PREHEAT_1                     = _UxGT("預熱 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_1_LABEL"
73
+    PROGMEM Language_Str MSG_PREHEAT_1_H                   = _UxGT("預熱 ") PREHEAT_1_LABEL " ~";     //"Preheat PREHEAT_1_LABEL"
74
+    PROGMEM Language_Str MSG_PREHEAT_1_END                 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴");     //MSG_PREHEAT_1 " "
75
+    PROGMEM Language_Str MSG_PREHEAT_1_END_E               = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~");   //MSG_PREHEAT_1 " "
76
+    PROGMEM Language_Str MSG_PREHEAT_1_ALL                 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
77
+    PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY             = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床");     //MSG_PREHEAT_1 " Bed"
78
+    PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS            = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置");     //MSG_PREHEAT_1 " conf"
79
+
80
+    PROGMEM Language_Str MSG_PREHEAT_M                     = _UxGT("預熱 $");     //"Preheat PREHEAT_1_LABEL"
81
+    PROGMEM Language_Str MSG_PREHEAT_M_H                   = _UxGT("預熱 $ ~");     //"Preheat PREHEAT_1_LABEL"
82
+    PROGMEM Language_Str MSG_PREHEAT_M_END                 = _UxGT("預熱 $ 噴嘴");     //MSG_PREHEAT_1 " "
83
+    PROGMEM Language_Str MSG_PREHEAT_M_END_E               = _UxGT("預熱 $ 噴嘴 ~");   //MSG_PREHEAT_1 " "
84
+    PROGMEM Language_Str MSG_PREHEAT_M_ALL                 = _UxGT("預熱 $ 全部");     //MSG_PREHEAT_1 " All"
85
+    PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY             = _UxGT("預熱 $ 熱床");     //MSG_PREHEAT_1 " Bed"
86
+    PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS            = _UxGT("預熱 $ 設置");     //MSG_PREHEAT_1 " conf"
87
+  #endif
85 88
   PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("自定預熱");   //"Preheat Custom"
86 89
   PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("降溫");     //"Cooldown"
87 90
   PROGMEM Language_Str MSG_LASER_MENU                      = _UxGT("激光控制");    //"Laser Control"
@@ -143,14 +146,14 @@ namespace Language_zh_TW {
143 146
   PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("完成編輯網格");     // "Done Editing Mesh"
144 147
   PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("創設客戶網格");     // "Build Custom Mesh"
145 148
   PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("創設網格");     // "Build Mesh"
146
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("創設 ") PREHEAT_1_LABEL _UxGT(" 網格");     // "Build PREHEAT_1_LABEL Mesh"
147
-  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("創設 ") PREHEAT_2_LABEL _UxGT(" 網格");     // "Build PREHEAT_2_LABEL Mesh"
149
+  #if PREHEAT_COUNT
150
+    PROGMEM Language_Str MSG_UBL_BUILD_MESH_M              = _UxGT("創設 $ 網格");     // "Build PREHEAT_1_LABEL Mesh"
151
+    PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M           = _UxGT("批准 $ 網格");     // "Validate PREHEAT_1_LABEL Mesh"
152
+  #endif
148 153
   PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("創設冷網格");     // "Build Cold Mesh"
149 154
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("調整網格高度");     // "Adjust Mesh Height"
150 155
   PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("高度合計");     // "Height Amount"
151 156
   PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("批准網格");     // "Validate Mesh"
152
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 網格");     // "Validate PREHEAT_1_LABEL Mesh"
153
-  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 網格");     // "Validate PREHEAT_2_LABEL Mesh"
154 157
   PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("批准客戶網格");     // "Validate Custom Mesh"
155 158
   PROGMEM Language_Str MSG_G26_HEATING_BED                 = _UxGT("G26 加熱熱床");    //"G26 Heating Bed"
156 159
   PROGMEM Language_Str MSG_G26_HEATING_NOZZLE              = _UxGT("G26 加熱噴嘴"); //"G26 Heating Nozzle"

+ 11
- 8
Marlin/src/lcd/lcdprint.cpp Ver arquivo

@@ -28,17 +28,16 @@
28 28
 
29 29
 #if HAS_SPI_LCD
30 30
 
31
-#include "../inc/MarlinConfig.h"
32 31
 #include "lcdprint.h"
33 32
 
34 33
 /**
35 34
  * lcd_put_u8str_ind_P
36 35
  * Print a string with an index substituted within it
37 36
  */
38
-lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
37
+lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const inStr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
39 38
   uint8_t *p = (uint8_t*)pstr;
40
-  lcd_uint_t n = maxlen;
41
-  for (; n; n--) {
39
+  int8_t n = maxlen;
40
+  for (; n > 0; n--) {
42 41
     wchar_t ch;
43 42
     p = get_utf8_value_cb(p, read_byte_rom, &ch);
44 43
     if (!ch) break;
@@ -46,17 +45,21 @@ lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, const lcd_uin
46 45
       // lcd_put_int(ind); n--; if (ind >= 10) n--;
47 46
       if (ind >= 0) {
48 47
         if (ch == '*') { lcd_put_wchar('E'); n--; }
49
-        lcd_put_wchar(ind + ((ch == '=') ? '0' : LCD_FIRST_TOOL));
50
-        n--;
48
+        if (n) { lcd_put_wchar(ind + ((ch == '=') ? '0' : LCD_FIRST_TOOL)); n--; }
51 49
       }
52 50
       else {
53 51
         PGM_P const b = ind == -2 ? GET_TEXT(MSG_CHAMBER) : GET_TEXT(MSG_BED);
54 52
         lcd_put_u8str_P(b);
55 53
         n -= utf8_strlen_P(b);
56 54
       }
57
-      if (n) n -= lcd_put_u8str_max_P((PGM_P)p, n);
58
-      break;
55
+      if (n) n -= lcd_put_u8str_max_P((PGM_P)p, n * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH);
56
+      continue;
59 57
     }
58
+    else if (ch == '$' && inStr) {
59
+      n -= lcd_put_u8str_max_P(inStr, n * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH);
60
+      continue;
61
+    }
62
+
60 63
     lcd_put_wchar(ch);
61 64
   }
62 65
   return n;

+ 60
- 3
Marlin/src/lcd/lcdprint.h Ver arquivo

@@ -13,11 +13,68 @@
13 13
 #include "../inc/MarlinConfig.h"
14 14
 
15 15
 #if HAS_GRAPHICAL_LCD
16
+
16 17
   #include "dogm/u8g_fontutf8.h"
17 18
   typedef u8g_uint_t lcd_uint_t;
19
+  typedef u8g_int_t lcd_int_t;
20
+
21
+  // Only Western languages support big / small fonts
22
+  #if DISABLED(DISPLAY_CHARSET_ISO10646_1)
23
+    #undef USE_BIG_EDIT_FONT
24
+    #undef USE_SMALL_INFOFONT
25
+  #endif
26
+
27
+  #define MENU_FONT_NAME    ISO10646_1_5x7
28
+  #define MENU_FONT_WIDTH    6
29
+  #define MENU_FONT_ASCENT  10
30
+  #define MENU_FONT_DESCENT  2
31
+  #define MENU_FONT_HEIGHT  (MENU_FONT_ASCENT + MENU_FONT_DESCENT)
32
+
33
+  #if ENABLED(USE_BIG_EDIT_FONT)
34
+    #define EDIT_FONT_NAME    u8g_font_9x18
35
+    #define EDIT_FONT_WIDTH    9
36
+    #define EDIT_FONT_ASCENT  10
37
+    #define EDIT_FONT_DESCENT  3
38
+  #else
39
+    #define EDIT_FONT_NAME    MENU_FONT_NAME
40
+    #define EDIT_FONT_WIDTH   MENU_FONT_WIDTH
41
+    #define EDIT_FONT_ASCENT  MENU_FONT_ASCENT
42
+    #define EDIT_FONT_DESCENT MENU_FONT_DESCENT
43
+  #endif
44
+  #define EDIT_FONT_HEIGHT (EDIT_FONT_ASCENT + EDIT_FONT_DESCENT)
45
+
46
+  // Get the Ascent, Descent, and total Height for the Info Screen font
47
+  #if ENABLED(USE_SMALL_INFOFONT)
48
+    extern const u8g_fntpgm_uint8_t u8g_font_6x9[];
49
+    #define INFO_FONT_ASCENT 7
50
+  #else
51
+    #define INFO_FONT_ASCENT 8
52
+  #endif
53
+  #define INFO_FONT_DESCENT 2
54
+  #define INFO_FONT_HEIGHT (INFO_FONT_ASCENT + INFO_FONT_DESCENT)
55
+  #define INFO_FONT_WIDTH   6
56
+
57
+  #define SETCURSOR(col, row) lcd_moveto(col * (MENU_FONT_WIDTH), (row + 1) * (MENU_FONT_HEIGHT))
58
+  #define SETCURSOR_RJ(len, row) lcd_moveto(LCD_PIXEL_WIDTH - (len) * (MENU_FONT_WIDTH), (row + 1) * (MENU_FONT_HEIGHT))
59
+
18 60
 #else
61
+
19 62
   #define _UxGT(a) a
20 63
   typedef uint8_t lcd_uint_t;
64
+  typedef int8_t lcd_int_t;
65
+
66
+  #define MENU_FONT_WIDTH   1
67
+  #define MENU_FONT_HEIGHT  1
68
+  #define EDIT_FONT_WIDTH   1
69
+  #define EDIT_FONT_HEIGHT  1
70
+  #define INFO_FONT_WIDTH   1
71
+  #define INFO_FONT_HEIGHT  1
72
+  #define LCD_PIXEL_WIDTH   LCD_WIDTH
73
+  #define LCD_PIXEL_HEIGHT  LCD_HEIGHT
74
+
75
+  #define SETCURSOR(col, row) lcd_moveto(col, row)
76
+  #define SETCURSOR_RJ(len, row) lcd_moveto(LCD_WIDTH - (len), row)
77
+
21 78
 #endif
22 79
 
23 80
 #define START_OF_UTF8_CHAR(C) (((C) & 0xC0u) != 0x80u)
@@ -71,10 +128,10 @@ inline int lcd_put_u8str_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P con
71 128
   return lcd_put_u8str_P(pstr);
72 129
 }
73 130
 
74
-lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, const lcd_uint_t maxlen=LCD_WIDTH);
75
-inline lcd_uint_t lcd_put_u8str_ind_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const pstr, const int8_t ind, const lcd_uint_t maxlen=LCD_WIDTH) {
131
+lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const inStr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH);
132
+inline lcd_uint_t lcd_put_u8str_ind_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const pstr, const int8_t ind, PGM_P const inStr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
76 133
   lcd_moveto(col, row);
77
-  return lcd_put_u8str_ind_P(pstr, ind, maxlen);
134
+  return lcd_put_u8str_ind_P(pstr, ind, inStr, maxlen);
78 135
 }
79 136
 
80 137
 inline int lcd_put_u8str(const char* str) { return lcd_put_u8str_max(str, PIXEL_LEN_NOLIMIT); }

+ 1
- 0
Marlin/src/lcd/menu/menu.cpp Ver arquivo

@@ -62,6 +62,7 @@ menuPosition screen_history[6];
62 62
 uint8_t screen_history_depth = 0;
63 63
 
64 64
 int8_t MenuItemBase::itemIndex;   // Index number for draw and action
65
+PGM_P MenuItemBase::itemString;   // A PSTR for substitution
65 66
 chimera_t editable;               // Value Editing
66 67
 
67 68
 // Menu Edit Items

+ 124
- 76
Marlin/src/lcd/menu/menu.h Ver arquivo

@@ -63,12 +63,14 @@ typedef void (*selectFunc_t)();
63 63
 
64 64
 class MenuItemBase {
65 65
   public:
66
-    // An index to interject in the item label and for
67
-    // use by the action
66
+    // Index to interject in the item label and/or for use by its action.
68 67
     static int8_t itemIndex;
69 68
 
69
+    // An optional pointer for use in display or by the action
70
+    static PGM_P itemString;
71
+
70 72
     // Store the index of the item ahead of use by indexed items
71
-    FORCE_INLINE static void init(const int8_t ind) { itemIndex = ind; }
73
+    FORCE_INLINE static void init(const int8_t ind=0, PGM_P const pstr=nullptr) { itemIndex = ind; itemString = pstr; }
72 74
 
73 75
     // Draw an item either selected (pre_char) or not (space) with post_char
74 76
     static void _draw(const bool sel, const uint8_t row, PGM_P const pstr, const char pre_char, const char post_char);
@@ -221,7 +223,7 @@ class MenuEditItemBase : public MenuItemBase {
221 223
   public:
222 224
     // Implemented for HD44780 and DOGM
223 225
     // Draw the current item at specified row with edit data
224
-    static void draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm=false);
226
+    static void draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const inStr, const bool pgm=false);
225 227
 
226 228
     // Implemented for HD44780 and DOGM
227 229
     // This low-level method is good to draw from anywhere
@@ -403,15 +405,15 @@ class MenuItem_bool : public MenuEditItemBase {
403 405
  */
404 406
 
405 407
 #define _MENU_INNER_P(TYPE, USE_MULTIPLIER, PLABEL, V...) do { \
406
-  PGM_P const plabel = PLABEL;                                \
407
-  if (encoderLine == _thisItemNr && ui.use_click()) {         \
408
-    _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER);              \
409
-    MenuItem_##TYPE::action(plabel, ##V);                     \
410
-    if (ui.screen_changed) return;                            \
411
-  }                                                           \
412
-  if (ui.should_draw())                                       \
413
-    MenuItem_##TYPE::draw                                     \
414
-      (encoderLine == _thisItemNr, _lcdLineNr, plabel, ##V);  \
408
+  PGM_P const plabel = PLABEL;                                 \
409
+  if (encoderLine == _thisItemNr && ui.use_click()) {          \
410
+    _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER);               \
411
+    MenuItem_##TYPE::action(plabel, ##V);                      \
412
+    if (ui.screen_changed) return;                             \
413
+  }                                                            \
414
+  if (ui.should_draw())                                        \
415
+    MenuItem_##TYPE::draw                                      \
416
+      (encoderLine == _thisItemNr, _lcdLineNr, plabel, ##V);   \
415 417
 }while(0)
416 418
 
417 419
 #define _MENU_ITEM_P(TYPE, V...) do { \
@@ -421,11 +423,31 @@ class MenuItem_bool : public MenuEditItemBase {
421 423
   NEXT_ITEM();                        \
422 424
 }while(0)
423 425
 
426
+// Indexed items set a global index value and optional data
427
+#define _MENU_ITEM_N_S_P(TYPE, N, S, V...) do{ \
428
+  _skipStatic = false;                         \
429
+  if (_menuLineNr == _thisItemNr) {            \
430
+    MenuItemBase::init(N, S);                  \
431
+    _MENU_INNER_P(TYPE, ##V);                  \
432
+  }                                            \
433
+  NEXT_ITEM();                                 \
434
+}while(0)
435
+
424 436
 // Indexed items set a global index value
425 437
 #define _MENU_ITEM_N_P(TYPE, N, V...) do{ \
426 438
   _skipStatic = false;                    \
427 439
   if (_menuLineNr == _thisItemNr) {       \
428
-    MenuItemBase::init(N);                \
440
+    MenuItemBase::itemIndex = N;          \
441
+    _MENU_INNER_P(TYPE, ##V);             \
442
+  }                                       \
443
+  NEXT_ITEM();                            \
444
+}while(0)
445
+
446
+// Items with a unique string
447
+#define _MENU_ITEM_S_P(TYPE, S, V...) do{ \
448
+  _skipStatic = false;                    \
449
+  if (_menuLineNr == _thisItemNr) {       \
450
+    MenuItemBase::itemString = S;         \
429 451
     _MENU_INNER_P(TYPE, ##V);             \
430 452
   }                                       \
431 453
   NEXT_ITEM();                            \
@@ -457,72 +479,94 @@ class MenuItem_bool : public MenuEditItemBase {
457 479
   NEXT_ITEM();                               \
458 480
 }while(0)
459 481
 
460
-#define STATIC_ITEM(LABEL,      V...) STATIC_ITEM_P(  GET_TEXT(LABEL), ##V)
461
-#define STATIC_ITEM_N(LABEL, N, V...) STATIC_ITEM_N_P(GET_TEXT(LABEL), ##V)
462
-
463
-#define MENU_ITEM_P(TYPE, PLABEL, V...)              _MENU_ITEM_P(TYPE, false, PLABEL, ##V)
464
-#define MENU_ITEM(TYPE, LABEL, V...)                  MENU_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
465
-
466
-#define MENU_ITEM_N_P(TYPE, N, PLABEL, V...)       _MENU_ITEM_N_P(TYPE, N, false, PLABEL, ##V)
467
-#define MENU_ITEM_N(TYPE, N, LABEL, V...)           MENU_ITEM_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
468
-
469
-#define BACK_ITEM(LABEL)                                MENU_ITEM(back, LABEL)
470
-
471
-#define ACTION_ITEM_P(PLABEL, ACTION)                 MENU_ITEM_P(function, PLABEL, ACTION)
472
-#define ACTION_ITEM(LABEL, ACTION)                  ACTION_ITEM_P(GET_TEXT(LABEL),  ACTION)
473
-
474
-#define ACTION_ITEM_N_P(N, PLABEL, ACTION)          MENU_ITEM_N_P(function, N, PLABEL, ACTION)
475
-#define ACTION_ITEM_N(N, LABEL, ACTION)           ACTION_ITEM_N_P(N, GET_TEXT(LABEL), ACTION)
476
-
477
-#define GCODES_ITEM_P(PLABEL, GCODES)                 MENU_ITEM_P(gcode, PLABEL, GCODES)
478
-#define GCODES_ITEM(LABEL, GCODES)                  GCODES_ITEM_P(GET_TEXT(LABEL), GCODES)
479
-
480
-#define GCODES_ITEM_N_P(N, PLABEL, GCODES)          MENU_ITEM_N_P(gcode, N, PLABEL, GCODES)
481
-#define GCODES_ITEM_N(N, LABEL, GCODES)           GCODES_ITEM_N_P(N, GET_TEXT(LABEL), GCODES)
482
-
483
-#define SUBMENU_P(PLABEL, DEST)                       MENU_ITEM_P(submenu, PLABEL, DEST)
484
-#define SUBMENU(LABEL, DEST)                            SUBMENU_P(GET_TEXT(LABEL), DEST)
485
-
486
-#define SUBMENU_N_P(N, PLABEL, DEST)                MENU_ITEM_N_P(submenu, N, PLABEL, DEST)
487
-#define SUBMENU_N(N, LABEL, DEST)                     SUBMENU_N_P(N, GET_TEXT(LABEL), DEST)
488
-
489
-#define EDIT_ITEM_P(TYPE, PLABEL, V...)               MENU_ITEM_P(TYPE, PLABEL, ##V)
490
-#define EDIT_ITEM(TYPE, LABEL, V...)                  EDIT_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
491
-
492
-#define EDIT_ITEM_N_P(TYPE, N, PLABEL, V...)        MENU_ITEM_N_P(TYPE, N, PLABEL, ##V)
493
-#define EDIT_ITEM_N(TYPE, N, LABEL, V...)           EDIT_ITEM_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
494
-
495
-#define EDIT_ITEM_FAST_P(TYPE, PLABEL, V...)         _MENU_ITEM_P(TYPE, true, PLABEL, ##V)
496
-#define EDIT_ITEM_FAST(TYPE, LABEL, V...)        EDIT_ITEM_FAST_P(TYPE, GET_TEXT(LABEL), ##V)
497
-
498
-#define EDIT_ITEM_FAST_N_P(TYPE, N, PLABEL, V...)  _MENU_ITEM_N_P(TYPE, N, true, PLABEL, ##V)
499
-#define EDIT_ITEM_FAST_N(TYPE, N, LABEL, V...) EDIT_ITEM_FAST_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
482
+#define STATIC_ITEM(LABEL,      V...)                  STATIC_ITEM_P(GET_TEXT(LABEL), ##V)
483
+#define STATIC_ITEM_N(LABEL, N, V...)                STATIC_ITEM_N_P(GET_TEXT(LABEL), ##V)
484
+
485
+#define MENU_ITEM_N_S_P(TYPE, N, S, PLABEL, V...)   _MENU_ITEM_N_S_P(TYPE, N, S, false, PLABEL, ##V)
486
+#define MENU_ITEM_N_S(TYPE, N, S, LABEL, V...)       MENU_ITEM_N_S_P(TYPE, N, S, GET_TEXT(LABEL), ##V)
487
+#define MENU_ITEM_S_P(TYPE, S, PLABEL, V...)          _MENU_ITEM_S_P(TYPE, S, false, PLABEL, ##V)
488
+#define MENU_ITEM_S(TYPE, S, LABEL, V...)              MENU_ITEM_S_P(TYPE, S, GET_TEXT(LABEL), ##V)
489
+#define MENU_ITEM_N_P(TYPE, N, PLABEL, V...)          _MENU_ITEM_N_P(TYPE, N, false, PLABEL, ##V)
490
+#define MENU_ITEM_N(TYPE, N, LABEL, V...)              MENU_ITEM_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
491
+#define MENU_ITEM_P(TYPE, PLABEL, V...)                 _MENU_ITEM_P(TYPE, false, PLABEL, ##V)
492
+#define MENU_ITEM(TYPE, LABEL, V...)                     MENU_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
493
+
494
+#define BACK_ITEM(LABEL)                                   MENU_ITEM(back, LABEL)
495
+
496
+#define ACTION_ITEM_N_S_P(N, S, PLABEL, ACTION)      MENU_ITEM_N_S_P(function, N, S, PLABEL, ACTION)
497
+#define ACTION_ITEM_N_S(N, S, LABEL, ACTION)       ACTION_ITEM_N_S_P(N, S, GET_TEXT(LABEL), ACTION)
498
+#define ACTION_ITEM_S_P(S, PLABEL, ACTION)             MENU_ITEM_S_P(function, S, PLABEL, ACTION)
499
+#define ACTION_ITEM_S(S, LABEL, ACTION)              ACTION_ITEM_S_P(S, GET_TEXT(LABEL), ACTION)
500
+#define ACTION_ITEM_N_P(N, PLABEL, ACTION)             MENU_ITEM_N_P(function, N, PLABEL, ACTION)
501
+#define ACTION_ITEM_N(N, LABEL, ACTION)              ACTION_ITEM_N_P(N, GET_TEXT(LABEL), ACTION)
502
+#define ACTION_ITEM_P(PLABEL, ACTION)                    MENU_ITEM_P(function, PLABEL, ACTION)
503
+#define ACTION_ITEM(LABEL, ACTION)                     ACTION_ITEM_P(GET_TEXT(LABEL), ACTION)
504
+
505
+#define GCODES_ITEM_N_S_P(N, S, PLABEL, GCODES)      MENU_ITEM_N_S_P(gcode, N, S, PLABEL, GCODES)
506
+#define GCODES_ITEM_N_S(N, S, LABEL, GCODES)       GCODES_ITEM_N_S_P(N, S, GET_TEXT(LABEL), GCODES)
507
+#define GCODES_ITEM_S_P(S, PLABEL, GCODES)             MENU_ITEM_S_P(gcode, S, PLABEL, GCODES)
508
+#define GCODES_ITEM_S(S, LABEL, GCODES)              GCODES_ITEM_S_P(S, GET_TEXT(LABEL), GCODES)
509
+#define GCODES_ITEM_N_P(N, PLABEL, GCODES)             MENU_ITEM_N_P(gcode, N, PLABEL, GCODES)
510
+#define GCODES_ITEM_N(N, LABEL, GCODES)              GCODES_ITEM_N_P(N, GET_TEXT(LABEL), GCODES)
511
+#define GCODES_ITEM_P(PLABEL, GCODES)                    MENU_ITEM_P(gcode, PLABEL, GCODES)
512
+#define GCODES_ITEM(LABEL, GCODES)                     GCODES_ITEM_P(GET_TEXT(LABEL), GCODES)
513
+
514
+#define SUBMENU_N_S_P(N, S, PLABEL, DEST)            MENU_ITEM_N_S_P(submenu, N, S, PLABEL, DEST)
515
+#define SUBMENU_N_S(N, S, LABEL, DEST)                 SUBMENU_N_S_P(N, S, GET_TEXT(LABEL), DEST)
516
+#define SUBMENU_S_P(S, PLABEL, DEST)                   MENU_ITEM_S_P(submenu, S, PLABEL, DEST)
517
+#define SUBMENU_S(S, LABEL, DEST)                        SUBMENU_S_P(S, GET_TEXT(LABEL), DEST)
518
+#define SUBMENU_N_P(N, PLABEL, DEST)                   MENU_ITEM_N_P(submenu, N, PLABEL, DEST)
519
+#define SUBMENU_N(N, LABEL, DEST)                        SUBMENU_N_P(N, GET_TEXT(LABEL), DEST)
520
+#define SUBMENU_P(PLABEL, DEST)                          MENU_ITEM_P(submenu, PLABEL, DEST)
521
+#define SUBMENU(LABEL, DEST)                               SUBMENU_P(GET_TEXT(LABEL), DEST)
522
+
523
+#define EDIT_ITEM_N_S_P(TYPE, N, S, PLABEL, V...)    MENU_ITEM_N_S_P(TYPE, N, S, PLABEL, ##V)
524
+#define EDIT_ITEM_N_S(TYPE, N, S, LABEL, V...)       EDIT_ITEM_N_S_P(TYPE, N, S, GET_TEXT(LABEL), ##V)
525
+#define EDIT_ITEM_S_P(TYPE, S, PLABEL, V...)           MENU_ITEM_S_P(TYPE, S, PLABEL, ##V)
526
+#define EDIT_ITEM_S(TYPE, S, LABEL, V...)              EDIT_ITEM_S_P(TYPE, S, GET_TEXT(LABEL), ##V)
527
+#define EDIT_ITEM_N_P(TYPE, N, PLABEL, V...)           MENU_ITEM_N_P(TYPE, N, PLABEL, ##V)
528
+#define EDIT_ITEM_N(TYPE, N, LABEL, V...)              EDIT_ITEM_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
529
+#define EDIT_ITEM_P(TYPE, PLABEL, V...)                  MENU_ITEM_P(TYPE, PLABEL, ##V)
530
+#define EDIT_ITEM(TYPE, LABEL, V...)                     EDIT_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
531
+
532
+#define EDIT_ITEM_FAST_N_S_P(TYPE, N, S, PLABEL, V...)  _MENU_ITEM_N_S_P(TYPE, N, S, true, PLABEL, ##V)
533
+#define EDIT_ITEM_FAST_N_S(TYPE, N, S, LABEL, V...) EDIT_ITEM_FAST_N_S_P(TYPE, N, S, true, GET_TEXT(LABEL), ##V)
534
+#define EDIT_ITEM_FAST_S_P(TYPE, S, PLABEL, V...)         _MENU_ITEM_S_P(TYPE, S, true, PLABEL, ##V)
535
+#define EDIT_ITEM_FAST_S(TYPE, S, LABEL, V...)        EDIT_ITEM_FAST_S_P(TYPE, S, GET_TEXT(LABEL), ##V)
536
+#define EDIT_ITEM_FAST_N_P(TYPE, N, PLABEL, V...)         _MENU_ITEM_N_P(TYPE, N, true, PLABEL, ##V)
537
+#define EDIT_ITEM_FAST_N(TYPE, N, LABEL, V...)        EDIT_ITEM_FAST_N_P(TYPE, N, GET_TEXT(LABEL), ##V)
538
+#define EDIT_ITEM_FAST_P(TYPE, PLABEL, V...)                _MENU_ITEM_P(TYPE, true, PLABEL, ##V)
539
+#define EDIT_ITEM_FAST(TYPE, LABEL, V...)               EDIT_ITEM_FAST_P(TYPE, GET_TEXT(LABEL), ##V)
540
+
541
+#define _CONFIRM_ITEM_INNER_P(PLABEL, V...) do {             \
542
+  if (encoderLine == _thisItemNr && ui.use_click()) {        \
543
+    ui.goto_screen([]{MenuItem_confirm::select_screen(V);}); \
544
+    return;                                                  \
545
+  }                                                          \
546
+  if (ui.should_draw()) MenuItem_confirm::draw               \
547
+    (encoderLine == _thisItemNr, _lcdLineNr, PLABEL, ##V);   \
548
+}while(0)
500 549
 
501
-#define _CONFIRM_ITEM_INNER_P(PLABEL, V...) do {              \
502
-  if (encoderLine == _thisItemNr && ui.use_click()) {         \
503
-    ui.goto_screen([]{MenuItem_confirm::select_screen(V);});  \
504
-    return;                                                   \
505
-  }                                                           \
506
-  if (ui.should_draw()) MenuItem_confirm::draw                \
507
-    (encoderLine == _thisItemNr, _lcdLineNr, PLABEL, ##V);    \
550
+// Indexed items set a global index value and optional data
551
+#define _CONFIRM_ITEM_P(PLABEL, V...) do { \
552
+  _skipStatic = false;                     \
553
+  if (_menuLineNr == _thisItemNr)          \
554
+    _CONFIRM_ITEM_INNER_P(PLABEL, ##V);    \
555
+  NEXT_ITEM();                             \
508 556
 }while(0)
509 557
 
510
-#define _CONFIRM_ITEM_P(PLABEL, V...) do {  \
558
+// Indexed items set a global index value
559
+#define _CONFIRM_ITEM_N_S_P(N, S, V...) do{ \
511 560
   _skipStatic = false;                      \
512
-  if (_menuLineNr == _thisItemNr)           \
513
-    _CONFIRM_ITEM_INNER_P(PLABEL, ##V);     \
561
+  if (_menuLineNr == _thisItemNr) {         \
562
+    MenuItemBase::init(N, S);               \
563
+    _CONFIRM_ITEM_INNER_P(TYPE, ##V);       \
564
+  }                                         \
514 565
   NEXT_ITEM();                              \
515 566
 }while(0)
516 567
 
517 568
 // Indexed items set a global index value
518
-#define _CONFIRM_ITEM_N_P(N, V...) do{  \
519
-  _skipStatic = false;                  \
520
-  if (_menuLineNr == _thisItemNr) {     \
521
-    MenuItemBase::init(N);              \
522
-    _CONFIRM_ITEM_INNER_P(TYPE, ##V);   \
523
-  }                                     \
524
-  NEXT_ITEM();                          \
525
-}while(0)
569
+#define _CONFIRM_ITEM_N_P(N, V...) _CONFIRM_ITEM_N_S_P(N, nullptr, V)
526 570
 
527 571
 #define CONFIRM_ITEM_P(PLABEL,A,B,V...) _CONFIRM_ITEM_P(PLABEL, GET_TEXT(A), GET_TEXT(B), ##V)
528 572
 #define CONFIRM_ITEM(LABEL, V...)        CONFIRM_ITEM_P(GET_TEXT(LABEL), ##V)
@@ -530,11 +574,15 @@ class MenuItem_bool : public MenuEditItemBase {
530 574
 #define YESNO_ITEM_P(PLABEL, V...)      _CONFIRM_ITEM_P(PLABEL, ##V)
531 575
 #define YESNO_ITEM(LABEL, V...)            YESNO_ITEM_P(GET_TEXT(LABEL), ##V)
532 576
 
533
-#define CONFIRM_ITEM_N_P(N,PLABEL,A,B,V...) _CONFIRM_ITEM_N_P(N, PLABEL, GET_TEXT(A), GET_TEXT(B), ##V)
534
-#define CONFIRM_ITEM_N(N,LABEL, V...)        CONFIRM_ITEM_N_P(N, GET_TEXT(LABEL), ##V)
577
+#define CONFIRM_ITEM_N_S_P(N,S,PLABEL,A,B,V...) _CONFIRM_ITEM_N_S_P(N, S, PLABEL, GET_TEXT(A), GET_TEXT(B), ##V)
578
+#define CONFIRM_ITEM_N_S(N,S,LABEL,V...)         CONFIRM_ITEM_N_S_P(N, S, GET_TEXT(LABEL), ##V)
579
+#define CONFIRM_ITEM_N_P(N,PLABEL,A,B,V...)       _CONFIRM_ITEM_N_P(N, PLABEL, GET_TEXT(A), GET_TEXT(B), ##V)
580
+#define CONFIRM_ITEM_N(N,LABEL, V...)              CONFIRM_ITEM_N_P(N, GET_TEXT(LABEL), ##V)
535 581
 
536
-#define YESNO_ITEM_N_P(N,PLABEL, V...)      _CONFIRM_ITEM_N_P(N, PLABEL, ##V)
537
-#define YESNO_ITEM_N(N,LABEL, V...)            YESNO_ITEM_N_P(N, GET_TEXT(LABEL), ##V)
582
+#define YESNO_ITEM_N_S_P(N,S,PLABEL, V...) _CONFIRM_ITEM_N_S_P(N, S, PLABEL, ##V)
583
+#define YESNO_ITEM_N_S(N,S,LABEL, V...)       YESNO_ITEM_N_S_P(N, S, GET_TEXT(LABEL), ##V)
584
+#define YESNO_ITEM_N_P(N,PLABEL, V...)       _CONFIRM_ITEM_N_P(N, PLABEL, ##V)
585
+#define YESNO_ITEM_N(N,LABEL, V...)             YESNO_ITEM_N_P(N, GET_TEXT(LABEL), ##V)
538 586
 
539 587
 ////////////////////////////////////////////
540 588
 /////////////// Menu Screens ///////////////

+ 0
- 3
Marlin/src/lcd/menu/menu_addon.h Ver arquivo

@@ -22,9 +22,6 @@
22 22
 #pragma once
23 23
 
24 24
 #include "../lcdprint.h"
25
-#if HAS_GRAPHICAL_LCD
26
-  #include "../dogm/ultralcd_DOGM.h"
27
-#endif
28 25
 
29 26
 #define MENU_ITEM_ADDON_START(X) do{ \
30 27
   if (ui.should_draw() && _menuLineNr == _thisItemNr - 1) { \

+ 4
- 24
Marlin/src/lcd/menu/menu_configuration.cpp Ver arquivo

@@ -300,11 +300,12 @@ void menu_advanced_settings();
300 300
 
301 301
 #if PREHEAT_COUNT && DISABLED(SLIM_LCD_MENUS)
302 302
 
303
-  void _menu_configuration_preheat_settings(const uint8_t m) {
303
+  void _menu_configuration_preheat_settings() {
304 304
     #define _MINTEMP_ITEM(N) HEATER_##N##_MINTEMP,
305 305
     #define _MAXTEMP_ITEM(N) HEATER_##N##_MAXTEMP,
306 306
     #define MINTEMP_ALL _MIN(REPEAT(HOTENDS, _MINTEMP_ITEM) 999)
307 307
     #define MAXTEMP_ALL _MAX(REPEAT(HOTENDS, _MAXTEMP_ITEM) 0)
308
+    const uint8_t m = MenuItemBase::itemIndex;
308 309
     START_MENU();
309 310
     BACK_ITEM(MSG_CONFIGURATION);
310 311
     #if HAS_FAN
@@ -323,18 +324,6 @@ void menu_advanced_settings();
323 324
     END_MENU();
324 325
   }
325 326
 
326
-  void menu_preheat_material1_settings() { _menu_configuration_preheat_settings(0); }
327
-  void menu_preheat_material2_settings() { _menu_configuration_preheat_settings(1); }
328
-  #if PREHEAT_COUNT >= 3
329
-    void menu_preheat_material3_settings() { _menu_configuration_preheat_settings(3); }
330
-    #if PREHEAT_COUNT >= 4
331
-      void menu_preheat_material4_settings() { _menu_configuration_preheat_settings(4); }
332
-      #if PREHEAT_COUNT >= 5
333
-        void menu_preheat_material5_settings() { _menu_configuration_preheat_settings(5); }
334
-      #endif
335
-    #endif
336
-  #endif
337
-
338 327
 #endif
339 328
 
340 329
 void menu_configuration() {
@@ -414,17 +403,8 @@ void menu_configuration() {
414 403
 
415 404
   // Preheat configurations
416 405
   #if PREHEAT_COUNT && DISABLED(SLIM_LCD_MENUS)
417
-    SUBMENU(MSG_PREHEAT_1_SETTINGS, menu_preheat_material1_settings);
418
-    SUBMENU(MSG_PREHEAT_2_SETTINGS, menu_preheat_material2_settings);
419
-    #if PREHEAT_COUNT >= 3
420
-      SUBMENU(MSG_PREHEAT_3_SETTINGS, menu_preheat_material3_settings);
421
-      #if PREHEAT_COUNT >= 4
422
-        SUBMENU(MSG_PREHEAT_4_SETTINGS, menu_preheat_material4_settings);
423
-        #if PREHEAT_COUNT >= 5
424
-          SUBMENU(MSG_PREHEAT_5_SETTINGS, menu_preheat_material5_settings);
425
-        #endif
426
-      #endif
427
-    #endif
406
+    LOOP_L_N(m, PREHEAT_COUNT)
407
+      SUBMENU_N_S(m, ui.get_preheat_label(m), MSG_PREHEAT_M_SETTINGS, _menu_configuration_preheat_settings);
428 408
   #endif
429 409
 
430 410
   #if ENABLED(EEPROM_SETTINGS)

+ 17
- 6
Marlin/src/lcd/menu/menu_filament.cpp Ver arquivo

@@ -55,13 +55,21 @@ inline PGM_P _change_filament_command() {
55 55
 }
56 56
 
57 57
 // Initiate Filament Load/Unload/Change at the specified temperature
58
-static void _change_filament(const uint16_t celsius) {
58
+static void _change_filament_with_temp(const uint16_t celsius) {
59 59
   char cmd[11];
60 60
   sprintf_P(cmd, _change_filament_command(), _change_filament_extruder);
61 61
   thermalManager.setTargetHotend(celsius, _change_filament_extruder);
62 62
   queue.inject(cmd);
63 63
 }
64 64
 
65
+static void _change_filament_with_preset() {
66
+  _change_filament_with_temp(ui.material_preset[MenuItemBase::itemIndex].hotend_temp);
67
+}
68
+
69
+static void _change_filament_with_custom() {
70
+  _change_filament_with_temp(thermalManager.temp_hotend[MenuItemBase::itemIndex].target);
71
+}
72
+
65 73
 //
66 74
 // Menu to choose the temperature and start Filament Change
67 75
 //
@@ -81,11 +89,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
81 89
   START_MENU();
82 90
   if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), SS_CENTER|SS_INVERT);
83 91
   BACK_ITEM(MSG_BACK);
84
-  ACTION_ITEM(MSG_PREHEAT_1, []{ _change_filament(ui.material_preset[0].hotend_temp); });
85
-  ACTION_ITEM(MSG_PREHEAT_2, []{ _change_filament(ui.material_preset[1].hotend_temp); });
86
-  EDIT_ITEM_FAST(int3, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[_change_filament_extruder].target, EXTRUDE_MINTEMP, thermalManager.heater_maxtemp[extruder] - HOTEND_OVERSHOOT, []{
87
-    _change_filament(thermalManager.temp_hotend[_change_filament_extruder].target);
88
-  });
92
+  #if PREHEAT_COUNT
93
+    LOOP_L_N(m, PREHEAT_COUNT)
94
+      ACTION_ITEM_N_S(m, ui.get_preheat_label(m), MSG_PREHEAT_M, _change_filament_with_preset);
95
+  #endif
96
+  EDIT_ITEM_FAST_N(int3, extruder, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[extruder].target,
97
+    EXTRUDE_MINTEMP, thermalManager.heater_maxtemp[extruder] - HOTEND_OVERSHOOT,
98
+    _change_filament_with_custom
99
+  );
89 100
   END_MENU();
90 101
 }
91 102
 

+ 58
- 92
Marlin/src/lcd/menu/menu_temperature.cpp Ver arquivo

@@ -66,95 +66,76 @@ void Temperature::lcd_preheat(const int16_t e, const int8_t indh, const int8_t i
66 66
   ui.return_to_status();
67 67
 }
68 68
 
69
-#if HAS_TEMP_HOTEND
70
-  inline void _preheat_end(const uint8_t m, const uint8_t e) { thermalManager.lcd_preheat(e, m, -1); }
69
+#if PREHEAT_COUNT
70
+
71
+  #if HAS_TEMP_HOTEND
72
+    inline void _preheat_end(const uint8_t m, const uint8_t e) { thermalManager.lcd_preheat(e, m, -1); }
73
+    #if HAS_HEATED_BED
74
+      inline void _preheat_both(const uint8_t m, const uint8_t e) { thermalManager.lcd_preheat(e, m, m); }
75
+    #endif
76
+  #endif
71 77
   #if HAS_HEATED_BED
72
-    inline void _preheat_both(const uint8_t m, const uint8_t e) { thermalManager.lcd_preheat(e, m, m); }
78
+    inline void _preheat_bed(const uint8_t m) { thermalManager.lcd_preheat(-1, -1, m); }
73 79
   #endif
74
-#endif
75
-#if HAS_HEATED_BED
76
-  inline void _preheat_bed(const uint8_t m) { thermalManager.lcd_preheat(-1, -1, m); }
77
-#endif
78
-
79
-#if HAS_TEMP_HOTEND || HAS_HEATED_BED
80 80
 
81 81
   #if HAS_TEMP_HOTEND && HAS_HEATED_BED
82 82
 
83 83
     // Indexed "Preheat ABC" and "Heat Bed" items
84 84
     #define PREHEAT_ITEMS(M,E) do{ \
85
-      ACTION_ITEM_N_P(E, msg_preheat_h[M], []{ _preheat_both(M, MenuItemBase::itemIndex); }); \
86
-      ACTION_ITEM_N_P(E, msg_preheat_end_e[M], []{ _preheat_end(M, MenuItemBase::itemIndex); }); \
85
+      ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_both(M, MenuItemBase::itemIndex); }); \
86
+      ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_END_E, []{ _preheat_end(M, MenuItemBase::itemIndex); }); \
87 87
     }while(0)
88 88
 
89 89
   #elif HAS_MULTI_HOTEND
90 90
 
91 91
     // No heated bed, so just indexed "Preheat ABC" items
92
-    #define PREHEAT_ITEMS(M,E) ACTION_ITEM_N_P(E, msg_preheat_h[M], []{ _preheat_end(M, MenuItemBase::itemIndex); })
92
+    #define PREHEAT_ITEMS(M,E) ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_end(M, MenuItemBase::itemIndex); })
93 93
 
94 94
   #endif
95 95
 
96
-  void menu_preheat_m(const uint8_t m) {
96
+  void do_preheat_end_m() { _preheat_end(editable.int8, 0); }
97 97
 
98
-    #if HOTENDS == 1
99
-      PGM_P msg_preheat[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1), GET_TEXT(MSG_PREHEAT_2), GET_TEXT(MSG_PREHEAT_3), GET_TEXT(MSG_PREHEAT_4), GET_TEXT(MSG_PREHEAT_5));
100
-      #if HAS_HEATED_BED
101
-        PGM_P msg_preheat_end[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_END), GET_TEXT(MSG_PREHEAT_2_END), GET_TEXT(MSG_PREHEAT_3_END), GET_TEXT(MSG_PREHEAT_4_END), GET_TEXT(MSG_PREHEAT_5_END));
102
-      #endif
103
-    #elif HAS_MULTI_HOTEND
104
-      PGM_P msg_preheat_all[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_ALL), GET_TEXT(MSG_PREHEAT_2_ALL), GET_TEXT(MSG_PREHEAT_3_ALL), GET_TEXT(MSG_PREHEAT_4_ALL), GET_TEXT(MSG_PREHEAT_5_ALL));
105
-    #endif
98
+  #if HAS_MULTI_HOTEND || HAS_HEATED_BED
106 99
 
107
-    #if HAS_TEMP_HOTEND && HAS_HEATED_BED && HAS_MULTI_HOTEND
108
-      PGM_P msg_preheat_end_e[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_END_E), GET_TEXT(MSG_PREHEAT_2_END_E), GET_TEXT(MSG_PREHEAT_3_END_E), GET_TEXT(MSG_PREHEAT_4_END_E), GET_TEXT(MSG_PREHEAT_5_END_E));
109
-    #endif
100
+    // Set editable.int8 to the Material index before entering this menu
101
+    // because MenuItemBase::itemIndex will be re-used by PREHEAT_ITEMS
102
+    void menu_preheat_m() {
103
+      const uint8_t m = editable.int8; // Don't re-use 'editable' in this menu
110 104
 
111
-    #if HAS_MULTI_HOTEND
112
-      PGM_P msg_preheat_h[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_H), GET_TEXT(MSG_PREHEAT_2_H), GET_TEXT(MSG_PREHEAT_3_H), GET_TEXT(MSG_PREHEAT_4_H), GET_TEXT(MSG_PREHEAT_5_H));
113
-    #endif
105
+      START_MENU();
106
+      BACK_ITEM(MSG_TEMPERATURE);
114 107
 
115
-    MenuItemBase::itemIndex = m;
108
+      #if HOTENDS == 1
116 109
 
117
-    START_MENU();
118
-    BACK_ITEM(MSG_TEMPERATURE);
110
+        #if HAS_HEATED_BED
111
+          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, []{ _preheat_both(editable.int8, 0); });
112
+          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_END, do_preheat_end_m);
113
+        #else
114
+          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
115
+        #endif
119 116
 
120
-    #if HOTENDS == 1
117
+      #elif HAS_MULTI_HOTEND
121 118
 
122
-      #if HAS_HEATED_BED
123
-        ACTION_ITEM_P(msg_preheat[m], []{ _preheat_both(MenuItemBase::itemIndex, 0); });
124
-        ACTION_ITEM_P(msg_preheat_end[m], []{ _preheat_end(MenuItemBase::itemIndex, 0); });
125
-      #else
126
-        ACTION_ITEM_P(msg_preheat[m], []{ _preheat_end(MenuItemBase::itemIndex, 0); });
127
-      #endif
119
+        HOTEND_LOOP() PREHEAT_ITEMS(editable.int8, e);
120
+        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_ALL, []() {
121
+          TERN_(HAS_HEATED_BED, []{ _preheat_bed(editable.int8); });
122
+          HOTEND_LOOP() thermalManager.setTargetHotend(ui.material_preset[editable.int8].hotend_temp, e);
123
+        });
128 124
 
129
-    #elif HAS_MULTI_HOTEND
125
+      #endif
130 126
 
131
-      LOOP_S_L_N(n, 0, HOTENDS) PREHEAT_ITEMS(MenuItemBase::itemIndex, n);
132
-      ACTION_ITEM_P(msg_preheat_all[m], []() {
133
-        TERN_(HAS_HEATED_BED, _preheat_bed(MenuItemBase::itemIndex));
134
-        HOTEND_LOOP() thermalManager.setTargetHotend(ui.material_preset[MenuItemBase::itemIndex].hotend_temp, e);
135
-      });
127
+      #if HAS_HEATED_BED
128
+        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_BEDONLY, []{ _preheat_bed(editable.int8); });
129
+      #endif
136 130
 
137
-    #endif
131
+      END_MENU();
132
+    }
138 133
 
139
-    #if HAS_HEATED_BED
140
-      PGM_P msg_preheat_bed[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_BEDONLY), GET_TEXT(MSG_PREHEAT_2_BEDONLY), GET_TEXT(MSG_PREHEAT_3_BEDONLY), GET_TEXT(MSG_PREHEAT_4_BEDONLY), GET_TEXT(MSG_PREHEAT_5_BEDONLY));
141
-      ACTION_ITEM_P(msg_preheat_bed[m], []{ _preheat_bed(MenuItemBase::itemIndex); });
142
-    #endif
134
+  #endif // HAS_MULTI_HOTEND || HAS_HEATED_BED
143 135
 
144
-    END_MENU();
145
-  }
136
+#endif // PREHEAT_COUNT
146 137
 
147
-  void menu_preheat_m1() { menu_preheat_m(0); }
148
-  void menu_preheat_m2() { menu_preheat_m(1); }
149
-  #if PREHEAT_COUNT >= 3
150
-    void menu_preheat_m3() { menu_preheat_m(2); }
151
-    #if PREHEAT_COUNT >= 4
152
-      void menu_preheat_m4() { menu_preheat_m(3); }
153
-      #if PREHEAT_COUNT >= 5
154
-        void menu_preheat_m5() { menu_preheat_m(4); }
155
-      #endif
156
-    #endif
157
-  #endif
138
+#if HAS_TEMP_HOTEND || HAS_HEATED_BED
158 139
 
159 140
   void lcd_cooldown() {
160 141
     thermalManager.zero_fan_speeds();
@@ -165,9 +146,11 @@ void Temperature::lcd_preheat(const int16_t e, const int8_t indh, const int8_t i
165 146
 #endif // HAS_TEMP_HOTEND || HAS_HEATED_BED
166 147
 
167 148
 void menu_temperature() {
168
-  #if HAS_TEMP_HOTEND
149
+  #if HAS_TEMP_HOTEND || HAS_HEATED_BED
169 150
     bool has_heat = false;
170
-    HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
151
+    #if HAS_TEMP_HOTEND
152
+      HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
153
+    #endif
171 154
   #endif
172 155
 
173 156
   START_MENU();
@@ -279,44 +262,27 @@ void menu_temperature() {
279 262
 
280 263
   #endif // HAS_FAN
281 264
 
282
-  #if HAS_TEMP_HOTEND
283
-
265
+  #if PREHEAT_COUNT
284 266
     //
285
-    // Preheat for Material 1 and 2
267
+    // Preheat for Materials 1 to 5
286 268
     //
287
-    #if HOTENDS > 1 || HAS_HEATED_BED
288
-      SUBMENU(MSG_PREHEAT_1, menu_preheat_m1);
289
-      SUBMENU(MSG_PREHEAT_2, menu_preheat_m2);
290
-      #if PREHEAT_COUNT >= 3
291
-        SUBMENU(MSG_PREHEAT_3, menu_preheat_m3);
292
-        #if PREHEAT_COUNT >= 4
293
-          SUBMENU(MSG_PREHEAT_4, menu_preheat_m4);
294
-          #if PREHEAT_COUNT >= 5
295
-            SUBMENU(MSG_PREHEAT_5, menu_preheat_m5);
296
-          #endif
297
-        #endif
298
-      #endif
299
-    #else
300
-      ACTION_ITEM(MSG_PREHEAT_1, []{ _preheat_end(0, 0); });
301
-      ACTION_ITEM(MSG_PREHEAT_2, []{ _preheat_end(1, 0); });
302
-      #if PREHEAT_COUNT >= 3
303
-        ACTION_ITEM(MSG_PREHEAT_3, []{ _preheat_end(2, 0); });
304
-        #if PREHEAT_COUNT >= 3
305
-          ACTION_ITEM(MSG_PREHEAT_4, []{ _preheat_end(3, 0); });
306
-          #if PREHEAT_COUNT >= 3
307
-            ACTION_ITEM(MSG_PREHEAT_5, []{ _preheat_end(4, 0); });
308
-          #endif
309
-        #endif
269
+    LOOP_L_N(m, PREHEAT_COUNT) {
270
+      editable.int8 = m;
271
+      #if HOTENDS > 1 || HAS_HEATED_BED
272
+        SUBMENU_S(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
273
+      #else
274
+        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
310 275
       #endif
311
-    #endif
276
+    }
277
+  #endif
312 278
 
279
+  #if HAS_TEMP_HOTEND || HAS_HEATED_BED
313 280
     //
314 281
     // Cooldown
315 282
     //
316 283
     if (TERN0(HAS_HEATED_BED, thermalManager.temp_bed.target)) has_heat = true;
317 284
     if (has_heat) ACTION_ITEM(MSG_COOLDOWN, lcd_cooldown);
318
-
319
-  #endif // HAS_TEMP_HOTEND
285
+  #endif
320 286
 
321 287
   END_MENU();
322 288
 }

+ 55
- 42
Marlin/src/lcd/menu/menu_ubl.cpp Ver arquivo

@@ -196,21 +196,36 @@ void _lcd_ubl_edit_mesh() {
196 196
    * UBL Validate Mesh submenu
197 197
    *
198 198
    * << UBL Tools
199
-   *    Mesh Validation with Material 1
200
-   *    Mesh Validation with Material 2
199
+   *    Mesh Validation with Material 1 up to 5
201 200
    *    Validate Custom Mesh
202 201
    * << Info Screen
203 202
    */
204 203
   void _lcd_ubl_validate_mesh() {
205 204
     START_MENU();
206 205
     BACK_ITEM(MSG_UBL_TOOLS);
207
-    #if HAS_HEATED_BED
208
-      GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_1_TEMP_BED) " H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
209
-      GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_2_TEMP_BED) " H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
210
-    #else
211
-      GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
212
-      GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
213
-    #endif
206
+    #if PREHEAT_COUNT
207
+      #if HAS_HEATED_BED
208
+        #define VALIDATE_MESH_GCODE_ITEM(M) \
209
+          GCODES_ITEM_N_S(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, PSTR("G28\nG26 C P I" STRINGIFY(M)))
210
+      #else
211
+        #define VALIDATE_MESH_GCODE_ITEM(M) \
212
+          GCODES_ITEM_N_S(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, PSTR("G28\nG26 C P B0 I" STRINGIFY(M)))
213
+      #endif
214
+
215
+      VALIDATE_MESH_GCODE_ITEM(0);
216
+      #if PREHEAT_COUNT > 1
217
+        VALIDATE_MESH_GCODE_ITEM(1);
218
+        #if PREHEAT_COUNT > 2
219
+          VALIDATE_MESH_GCODE_ITEM(2);
220
+          #if PREHEAT_COUNT > 3
221
+            VALIDATE_MESH_GCODE_ITEM(3);
222
+            #if PREHEAT_COUNT > 4
223
+              VALIDATE_MESH_GCODE_ITEM(4);
224
+            #endif
225
+          #endif
226
+        #endif
227
+      #endif
228
+    #endif // PREHEAT_COUNT
214 229
     ACTION_ITEM(MSG_UBL_VALIDATE_CUSTOM_MESH, _lcd_ubl_validate_custom_mesh);
215 230
     ACTION_ITEM(MSG_INFO_SCREEN, ui.return_to_status);
216 231
     END_MENU();
@@ -292,8 +307,7 @@ void _lcd_ubl_invalidate() {
292 307
  * UBL Build Mesh submenu
293 308
  *
294 309
  * << UBL Tools
295
- *    Build Mesh with Material 1
296
- *    Build Mesh with Material 2
310
+ *    Build Mesh with Material 1 up to 5
297 311
  *  - Build Custom Mesh >>
298 312
  *    Build Cold Mesh
299 313
  *  - Fill-in Mesh >>
@@ -305,37 +319,36 @@ void _lcd_ubl_invalidate() {
305 319
 void _lcd_ubl_build_mesh() {
306 320
   START_MENU();
307 321
   BACK_ITEM(MSG_UBL_TOOLS);
308
-  #if HAS_HEATED_BED
309
-    GCODES_ITEM(MSG_UBL_BUILD_MESH_M1, PSTR(
310
-      "G28\n"
311
-      "M190 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\n"
312
-      "M109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\n"
313
-      "G29 P1\n"
314
-      "M104 S0\n"
315
-      "M140 S0"
316
-    ));
317
-    GCODES_ITEM(MSG_UBL_BUILD_MESH_M2, PSTR(
318
-      "G28\n"
319
-      "M190 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\n"
320
-      "M109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\n"
321
-      "G29 P1\n"
322
-      "M104 S0\n"
323
-      "M140 S0"
324
-    ));
325
-  #else
326
-    GCODES_ITEM(MSG_UBL_BUILD_MESH_M1, PSTR(
327
-      "G28\n"
328
-      "M109 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) "\n"
329
-      "G29 P1\n"
330
-      "M104 S0"
331
-    ));
332
-    GCODES_ITEM(MSG_UBL_BUILD_MESH_M2, PSTR(
333
-      "G28\n"
334
-      "M109 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) "\n"
335
-      "G29 P1\n"
336
-      "M104 S0"
337
-    ));
338
-  #endif
322
+  #if PREHEAT_COUNT
323
+    #if HAS_HEATED_BED
324
+      #define PREHEAT_BED_GCODE(M) "M190 I" STRINGIFY(M) "\n"
325
+    #else
326
+      #define PREHEAT_BED_GCODE(M) ""
327
+    #endif
328
+    #define BUILD_MESH_GCODE_ITEM(M) GCODES_ITEM_S(ui.get_preheat_label(M), MSG_UBL_BUILD_MESH_M, \
329
+      PSTR( \
330
+        "G28\n" \
331
+        PREHEAT_BED_GCODE(M) \
332
+        "M109 I" STRINGIFY(M) "\n" \
333
+        "G29 P1\n" \
334
+        "M104 S0\n" \
335
+        "M140 S0" \
336
+      ) )
337
+    BUILD_MESH_GCODE_ITEM(0);
338
+    #if PREHEAT_COUNT > 1
339
+      BUILD_MESH_GCODE_ITEM(1);
340
+      #if PREHEAT_COUNT > 2
341
+        BUILD_MESH_GCODE_ITEM(2);
342
+        #if PREHEAT_COUNT > 3
343
+          BUILD_MESH_GCODE_ITEM(3);
344
+          #if PREHEAT_COUNT > 4
345
+            BUILD_MESH_GCODE_ITEM(4);
346
+          #endif
347
+        #endif
348
+      #endif
349
+    #endif
350
+  #endif // PREHEAT_COUNT
351
+
339 352
   SUBMENU(MSG_UBL_BUILD_CUSTOM_MESH, _lcd_ubl_custom_mesh);
340 353
   GCODES_ITEM(MSG_UBL_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
341 354
   SUBMENU(MSG_UBL_FILLIN_MESH, _menu_ubl_fillin);

+ 27
- 4
Marlin/src/lcd/ultralcd.cpp Ver arquivo

@@ -86,10 +86,6 @@ MarlinUI ui;
86 86
   }
87 87
 #endif
88 88
 
89
-#if PREHEAT_COUNT
90
-  preheat_t MarlinUI::material_preset[PREHEAT_COUNT];  // Initialized by settings.load()
91
-#endif
92
-
93 89
 #if HAS_SPI_LCD
94 90
 
95 91
 #if HAS_GRAPHICAL_LCD
@@ -153,6 +149,33 @@ millis_t MarlinUI::next_button_update_ms; // = 0
153 149
   volatile int8_t encoderDiff; // Updated in update_buttons, added to encoderPosition every LCD update
154 150
 #endif
155 151
 
152
+#if PREHEAT_COUNT
153
+  preheat_t MarlinUI::material_preset[PREHEAT_COUNT];  // Initialized by settings.load()
154
+
155
+  PGM_P MarlinUI::get_preheat_label(const uint8_t m) {
156
+    #ifdef PREHEAT_1_LABEL
157
+      static PGMSTR(preheat_0_label, PREHEAT_1_LABEL);
158
+    #endif
159
+    #ifdef PREHEAT_2_LABEL
160
+      static PGMSTR(preheat_1_label, PREHEAT_2_LABEL);
161
+    #endif
162
+    #ifdef PREHEAT_3_LABEL
163
+      static PGMSTR(preheat_2_label, PREHEAT_3_LABEL);
164
+    #endif
165
+    #ifdef PREHEAT_4_LABEL
166
+      static PGMSTR(preheat_3_label, PREHEAT_4_LABEL);
167
+    #endif
168
+    #ifdef PREHEAT_5_LABEL
169
+      static PGMSTR(preheat_4_label, PREHEAT_5_LABEL);
170
+    #endif
171
+
172
+    #define _PLBL(N) preheat_##N##_label,
173
+    static PGM_P const preheat_labels[PREHEAT_COUNT] PROGMEM = { REPEAT(PREHEAT_COUNT, _PLBL) };
174
+
175
+    return (PGM_P)pgm_read_ptr(&preheat_labels[m]);
176
+  }
177
+#endif
178
+
156 179
 #if ENABLED(SDSUPPORT)
157 180
 
158 181
   #include "../sd/cardreader.h"

+ 1
- 8
Marlin/src/lcd/ultralcd.h Ver arquivo

@@ -78,14 +78,6 @@
78 78
 
79 79
   #if HAS_LCD_MENU
80 80
 
81
-    #if HAS_GRAPHICAL_LCD
82
-      #define SETCURSOR(col, row) lcd_moveto(col * (MENU_FONT_WIDTH), (row + 1) * (MENU_FONT_HEIGHT))
83
-      #define SETCURSOR_RJ(len, row) lcd_moveto(LCD_PIXEL_WIDTH - (len) * (MENU_FONT_WIDTH), (row + 1) * (MENU_FONT_HEIGHT))
84
-    #else
85
-      #define SETCURSOR(col, row) lcd_moveto(col, row)
86
-      #define SETCURSOR_RJ(len, row) lcd_moveto(LCD_WIDTH - (len), row)
87
-    #endif
88
-
89 81
     #include "lcdprint.h"
90 82
 
91 83
     void _wrap_string(uint8_t &col, uint8_t &row, const char * const string, read_byte_cb_t cb_read_byte, const bool wordwrap=false);
@@ -505,6 +497,7 @@ public:
505 497
 
506 498
   #if PREHEAT_COUNT
507 499
     static preheat_t material_preset[PREHEAT_COUNT];
500
+    static PGM_P get_preheat_label(const uint8_t m);
508 501
   #endif
509 502
 
510 503
   #if HAS_LCD_MENU

Carregando…
Cancelar
Salvar