Procházet zdrojové kódy

Multi-language support (#15453)

Marcio Teixeira před 4 roky
rodič
revize
6a865a6146
100 změnil soubory, kde provedl 11493 přidání a 11154 odebrání
  1. 5
    4
      Marlin/src/Marlin.cpp
  2. 1
    1
      Marlin/src/Marlin.h
  3. 31
    24
      Marlin/src/core/language.h
  4. 0
    0
      Marlin/src/core/multi_language.cpp
  5. 79
    0
      Marlin/src/core/multi_language.h
  6. 10
    10
      Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
  7. 13
    14
      Marlin/src/feature/pause.cpp
  8. 1
    1
      Marlin/src/feature/power_loss_recovery.cpp
  9. 3
    3
      Marlin/src/feature/prusa_MMU2/mmu2.cpp
  10. 1
    1
      Marlin/src/feature/tmc_util.cpp
  11. 7
    7
      Marlin/src/gcode/bedlevel/G26.cpp
  12. 2
    2
      Marlin/src/gcode/bedlevel/abl/G29.cpp
  13. 2
    2
      Marlin/src/gcode/calibrate/G28.cpp
  14. 2
    2
      Marlin/src/gcode/calibrate/M48.cpp
  15. 5
    5
      Marlin/src/gcode/calibrate/M852.cpp
  16. 1
    1
      Marlin/src/gcode/config/M43.cpp
  17. 1
    1
      Marlin/src/gcode/control/M108_M112_M410.cpp
  18. 1
    1
      Marlin/src/gcode/control/M80_M81.cpp
  19. 1
    1
      Marlin/src/gcode/geometry/M206_M428.cpp
  20. 1
    1
      Marlin/src/gcode/host/M16.cpp
  21. 5
    2
      Marlin/src/gcode/lcd/M0_M1.cpp
  22. 1
    1
      Marlin/src/gcode/temperature/M140_M190.cpp
  23. 1
    1
      Marlin/src/gcode/temperature/M141_M191.cpp
  24. 2
    7
      Marlin/src/inc/Conditionals_post.h
  25. 3
    3
      Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
  26. 4
    4
      Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
  27. 10
    10
      Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp
  28. 15
    15
      Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp
  29. 29
    29
      Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h
  30. 0
    5
      Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h
  31. 0
    64
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h
  32. 0
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h
  33. 0
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h
  34. 0
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h
  35. 6
    4
      Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp
  36. 2
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp
  37. 2
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp
  38. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp
  39. 5
    5
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp
  40. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h
  41. 8
    2
      Marlin/src/lcd/extensible_ui/ui_api.cpp
  42. 2
    1
      Marlin/src/lcd/extensible_ui/ui_api.h
  43. 3
    3
      Marlin/src/lcd/extui_dgus_lcd.cpp
  44. 1
    1
      Marlin/src/lcd/extui_example.cpp
  45. 4
    2
      Marlin/src/lcd/extui_malyan_lcd.cpp
  46. 252
    214
      Marlin/src/lcd/language/language_an.h
  47. 173
    115
      Marlin/src/lcd/language/language_bg.h
  48. 251
    224
      Marlin/src/lcd/language/language_ca.h
  49. 562
    505
      Marlin/src/lcd/language/language_cz.h
  50. 200
    211
      Marlin/src/lcd/language/language_da.h
  51. 638
    531
      Marlin/src/lcd/language/language_de.h
  52. 220
    157
      Marlin/src/lcd/language/language_el.h
  53. 249
    156
      Marlin/src/lcd/language/language_el_gr.h
  54. 659
    1538
      Marlin/src/lcd/language/language_en.h
  55. 590
    520
      Marlin/src/lcd/language/language_es.h
  56. 355
    351
      Marlin/src/lcd/language/language_eu.h
  57. 131
    137
      Marlin/src/lcd/language/language_fi.h
  58. 568
    515
      Marlin/src/lcd/language/language_fr.h
  59. 235
    216
      Marlin/src/lcd/language/language_gl.h
  60. 172
    214
      Marlin/src/lcd/language/language_hr.h
  61. 624
    531
      Marlin/src/lcd/language/language_it.h
  62. 274
    214
      Marlin/src/lcd/language/language_jp_kana.h
  63. 101
    381
      Marlin/src/lcd/language/language_ko_KR.h
  64. 261
    243
      Marlin/src/lcd/language/language_nl.h
  65. 252
    217
      Marlin/src/lcd/language/language_pl.h
  66. 180
    153
      Marlin/src/lcd/language/language_pt.h
  67. 448
    400
      Marlin/src/lcd/language/language_pt_br.h
  68. 518
    408
      Marlin/src/lcd/language/language_ru.h
  69. 595
    535
      Marlin/src/lcd/language/language_sk.h
  70. 142
    111
      Marlin/src/lcd/language/language_test.h
  71. 478
    396
      Marlin/src/lcd/language/language_tr.h
  72. 293
    202
      Marlin/src/lcd/language/language_uk.h
  73. 509
    401
      Marlin/src/lcd/language/language_vi.h
  74. 450
    344
      Marlin/src/lcd/language/language_zh_CN.h
  75. 451
    344
      Marlin/src/lcd/language/language_zh_TW.h
  76. 5
    6
      Marlin/src/lcd/menu/menu.cpp
  77. 31
    20
      Marlin/src/lcd/menu/menu.h
  78. 83
    44
      Marlin/src/lcd/menu/menu_advanced.cpp
  79. 1
    1
      Marlin/src/lcd/menu/menu_backlash.cpp
  80. 2
    2
      Marlin/src/lcd/menu/menu_bed_corners.cpp
  81. 5
    5
      Marlin/src/lcd/menu/menu_bed_leveling.cpp
  82. 5
    5
      Marlin/src/lcd/menu/menu_configuration.cpp
  83. 5
    5
      Marlin/src/lcd/menu/menu_custom.cpp
  84. 3
    3
      Marlin/src/lcd/menu/menu_delta_calibrate.cpp
  85. 64
    160
      Marlin/src/lcd/menu/menu_filament.cpp
  86. 59
    54
      Marlin/src/lcd/menu/menu_info.cpp
  87. 4
    4
      Marlin/src/lcd/menu/menu_main.cpp
  88. 4
    4
      Marlin/src/lcd/menu/menu_media.cpp
  89. 13
    9
      Marlin/src/lcd/menu/menu_mixer.cpp
  90. 4
    4
      Marlin/src/lcd/menu/menu_mmu2.cpp
  91. 26
    28
      Marlin/src/lcd/menu/menu_motion.cpp
  92. 6
    6
      Marlin/src/lcd/menu/menu_service.cpp
  93. 10
    10
      Marlin/src/lcd/menu/menu_temperature.cpp
  94. 4
    4
      Marlin/src/lcd/menu/menu_tmc.cpp
  95. 20
    12
      Marlin/src/lcd/menu/menu_tune.cpp
  96. 11
    11
      Marlin/src/lcd/menu/menu_ubl.cpp
  97. 17
    18
      Marlin/src/lcd/ultralcd.cpp
  98. 6
    3
      Marlin/src/lcd/ultralcd.h
  99. 2
    2
      Marlin/src/module/endstops.cpp
  100. 0
    0
      Marlin/src/module/motion.cpp

+ 5
- 4
Marlin/src/Marlin.cpp Zobrazit soubor

@@ -324,7 +324,7 @@ void disable_all_steppers() {
324 324
       #ifdef ACTION_ON_CANCEL
325 325
         host_action_cancel();
326 326
       #endif
327
-      kill(PSTR(MSG_ERR_PROBING_FAILED));
327
+      kill(GET_TEXT(MSG_LCD_PROBING_FAILED));
328 328
     #endif
329 329
   }
330 330
 
@@ -686,15 +686,16 @@ void idle(
686 686
  * Kill all activity and lock the machine.
687 687
  * After this the machine will need to be reset.
688 688
  */
689
-void kill(PGM_P const lcd_msg/*=nullptr*/, const bool steppers_off/*=false*/) {
689
+void kill(PGM_P const lcd_error/*=nullptr*/, PGM_P const lcd_component/*=nullptr*/, const bool steppers_off/*=false*/) {
690 690
   thermalManager.disable_all_heaters();
691 691
 
692 692
   SERIAL_ERROR_MSG(MSG_ERR_KILLED);
693 693
 
694 694
   #if HAS_DISPLAY
695
-    ui.kill_screen(lcd_msg ?: PSTR(MSG_KILLED));
695
+    ui.kill_screen(lcd_error ?: GET_TEXT(MSG_KILLED), lcd_component);
696 696
   #else
697
-    UNUSED(lcd_msg);
697
+    UNUSED(lcd_error);
698
+    UNUSED(lcd_component);
698 699
   #endif
699 700
 
700 701
   #ifdef ACTION_ON_KILL

+ 1
- 1
Marlin/src/Marlin.h Zobrazit soubor

@@ -322,7 +322,7 @@ void disable_e_stepper(const uint8_t e);
322 322
 void disable_e_steppers();
323 323
 void disable_all_steppers();
324 324
 
325
-void kill(PGM_P const lcd_msg=nullptr, const bool steppers_off=false);
325
+void kill(PGM_P const lcd_error=nullptr, PGM_P const lcd_component=nullptr, const bool steppers_off=false);
326 326
 void minkill(const bool steppers_off=false);
327 327
 
328 328
 void quickstop_stepper();

+ 31
- 24
Marlin/src/core/language.h Zobrazit soubor

@@ -97,7 +97,20 @@
97 97
 //  #define STRING_SPLASH_LINE3 WEBSITE_URL
98 98
 //#endif
99 99
 
100
-#if HAS_GRAPHICAL_LCD
100
+#if HAS_CHARACTER_LCD
101
+
102
+  // Custom characters defined in the first 8 characters of the LCD
103
+  #define LCD_STR_BEDTEMP     "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
104
+  #define LCD_STR_DEGREE      "\x01"
105
+  #define LCD_STR_THERMOMETER "\x02" // Still used with string concatenation
106
+  #define LCD_STR_UPLEVEL     "\x03"
107
+  #define LCD_STR_REFRESH     "\x04"
108
+  #define LCD_STR_FOLDER      "\x05"
109
+  #define LCD_STR_FEEDRATE    "\x06"
110
+  #define LCD_STR_CLOCK       "\x07"
111
+  #define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
112
+
113
+#else
101 114
   //
102 115
   // Custom characters from Marlin_symbols.fon which was merged into ISO10646-0-3.bdf
103 116
   // \x00 intentionally skipped to avoid problems in strings
@@ -120,19 +133,6 @@
120 133
   #define LCD_STR_FILAM_DIA   "\xF8"
121 134
   #define LCD_STR_FILAM_MUL   "\xA4"
122 135
 
123
-#elif HAS_CHARACTER_LCD
124
-
125
-  // Custom characters defined in the first 8 characters of the LCD
126
-  #define LCD_STR_BEDTEMP     "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
127
-  #define LCD_STR_DEGREE      "\x01"
128
-  #define LCD_STR_THERMOMETER "\x02" // Still used with string concatenation
129
-  #define LCD_STR_UPLEVEL     "\x03"
130
-  #define LCD_STR_REFRESH     "\x04"
131
-  #define LCD_STR_FOLDER      "\x05"
132
-  #define LCD_STR_FEEDRATE    "\x06"
133
-  #define LCD_STR_CLOCK       "\x07"
134
-  #define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
135
-
136 136
 #endif
137 137
 
138 138
 // Common LCD messages
@@ -243,10 +243,9 @@
243 243
 #define MSG_ERR_COLD_EXTRUDE_STOP           " cold extrusion prevented"
244 244
 #define MSG_ERR_LONG_EXTRUDE_STOP           " too long extrusion prevented"
245 245
 #define MSG_ERR_HOTEND_TOO_COLD             "Hotend too cold"
246
+#define MSG_ERR_Z_HOMING_SER                "Home XY first"
247
+#define MSG_ERR_EEPROM_WRITE                "Error writing to EEPROM!"
246 248
 
247
-#define MSG_FILAMENT_CHANGE_HEAT            "Press button (or M108) to heat nozzle"
248
-#define MSG_FILAMENT_CHANGE_INSERT          "Insert filament and press button (or M108)"
249
-#define MSG_FILAMENT_CHANGE_WAIT            "Press button (or M108) to resume"
250 249
 #define MSG_FILAMENT_CHANGE_HEAT_LCD        "Press button to heat nozzle"
251 250
 #define MSG_FILAMENT_CHANGE_INSERT_LCD      "Insert filament and press button"
252 251
 #define MSG_FILAMENT_CHANGE_WAIT_LCD        "Press button to resume"
@@ -254,8 +253,6 @@
254 253
 #define MSG_FILAMENT_CHANGE_INSERT_M108     "Insert filament and send M108"
255 254
 #define MSG_FILAMENT_CHANGE_WAIT_M108       "Send M108 to resume"
256 255
 
257
-#define MSG_ERR_EEPROM_WRITE                "Error writing to EEPROM!"
258
-
259 256
 #define MSG_STOP_BLTOUCH                    "STOP called because of BLTouch error - restart with M999"
260 257
 #define MSG_STOP_UNHOMED                    "STOP called because of unhomed error - restart with M999"
261 258
 #define MSG_KILL_INACTIVE_TIME              "KILL caused by too much inactive time - current command: "
@@ -298,6 +295,8 @@
298 295
 #define MSG_T_THERMAL_RUNAWAY               "Thermal Runaway"
299 296
 #define MSG_T_MAXTEMP                       "MAXTEMP triggered"
300 297
 #define MSG_T_MINTEMP                       "MINTEMP triggered"
298
+#define MSG_ERR_PROBING_FAILED              "Probing Failed"
299
+#define MSG_ZPROBE_OUT_SER                  "Z Probe Past Bed"
301 300
 
302 301
 // Debug
303 302
 #define MSG_DEBUG_PREFIX                    "DEBUG:"
@@ -313,11 +312,9 @@
313 312
 
314 313
 #define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
315 314
 #define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
316
-#define INCLUDE_LANGUAGE_DATA LANGUAGE_DATA_INCL(LCD_LANGUAGE)
317 315
 
318 316
 #define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
319 317
 #define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
320
-#define INCLUDE_LANGUAGE LANGUAGE_INCL(LCD_LANGUAGE)
321 318
 
322 319
 // Never translate these strings
323 320
 #define MSG_X "X"
@@ -338,6 +335,11 @@
338 335
 #define MSG_Z2 "Z2"
339 336
 #define MSG_Z3 "Z3"
340 337
 
338
+#define LCD_STR_A MSG_A
339
+#define LCD_STR_B MSG_B
340
+#define LCD_STR_C MSG_C
341
+#define LCD_STR_E MSG_E
342
+
341 343
 /**
342 344
  * Tool indexes for LCD display only
343 345
  *
@@ -370,7 +372,14 @@
370 372
 #define LCD_STR_E4 "E" LCD_STR_N4
371 373
 #define LCD_STR_E5 "E" LCD_STR_N5
372 374
 
373
-#include INCLUDE_LANGUAGE
375
+#include "multi_language.h"   // Allow multiple languages
376
+
377
+#include "../lcd/language/language_en.h"
378
+#include LANGUAGE_INCL(LCD_LANGUAGE)
379
+#include LANGUAGE_INCL(LCD_LANGUAGE_2)
380
+#include LANGUAGE_INCL(LCD_LANGUAGE_3)
381
+#include LANGUAGE_INCL(LCD_LANGUAGE_4)
382
+#include LANGUAGE_INCL(LCD_LANGUAGE_5)
374 383
 
375 384
 #if NONE(DISPLAY_CHARSET_ISO10646_1, \
376 385
          DISPLAY_CHARSET_ISO10646_5, \
@@ -383,5 +392,3 @@
383 392
          DISPLAY_CHARSET_ISO10646_SK)
384 393
   #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
385 394
 #endif
386
-
387
-#include "../lcd/language/language_en.h"

+ 0
- 0
Marlin/src/core/multi_language.cpp Zobrazit soubor


+ 79
- 0
Marlin/src/core/multi_language.h Zobrazit soubor

@@ -0,0 +1,79 @@
1
+/********************
2
+ * multi_language.h *
3
+ ********************/
4
+
5
+/****************************************************************************
6
+ *   Written By Marcio Teixeira 2019 - Aleph Objects, Inc.                  *
7
+ *                                                                          *
8
+ *   This program is free software: you can redistribute it and/or modify   *
9
+ *   it under the terms of the GNU General Public License as published by   *
10
+ *   the Free Software Foundation, either version 3 of the License, or      *
11
+ *   (at your option) any later version.                                    *
12
+ *                                                                          *
13
+ *   This program is distributed in the hope that it will be useful,        *
14
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
15
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
16
+ *   GNU General Public License for more details.                           *
17
+ *                                                                          *
18
+ *   To view a copy of the GNU General Public License, go to the following  *
19
+ *   location: <http://www.gnu.org/licenses/>.                              *
20
+ ****************************************************************************/
21
+#pragma once
22
+
23
+typedef const char Language_Str[];
24
+
25
+#if defined(LCD_LANGUAGE_5)
26
+  #define NUM_LANGUAGES 5
27
+#elif defined(LCD_LANGUAGE_4)
28
+  #define NUM_LANGUAGES 4
29
+#elif defined(LCD_LANGUAGE_3)
30
+  #define NUM_LANGUAGES 3
31
+#elif defined(LCD_LANGUAGE_2)
32
+  #define NUM_LANGUAGES 2
33
+#else
34
+  #define NUM_LANGUAGES 1
35
+#endif
36
+
37
+// Setting the unused languages equal to each other allows
38
+// the compiler to optimize away the conditionals
39
+
40
+#ifndef LCD_LANGUAGE_2
41
+  #define LCD_LANGUAGE_2 LCD_LANGUAGE
42
+#endif
43
+
44
+#ifndef LCD_LANGUAGE_3
45
+  #define LCD_LANGUAGE_3 LCD_LANGUAGE_2
46
+#endif
47
+
48
+#ifndef LCD_LANGUAGE_4
49
+  #define LCD_LANGUAGE_4 LCD_LANGUAGE_3
50
+#endif
51
+
52
+#ifndef LCD_LANGUAGE_5
53
+  #define LCD_LANGUAGE_5 LCD_LANGUAGE_4
54
+#endif
55
+
56
+#define _GET_LANG(LANG) Language_##LANG
57
+#define GET_LANG(LANG) _GET_LANG(LANG)
58
+
59
+#if NUM_LANGUAGES > 1
60
+  extern uint8_t lang;
61
+  #define GET_TEXT(MSG) ( \
62
+    lang == 0 ? GET_LANG(LCD_LANGUAGE)::MSG : \
63
+    lang == 1 ? GET_LANG(LCD_LANGUAGE_2)::MSG : \
64
+    lang == 2 ? GET_LANG(LCD_LANGUAGE_3)::MSG : \
65
+    lang == 3 ? GET_LANG(LCD_LANGUAGE_4)::MSG : \
66
+                GET_LANG(LCD_LANGUAGE_5)::MSG \
67
+    )
68
+  #define MAX_LANG_CHARSIZE max(GET_LANG(LCD_LANGUAGE)::CHARSIZE, \
69
+                                GET_LANG(LCD_LANGUAGE_2)::CHARSIZE, \
70
+                                GET_LANG(LCD_LANGUAGE_3)::CHARSIZE, \
71
+                                GET_LANG(LCD_LANGUAGE_4)::CHARSIZE, \
72
+                                GET_LANG(LCD_LANGUAGE_5)::CHARSIZE)
73
+#else
74
+  #define GET_TEXT(MSG) GET_LANG(LCD_LANGUAGE)::MSG
75
+  #define MAX_LANG_CHARSIZE GET_LANG(LCD_LANGUAGE)::CHARSIZE
76
+#endif
77
+#define GET_TEXT_F(MSG) (const __FlashStringHelper*)GET_TEXT(MSG)
78
+
79
+#define MSG_CONCAT(A,B) pgm_p_pair_t(GET_TEXT(A),GET_TEXT(B))

+ 10
- 10
Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp Zobrazit soubor

@@ -757,7 +757,7 @@
757 757
         const int point_num = (GRID_MAX_POINTS) - count + 1;
758 758
         SERIAL_ECHOLNPAIR("\nProbing mesh point ", point_num, "/", int(GRID_MAX_POINTS), ".\n");
759 759
         #if HAS_DISPLAY
760
-          ui.status_printf_P(0, PSTR(MSG_PROBING_MESH " %i/%i"), point_num, int(GRID_MAX_POINTS));
760
+          ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_MESH), point_num, int(GRID_MAX_POINTS));
761 761
         #endif
762 762
 
763 763
         #if HAS_LCD_MENU
@@ -921,7 +921,7 @@
921 921
 
922 922
         if (do_ubl_mesh_map) display_map(g29_map_type);  // show user where we're probing
923 923
 
924
-        serialprintPGM(parser.seen('B') ? PSTR(MSG_UBL_BC_INSERT) : PSTR(MSG_UBL_BC_INSERT2));
924
+        serialprintPGM(parser.seen('B') ? GET_TEXT(MSG_UBL_BC_INSERT) : GET_TEXT(MSG_UBL_BC_INSERT2));
925 925
 
926 926
         const float z_step = 0.01f;                         // existing behavior: 0.01mm per click, occasionally step
927 927
         //const float z_step = planner.steps_to_mm[Z_AXIS]; // approx one step each click
@@ -959,7 +959,7 @@
959 959
     void abort_fine_tune() {
960 960
       ui.return_to_status();
961 961
       do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
962
-      set_message_with_feedback(PSTR(MSG_EDITING_STOPPED));
962
+      set_message_with_feedback(GET_TEXT(MSG_EDITING_STOPPED));
963 963
     }
964 964
 
965 965
     void unified_bed_leveling::fine_tune_mesh(const xy_pos_t &pos, const bool do_ubl_mesh_map) {
@@ -1072,7 +1072,7 @@
1072 1072
     bool err_flag = false;
1073 1073
 
1074 1074
     #if HAS_LCD_MENU
1075
-      set_message_with_feedback(PSTR(MSG_UBL_DOING_G29));
1075
+      set_message_with_feedback(GET_TEXT(MSG_UBL_DOING_G29));
1076 1076
     #endif
1077 1077
 
1078 1078
     g29_constant = 0;
@@ -1196,7 +1196,7 @@
1196 1196
       if (ubl_state_recursion_chk != 1) {
1197 1197
         SERIAL_ECHOLNPGM("save_ubl_active_state_and_disabled() called multiple times in a row.");
1198 1198
         #if HAS_LCD_MENU
1199
-          set_message_with_feedback(PSTR(MSG_UBL_SAVE_ERROR));
1199
+          set_message_with_feedback(GET_TEXT(MSG_UBL_SAVE_ERROR));
1200 1200
         #endif
1201 1201
         return;
1202 1202
       }
@@ -1210,7 +1210,7 @@
1210 1210
       if (--ubl_state_recursion_chk) {
1211 1211
         SERIAL_ECHOLNPGM("restore_ubl_active_state_and_leave() called too many times.");
1212 1212
         #if HAS_LCD_MENU
1213
-          set_message_with_feedback(PSTR(MSG_UBL_RESTORE_ERROR));
1213
+          set_message_with_feedback(GET_TEXT(MSG_UBL_RESTORE_ERROR));
1214 1214
         #endif
1215 1215
         return;
1216 1216
       }
@@ -1410,7 +1410,7 @@
1410 1410
       if (do_3_pt_leveling) {
1411 1411
         SERIAL_ECHOLNPGM("Tilting mesh (1/3)");
1412 1412
         #if HAS_DISPLAY
1413
-          ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 1/3"));
1413
+          ui.status_printf_P(0, PSTR(S_FMT " 1/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
1414 1414
         #endif
1415 1415
 
1416 1416
         measured_z = probe_at_point(points[0], PROBE_PT_RAISE, g29_verbose_level);
@@ -1431,7 +1431,7 @@
1431 1431
         if (!abort_flag) {
1432 1432
           SERIAL_ECHOLNPGM("Tilting mesh (2/3)");
1433 1433
           #if HAS_DISPLAY
1434
-            ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 2/3"));
1434
+            ui.status_printf_P(0, PSTR(S_FMT " 2/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
1435 1435
           #endif
1436 1436
 
1437 1437
           measured_z = probe_at_point(points[1], PROBE_PT_RAISE, g29_verbose_level);
@@ -1453,7 +1453,7 @@
1453 1453
         if (!abort_flag) {
1454 1454
           SERIAL_ECHOLNPGM("Tilting mesh (3/3)");
1455 1455
           #if HAS_DISPLAY
1456
-            ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 3/3"));
1456
+            ui.status_printf_P(0, PSTR(S_FMT " 3/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
1457 1457
           #endif
1458 1458
 
1459 1459
           measured_z = probe_at_point(points[2], PROBE_PT_STOW, g29_verbose_level);
@@ -1497,7 +1497,7 @@
1497 1497
             if (!abort_flag) {
1498 1498
               SERIAL_ECHOLNPAIR("Tilting mesh point ", point_num, "/", total_points, "\n");
1499 1499
               #if HAS_DISPLAY
1500
-                ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " %i/%i"), point_num, total_points);
1500
+                ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_LCD_TILTING_MESH), point_num, total_points);
1501 1501
               #endif
1502 1502
 
1503 1503
               measured_z = probe_at_point(rpos, parser.seen('E') ? PROBE_PT_STOW : PROBE_PT_RAISE, g29_verbose_level); // TODO: Needs error handling

+ 13
- 14
Marlin/src/feature/pause.cpp Zobrazit soubor

@@ -53,6 +53,7 @@
53 53
   #include "../lcd/extensible_ui/ui_api.h"
54 54
 #endif
55 55
 
56
+#include "../core/language.h"
56 57
 #include "../lcd/ultralcd.h"
57 58
 
58 59
 #if HAS_BUZZER
@@ -76,6 +77,12 @@ fil_change_settings_t fc_settings[EXTRUDERS];
76 77
   #include "../sd/cardreader.h"
77 78
 #endif
78 79
 
80
+#if ENABLED(EMERGENCY_PARSER)
81
+  #define _PMSG(L) L##_M108
82
+#else
83
+  #define _PMSG(L) L##_LCD
84
+#endif
85
+
79 86
 #if HAS_BUZZER
80 87
   static void filament_change_beep(const int8_t max_beep_count, const bool init=false) {
81 88
     if (pause_mode == PAUSE_MODE_PAUSE_PRINT) return;
@@ -163,7 +170,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
163 170
     #if HAS_LCD_MENU
164 171
       if (show_lcd) lcd_pause_show_message(PAUSE_MESSAGE_INSERT, mode);
165 172
     #endif
166
-    SERIAL_ECHO_MSG(MSG_FILAMENT_CHANGE_INSERT);
173
+    SERIAL_ECHO_MSG(_PMSG(MSG_FILAMENT_CHANGE_INSERT));
167 174
 
168 175
     #if HAS_BUZZER
169 176
       filament_change_beep(max_beep_count, true);
@@ -188,7 +195,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
188 195
       host_action_prompt_show();
189 196
     #endif
190 197
     #if ENABLED(EXTENSIBLE_UI)
191
-      ExtUI::onUserConfirmRequired(PSTR("Load Filament"));
198
+      ExtUI::onUserConfirmRequired_P(PSTR("Load Filament"));
192 199
     #endif
193 200
     while (wait_for_user) {
194 201
       #if HAS_BUZZER
@@ -243,7 +250,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
243 250
       host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Filament Purge Running..."), PSTR("Continue"));
244 251
     #endif
245 252
     #if ENABLED(EXTENSIBLE_UI)
246
-      ExtUI::onUserConfirmRequired(PSTR("Filament Purge Running..."));
253
+      ExtUI::onUserConfirmRequired_P(PSTR("Filament Purge Running..."));
247 254
     #endif
248 255
     for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count)
249 256
       do_pause_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE);
@@ -481,14 +488,6 @@ bool pause_print(const float &retract, const xyz_pos_t &park_point, const float
481 488
  * Used by M125 and M600
482 489
  */
483 490
 
484
-#if (HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI)) && ENABLED(EMERGENCY_PARSER)
485
-  #define _PMSG(L) L
486
-#elif ENABLED(EMERGENCY_PARSER)
487
-  #define _PMSG(L) L##_M108
488
-#else
489
-  #define _PMSG(L) L##_LCD
490
-#endif
491
-
492 491
 void show_continue_prompt(const bool is_reload) {
493 492
   #if HAS_LCD_MENU
494 493
     lcd_pause_show_message(is_reload ? PAUSE_MESSAGE_INSERT : PAUSE_MESSAGE_WAITING);
@@ -527,7 +526,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
527 526
     host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Nozzle Parked"), PSTR("Continue"));
528 527
   #endif
529 528
   #if ENABLED(EXTENSIBLE_UI)
530
-    ExtUI::onUserConfirmRequired(PSTR("Nozzle Parked"));
529
+    ExtUI::onUserConfirmRequired_P(PSTR("Nozzle Parked"));
531 530
   #endif
532 531
   while (wait_for_user) {
533 532
     #if HAS_BUZZER
@@ -551,7 +550,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
551 550
       #endif
552 551
 
553 552
       #if ENABLED(EXTENSIBLE_UI)
554
-        ExtUI::onUserConfirmRequired(PSTR("HeaterTimeout"));
553
+        ExtUI::onUserConfirmRequired_P(PSTR("HeaterTimeout"));
555 554
       #endif
556 555
 
557 556
       // Wait for LCD click or M108
@@ -581,7 +580,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
581 580
         host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Reheat Done"), PSTR("Continue"));
582 581
       #endif
583 582
       #if ENABLED(EXTENSIBLE_UI)
584
-        ExtUI::onUserConfirmRequired("Reheat finished.");
583
+        ExtUI::onUserConfirmRequired_P(PSTR("Reheat finished."));
585 584
       #endif
586 585
       wait_for_user = true;
587 586
       nozzle_timed_out = false;

+ 1
- 1
Marlin/src/feature/power_loss_recovery.cpp Zobrazit soubor

@@ -228,7 +228,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*=
228 228
 #if PIN_EXISTS(POWER_LOSS)
229 229
   void PrintJobRecovery::_outage() {
230 230
     save(true);
231
-    kill(PSTR(MSG_OUTAGE_RECOVERY));
231
+    kill(GET_TEXT(MSG_OUTAGE_RECOVERY));
232 232
   }
233 233
 #endif
234 234
 

+ 3
- 3
Marlin/src/feature/prusa_MMU2/mmu2.cpp Zobrazit soubor

@@ -433,7 +433,7 @@ bool MMU2::rx_ok() {
433 433
 void MMU2::check_version() {
434 434
   if (buildnr < MMU_REQUIRED_FW_BUILDNR) {
435 435
     SERIAL_ERROR_MSG("Invalid MMU2 firmware. Version >= " STRINGIFY(MMU_REQUIRED_FW_BUILDNR) " required.");
436
-    kill(MSG_MMU2_WRONG_FIRMWARE);
436
+    kill(GET_TEXT(MSG_MMU2_WRONG_FIRMWARE));
437 437
   }
438 438
 }
439 439
 
@@ -449,7 +449,7 @@ void MMU2::tool_change(uint8_t index) {
449 449
   if (index != extruder) {
450 450
 
451 451
     disable_E0();
452
-    ui.status_printf_P(0, PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
452
+    ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
453 453
 
454 454
     command(MMU_CMD_T0 + index);
455 455
 
@@ -712,7 +712,7 @@ void MMU2::filament_runout() {
712 712
         host_prompt_do(PROMPT_USER_CONTINUE, PSTR("MMU2 Eject Recover"), PSTR("Continue"));
713 713
       #endif
714 714
       #if ENABLED(EXTENSIBLE_UI)
715
-        ExtUI::onUserConfirmRequired(PSTR("MMU2 Eject Recover"));
715
+        ExtUI::onUserConfirmRequired_P(PSTR("MMU2 Eject Recover"));
716 716
       #endif
717 717
       while (wait_for_user) idle();
718 718
       BUZZ(200, 404);

+ 1
- 1
Marlin/src/feature/tmc_util.cpp Zobrazit soubor

@@ -1118,7 +1118,7 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
1118 1118
     #endif
1119 1119
   }
1120 1120
 
1121
-  if (axis_connection) ui.set_status_P(PSTR(MSG_ERROR_TMC));
1121
+  if (axis_connection) ui.set_status_P(GET_TEXT(MSG_ERROR_TMC));
1122 1122
 }
1123 1123
 
1124 1124
 #endif // HAS_TRINAMIC

+ 7
- 7
Marlin/src/gcode/bedlevel/G26.cpp Zobrazit soubor

@@ -168,7 +168,7 @@ int8_t g26_prime_flag;
168 168
    */
169 169
   bool user_canceled() {
170 170
     if (!ui.button_pressed()) return false; // Return if the button isn't pressed
171
-    ui.set_status_P(PSTR(MSG_G26_CANCELED), 99);
171
+    ui.set_status_P(GET_TEXT(MSG_G26_CANCELED), 99);
172 172
     #if HAS_LCD_MENU
173 173
       ui.quick_feedback();
174 174
     #endif
@@ -370,7 +370,7 @@ inline bool turn_on_heaters() {
370 370
 
371 371
     if (g26_bed_temp > 25) {
372 372
       #if HAS_SPI_LCD
373
-        ui.set_status_P(PSTR(MSG_G26_HEATING_BED), 99);
373
+        ui.set_status_P(GET_TEXT(MSG_G26_HEATING_BED), 99);
374 374
         ui.quick_feedback();
375 375
         #if HAS_LCD_MENU
376 376
           ui.capture();
@@ -391,7 +391,7 @@ inline bool turn_on_heaters() {
391 391
 
392 392
   // Start heating the active nozzle
393 393
   #if HAS_SPI_LCD
394
-    ui.set_status_P(PSTR(MSG_G26_HEATING_NOZZLE), 99);
394
+    ui.set_status_P(GET_TEXT(MSG_G26_HEATING_NOZZLE), 99);
395 395
     ui.quick_feedback();
396 396
   #endif
397 397
   thermalManager.setTargetHotend(g26_hotend_temp, active_extruder);
@@ -426,7 +426,7 @@ inline bool prime_nozzle() {
426 426
     if (g26_prime_flag == -1) {  // The user wants to control how much filament gets purged
427 427
 
428 428
       ui.capture();
429
-      ui.set_status_P(PSTR(MSG_G26_MANUAL_PRIME), 99);
429
+      ui.set_status_P(GET_TEXT(MSG_G26_MANUAL_PRIME), 99);
430 430
       ui.chirp();
431 431
 
432 432
       destination = current_position;
@@ -450,7 +450,7 @@ inline bool prime_nozzle() {
450 450
 
451 451
       ui.wait_for_release();
452 452
 
453
-      ui.set_status_P(PSTR(MSG_G26_PRIME_DONE), 99);
453
+      ui.set_status_P(GET_TEXT(MSG_G26_PRIME_DONE), 99);
454 454
       ui.quick_feedback();
455 455
       ui.release();
456 456
     }
@@ -458,7 +458,7 @@ inline bool prime_nozzle() {
458 458
   #endif
459 459
   {
460 460
     #if HAS_SPI_LCD
461
-      ui.set_status_P(PSTR(MSG_G26_FIXED_LENGTH), 99);
461
+      ui.set_status_P(GET_TEXT(MSG_G26_FIXED_LENGTH), 99);
462 462
       ui.quick_feedback();
463 463
     #endif
464 464
     destination = current_position;
@@ -827,7 +827,7 @@ void GcodeSuite::G26() {
827 827
   } while (--g26_repeats && location.valid());
828 828
 
829 829
   LEAVE:
830
-  ui.set_status_P(PSTR(MSG_G26_LEAVING), -1);
830
+  ui.set_status_P(GET_TEXT(MSG_G26_LEAVING), -1);
831 831
 
832 832
   retract_filament(destination);
833 833
   destination.z = Z_CLEARANCE_BETWEEN_PROBES;

+ 2
- 2
Marlin/src/gcode/bedlevel/abl/G29.cpp Zobrazit soubor

@@ -722,7 +722,7 @@ G29_TYPE GcodeSuite::G29() {
722 722
 
723 723
           if (verbose_level) SERIAL_ECHOLNPAIR("Probing mesh point ", int(pt_index), "/", int(GRID_MAX_POINTS), ".");
724 724
           #if HAS_DISPLAY
725
-            ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), PSTR(MSG_PROBING_MESH), int(pt_index), int(GRID_MAX_POINTS));
725
+            ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_MESH), int(pt_index), int(GRID_MAX_POINTS));
726 726
           #endif
727 727
 
728 728
           measured_z = faux ? 0.001 * random(-100, 101) : probe_at_point(probePos, raise_after, verbose_level);
@@ -764,7 +764,7 @@ G29_TYPE GcodeSuite::G29() {
764 764
       for (uint8_t i = 0; i < 3; ++i) {
765 765
         if (verbose_level) SERIAL_ECHOLNPAIR("Probing point ", int(i), "/3.");
766 766
         #if HAS_DISPLAY
767
-          ui.status_printf_P(0, PSTR(MSG_PROBING_MESH " %i/3"), int(i));
767
+          ui.status_printf_P(0, PSTR(S_FMT" %i/3"), GET_TEXT(MSG_PROBING_MESH)), int(i);
768 768
         #endif
769 769
 
770 770
         // Retain the last probe position

+ 2
- 2
Marlin/src/gcode/calibrate/G28.cpp Zobrazit soubor

@@ -118,7 +118,7 @@
118 118
     // Disallow Z homing if X or Y are unknown
119 119
     if (!TEST(axis_known_position, X_AXIS) || !TEST(axis_known_position, Y_AXIS)) {
120 120
       LCD_MESSAGEPGM(MSG_ERR_Z_HOMING);
121
-      SERIAL_ECHO_MSG(MSG_ERR_Z_HOMING);
121
+      SERIAL_ECHO_MSG(MSG_ERR_Z_HOMING_SER);
122 122
       return;
123 123
     }
124 124
 
@@ -154,7 +154,7 @@
154 154
     }
155 155
     else {
156 156
       LCD_MESSAGEPGM(MSG_ZPROBE_OUT);
157
-      SERIAL_ECHO_MSG(MSG_ZPROBE_OUT);
157
+      SERIAL_ECHO_MSG(MSG_ZPROBE_OUT_SER);
158 158
     }
159 159
 
160 160
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("<<< home_z_safely");

+ 2
- 2
Marlin/src/gcode/calibrate/M48.cpp Zobrazit soubor

@@ -126,7 +126,7 @@ void GcodeSuite::M48() {
126 126
     for (uint8_t n = 0; n < n_samples; n++) {
127 127
       #if HAS_SPI_LCD
128 128
         // Display M48 progress in the status bar
129
-        ui.status_printf_P(0, PSTR(MSG_M48_POINT ": %d/%d"), int(n + 1), int(n_samples));
129
+        ui.status_printf_P(0, PSTR(S_FMT ": %d/%d"), GET_TEXT(MSG_M48_POINT), int(n + 1), int(n_samples));
130 130
       #endif
131 131
       if (n_legs) {
132 132
         const int dir = (random(0, 10) > 5.0) ? -1 : 1;  // clockwise or counter clockwise
@@ -252,7 +252,7 @@ void GcodeSuite::M48() {
252 252
     #if HAS_SPI_LCD
253 253
       // Display M48 results in the status bar
254 254
       char sigma_str[8];
255
-      ui.status_printf_P(0, PSTR(MSG_M48_DEVIATION ": %s"), dtostrf(sigma, 2, 6, sigma_str));
255
+      ui.status_printf_P(0, PSTR(S_FMT ": %s"), GET_TEXT(MSG_M48_DEVIATION), dtostrf(sigma, 2, 6, sigma_str));
256 256
     #endif
257 257
   }
258 258
 

+ 5
- 5
Marlin/src/gcode/calibrate/M852.cpp Zobrazit soubor

@@ -93,13 +93,13 @@ void GcodeSuite::M852() {
93 93
 
94 94
   if (!ijk) {
95 95
     SERIAL_ECHO_START();
96
-    SERIAL_ECHOLNPAIR_F(MSG_SKEW_FACTOR " XY: ", planner.skew_factor.xy, 6);
96
+    serialprintPGM(GET_TEXT(MSG_SKEW_FACTOR));
97
+    SERIAL_ECHOPAIR_F(" XY: ", planner.skew_factor.xy, 6);
97 98
     #if ENABLED(SKEW_CORRECTION_FOR_Z)
98
-      SERIAL_ECHOPAIR(" XZ: ", planner.skew_factor.xz);
99
-      SERIAL_ECHOLNPAIR(" YZ: ", planner.skew_factor.yz);
100
-    #else
101
-      SERIAL_EOL();
99
+      SERIAL_ECHOPAIR_F(" XZ: ", planner.skew_factor.xz, 6);
100
+      SERIAL_ECHOPAIR_F(" YZ: ", planner.skew_factor.yz, 6);
102 101
     #endif
102
+    SERIAL_EOL();
103 103
   }
104 104
 }
105 105
 

+ 1
- 1
Marlin/src/gcode/config/M43.cpp Zobrazit soubor

@@ -334,7 +334,7 @@ void GcodeSuite::M43() {
334 334
         host_prompt_do(PROMPT_USER_CONTINUE, PSTR("M43 Wait Called"), PSTR("Continue"));
335 335
       #endif
336 336
       #if ENABLED(EXTENSIBLE_UI)
337
-        ExtUI::onUserConfirmRequired(PSTR("M43 Wait Called"));
337
+        ExtUI::onUserConfirmRequired_P(PSTR("M43 Wait Called"));
338 338
       #endif
339 339
     #endif
340 340
 

+ 1
- 1
Marlin/src/gcode/control/M108_M112_M410.cpp Zobrazit soubor

@@ -41,7 +41,7 @@ void GcodeSuite::M108() {
41 41
  * M112: Full Shutdown
42 42
  */
43 43
 void GcodeSuite::M112() {
44
-  kill(PSTR("M112 Shutdown"), true);
44
+  kill(PSTR("M112 Shutdown"), nullptr, true);
45 45
 }
46 46
 
47 47
 /**

+ 1
- 1
Marlin/src/gcode/control/M80_M81.cpp Zobrazit soubor

@@ -110,6 +110,6 @@ void GcodeSuite::M81() {
110 110
   #endif
111 111
 
112 112
   #if HAS_LCD_MENU
113
-    LCD_MESSAGEPGM(MACHINE_NAME " " MSG_OFF ".");
113
+    LCD_MESSAGEPGM_P(PSTR(MACHINE_NAME " " MSG_OFF "."));
114 114
   #endif
115 115
 }

+ 1
- 1
Marlin/src/gcode/geometry/M206_M428.cpp Zobrazit soubor

@@ -70,7 +70,7 @@ void GcodeSuite::M428() {
70 70
       diff[i] = -current_position[i];
71 71
     if (!WITHIN(diff[i], -20, 20)) {
72 72
       SERIAL_ERROR_MSG(MSG_ERR_M428_TOO_FAR);
73
-      LCD_ALERTMESSAGEPGM("Err: Too far!");
73
+      LCD_ALERTMESSAGEPGM_P(PSTR("Err: Too far!"));
74 74
       BUZZ(200, 40);
75 75
       return;
76 76
     }

+ 1
- 1
Marlin/src/gcode/host/M16.cpp Zobrazit soubor

@@ -33,7 +33,7 @@
33 33
 void GcodeSuite::M16() {
34 34
 
35 35
   if (strcmp_P(parser.string_arg, PSTR(MACHINE_NAME)))
36
-    kill(PSTR(MSG_EXPECTED_PRINTER));
36
+    kill(GET_TEXT(MSG_EXPECTED_PRINTER));
37 37
 
38 38
 }
39 39
 

+ 5
- 2
Marlin/src/gcode/lcd/M0_M1.cpp Zobrazit soubor

@@ -80,7 +80,10 @@ void GcodeSuite::M0_M1() {
80 80
 
81 81
   #elif ENABLED(EXTENSIBLE_UI)
82 82
 
83
-    ExtUI::onUserConfirmRequired(has_message ? args : MSG_USERWAIT); // SRAM string
83
+    if (has_message)
84
+      ExtUI::onUserConfirmRequired(args); // Can this take an SRAM string??
85
+    else
86
+      ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_USERWAIT));
84 87
 
85 88
   #else
86 89
 
@@ -98,7 +101,7 @@ void GcodeSuite::M0_M1() {
98 101
     host_prompt_do(PROMPT_USER_CONTINUE, PSTR("M0/1 Break Called"), PSTR("Continue"));
99 102
   #endif
100 103
   #if ENABLED(EXTENSIBLE_UI)
101
-    ExtUI::onUserConfirmRequired(PSTR("M0/1 Break Called"));
104
+    ExtUI::onUserConfirmRequired_P(PSTR("M0/1 Break Called"));
102 105
   #endif
103 106
 
104 107
   if (ms > 0) {

+ 1
- 1
Marlin/src/gcode/temperature/M140_M190.cpp Zobrazit soubor

@@ -64,7 +64,7 @@ void GcodeSuite::M190() {
64 64
   }
65 65
   else return;
66 66
 
67
-  ui.set_status_P(thermalManager.isHeatingBed() ? PSTR(MSG_BED_HEATING) : PSTR(MSG_BED_COOLING));
67
+  ui.set_status_P(thermalManager.isHeatingBed() ? GET_TEXT(MSG_BED_HEATING) : GET_TEXT(MSG_BED_COOLING));
68 68
 
69 69
   thermalManager.wait_for_bed(no_wait_for_cooling);
70 70
 }

+ 1
- 1
Marlin/src/gcode/temperature/M141_M191.cpp Zobrazit soubor

@@ -68,7 +68,7 @@ void GcodeSuite::M191() {
68 68
   }
69 69
   else return;
70 70
 
71
-  lcd_setstatusPGM(thermalManager.isHeatingChamber() ? PSTR(MSG_CHAMBER_HEATING) : PSTR(MSG_CHAMBER_COOLING));
71
+  lcd_setstatusPGM(thermalManager.isHeatingChamber() ? GET_TEXT(MSG_CHAMBER_HEATING) : GET_TEXT(MSG_CHAMBER_COOLING));
72 72
 
73 73
   thermalManager.wait_for_chamber(no_wait_for_cooling);
74 74
 }

+ 2
- 7
Marlin/src/inc/Conditionals_post.h Zobrazit soubor

@@ -1072,14 +1072,9 @@
1072 1072
 #define HAS_AUTO_CHAMBER_FAN (HAS_TEMP_CHAMBER && PIN_EXISTS(CHAMBER_AUTO_FAN))
1073 1073
 
1074 1074
 #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 || HAS_AUTO_FAN_4 || HAS_AUTO_FAN_5 || HAS_AUTO_CHAMBER_FAN)
1075
+#define _FANOVERLAP(A,B) (A##_AUTO_FAN_PIN == E##B##_AUTO_FAN_PIN)
1075 1076
 #if HAS_AUTO_FAN
1076
-  #define AUTO_CHAMBER_IS_0 (CHAMBER_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
1077
-  #define AUTO_CHAMBER_IS_1 (CHAMBER_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
1078
-  #define AUTO_CHAMBER_IS_2 (CHAMBER_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
1079
-  #define AUTO_CHAMBER_IS_3 (CHAMBER_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
1080
-  #define AUTO_CHAMBER_IS_4 (CHAMBER_AUTO_FAN_PIN == E4_AUTO_FAN_PIN)
1081
-  #define AUTO_CHAMBER_IS_5 (CHAMBER_AUTO_FAN_PIN == E5_AUTO_FAN_PIN)
1082
-  #define AUTO_CHAMBER_IS_E (AUTO_CHAMBER_IS_0 || AUTO_CHAMBER_IS_1 || AUTO_CHAMBER_IS_2 || AUTO_CHAMBER_IS_3 || AUTO_CHAMBER_IS_4 || AUTO_CHAMBER_IS_5)
1077
+  #define AUTO_CHAMBER_IS_E (_FANOVERLAP(CHAMBER,0) || _FANOVERLAP(CHAMBER,1) || _FANOVERLAP(CHAMBER,2) || _FANOVERLAP(CHAMBER,3) || _FANOVERLAP(CHAMBER,4) || _FANOVERLAP(CHAMBER,5))
1083 1078
 #endif
1084 1079
 
1085 1080
 #if !HAS_AUTO_CHAMBER_FAN || AUTO_CHAMBER_IS_E

+ 3
- 3
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp Zobrazit soubor

@@ -484,9 +484,9 @@ void MarlinUI::draw_kill_screen() {
484 484
   lcd_put_u8str(0, 0, status_message);
485 485
   lcd_uint_t y = 2;
486 486
   #if LCD_HEIGHT >= 4
487
-    lcd_put_u8str_P(0, y++, PSTR(MSG_HALTED));
487
+    lcd_put_u8str_P(0, y++, GET_TEXT(MSG_HALTED));
488 488
   #endif
489
-  lcd_put_u8str_P(0, y, PSTR(MSG_PLEASE_RESET));
489
+  lcd_put_u8str_P(0, y, GET_TEXT(MSG_PLEASE_RESET));
490 490
 }
491 491
 
492 492
 //
@@ -977,7 +977,7 @@ void MarlinUI::draw_status_screen() {
977 977
 
978 978
   #endif // ADVANCED_PAUSE_FEATURE
979 979
 
980
-  void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_CENTER*/, const char * const valstr/*=nullptr*/) {
980
+  void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
981 981
     int8_t n = LCD_WIDTH;
982 982
     lcd_moveto(0, row);
983 983
     if ((style & SS_CENTER) && !valstr) {

+ 4
- 4
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp Zobrazit soubor

@@ -300,8 +300,8 @@ void MarlinUI::draw_kill_screen() {
300 300
   do {
301 301
     set_font(FONT_MENU);
302 302
     lcd_put_u8str(0, h4 * 1, status_message);
303
-    lcd_put_u8str_P(0, h4 * 2, PSTR(MSG_HALTED));
304
-    lcd_put_u8str_P(0, h4 * 3, PSTR(MSG_PLEASE_RESET));
303
+    lcd_put_u8str_P(0, h4 * 2, GET_TEXT(MSG_HALTED));
304
+    lcd_put_u8str_P(0, h4 * 3, GET_TEXT(MSG_PLEASE_RESET));
305 305
   } while (u8g.nextPage());
306 306
 }
307 307
 
@@ -363,9 +363,9 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
363 363
   }
364 364
 
365 365
   // Draw a static line of text in the same idiom as a menu item
366
-  void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_CENTER*/, const char * const valstr/*=nullptr*/) {
366
+  void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
367 367
 
368
-    if (mark_as_selected(row, (style & SS_INVERT))) {
368
+    if (mark_as_selected(row, style & SS_INVERT)) {
369 369
 
370 370
       u8g_uint_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
371 371
 

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp Zobrazit soubor

@@ -289,11 +289,11 @@ void DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable
289 289
 
290 290
     // Don't let the user in the dark why there is no reaction.
291 291
     if (!ExtUI::isMediaInserted()) {
292
-       setstatusmessagePGM(PSTR(MSG_NO_MEDIA));
292
+       setstatusmessagePGM(GET_TEXT(MSG_NO_MEDIA));
293 293
        return;
294 294
     }
295 295
     if (card.flag.abort_sd_printing) {
296
-       setstatusmessagePGM(PSTR(MSG_MEDIA_ABORTING));
296
+       setstatusmessagePGM(GET_TEXT(MSG_MEDIA_ABORTING));
297 297
        return;
298 298
     }
299 299
   }
@@ -472,13 +472,13 @@ void DGUSScreenVariableHandler::HandleTemperatureChanged(DGUS_VP_Variable &var,
472 472
   switch (var.VP) {
473 473
     default: return;
474 474
     #if HOTENDS >= 1
475
-      case VP_T_E1_Set:
475
+      case VP_T_E0_Set:
476 476
         thermalManager.setTargetHotend(newvalue, 0);
477 477
         acceptedvalue = thermalManager.temp_hotend[0].target;
478 478
         break;
479 479
     #endif
480 480
     #if HOTENDS >= 2
481
-      case VP_T_E2_Set:
481
+      case VP_T_E1_Set:
482 482
         thermalManager.setTargetHotend(newvalue, 1);
483 483
         acceptedvalue = thermalManager.temp_hotend[1].target;
484 484
       break;
@@ -503,10 +503,10 @@ void DGUSScreenVariableHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, voi
503 503
     switch (var.VP) {
504 504
       default: return;
505 505
       #if (HOTENDS >= 1)
506
-        case VP_Flowrate_E1: target_extruder = 0; break;
506
+        case VP_Flowrate_E0: target_extruder = 0; break;
507 507
       #endif
508 508
       #if (HOTENDS >= 2)
509
-        case VP_Flowrate_E2: target_extruder = 1; break;
509
+        case VP_Flowrate_E1: target_extruder = 1; break;
510 510
       #endif
511 511
     }
512 512
 
@@ -526,11 +526,11 @@ void DGUSScreenVariableHandler::HandleManualExtrude(DGUS_VP_Variable &var, void
526 526
   ExtUI::extruder_t target_extruder;
527 527
 
528 528
   switch (var.VP) {
529
-    #if HOTENDS >=1
530
-      case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E0; break;
529
+    #if HOTENDS >= 1
530
+      case VP_MOVE_E0: target_extruder = ExtUI::extruder_t::E0; break;
531 531
     #endif
532
-    #if HOTENDS >=2
533
-      case VP_MOVE_E2: target_extruder = ExtUI::extruder_t::E1; break
532
+    #if HOTENDS >= 2
533
+      case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E1; break
534 534
     #endif
535 535
     default: return;
536 536
   }

+ 15
- 15
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp Zobrazit soubor

@@ -46,10 +46,10 @@ const uint16_t VPList_Main[] PROGMEM = {
46 46
 
47 47
 const uint16_t VPList_Temp[] PROGMEM = {
48 48
   #if HOTENDS >= 1
49
-    VP_T_E1_Is, VP_T_E1_Set,
49
+    VP_T_E0_Is, VP_T_E0_Set,
50 50
   #endif
51 51
   #if HOTENDS >= 2
52
-    VP_T_E2_I, VP_T_E2_S,
52
+    VP_T_E1_I, VP_T_E1_S,
53 53
   #endif
54 54
   #if HAS_HEATED_BED
55 55
     VP_T_Bed_Is, VP_T_Bed_Set,
@@ -60,10 +60,10 @@ const uint16_t VPList_Temp[] PROGMEM = {
60 60
 const uint16_t VPList_Status[] PROGMEM = {
61 61
   /* VP_M117, for completeness, but it cannot be auto-uploaded */
62 62
   #if HOTENDS >= 1
63
-    VP_T_E1_Is, VP_T_E1_Set,
63
+    VP_T_E0_Is, VP_T_E0_Set,
64 64
   #endif
65 65
   #if HOTENDS >= 2
66
-    VP_T_E2_I, VP_T_E2_S,
66
+    VP_T_E1_I, VP_T_E1_S,
67 67
   #endif
68 68
   #if HAS_HEATED_BED
69 69
     VP_T_Bed_Is, VP_T_Bed_Set,
@@ -81,10 +81,10 @@ const uint16_t VPList_Status[] PROGMEM = {
81 81
 const uint16_t VPList_Status2[] PROGMEM = {
82 82
   /* VP_M117, for completeness, but it cannot be auto-uploaded */
83 83
   #if HOTENDS >= 1
84
-    VP_Flowrate_E1,
84
+    VP_Flowrate_E0,
85 85
   #endif
86 86
   #if HOTENDS >= 2
87
-    VP_Flowrate_E2,
87
+    VP_Flowrate_E1,
88 88
   #endif
89 89
   VP_PrintProgress_Percentage,
90 90
   VP_PrintTime,
@@ -107,7 +107,7 @@ const uint16_t VPList_FanAndFeedrate[] PROGMEM = {
107 107
 };
108 108
 
109 109
 const uint16_t VPList_SD_FlowRates[] PROGMEM = {
110
-  VP_Flowrate_E1, VP_Flowrate_E2,
110
+  VP_Flowrate_E0, VP_Flowrate_E1,
111 111
   0x0000
112 112
 };
113 113
 
@@ -166,17 +166,17 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
166 166
 
167 167
   // Temperature Data
168 168
   #if HOTENDS >= 1
169
-    VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>),
170
-    VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
171
-    VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
169
+    VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>),
170
+    VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
171
+    VPHELPER(VP_Flowrate_E0, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
172 172
     VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
173
-    VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
173
+    VPHELPER(VP_MOVE_E0, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
174 174
   #endif
175 175
   #if HOTENDS >= 2
176
-    VPHELPER(VP_T_E2_I, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>),
177
-    VPHELPER(VP_T_E2_S, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
178
-    VPHELPER(VP_Flowrate_E2, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
179
-    VPHELPER(VP_MOVE_E2, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
176
+    VPHELPER(VP_T_E1_I, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>),
177
+    VPHELPER(VP_T_E1_S, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
178
+    VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
179
+    VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
180 180
   #endif
181 181
   #if HOTENDS >= 3
182 182
     #error More than 2 Hotends currently not implemented on the Display UI design.

+ 29
- 29
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h Zobrazit soubor

@@ -109,12 +109,12 @@ constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmati
109 109
 constexpr uint16_t VP_MOVE_X = 0x2100;
110 110
 constexpr uint16_t VP_MOVE_Y = 0x2102;
111 111
 constexpr uint16_t VP_MOVE_Z = 0x2104;
112
-constexpr uint16_t VP_MOVE_E1 = 0x2110;
113
-constexpr uint16_t VP_MOVE_E2 = 0x2112;
114
-//constexpr uint16_t VP_MOVE_E3 = 0x2114;
115
-//constexpr uint16_t VP_MOVE_E4 = 0x2116;
116
-//constexpr uint16_t VP_MOVE_E5 = 0x2118;
117
-//constexpr uint16_t VP_MOVE_E6 = 0x211A;
112
+constexpr uint16_t VP_MOVE_E0 = 0x2110;
113
+constexpr uint16_t VP_MOVE_E1 = 0x2112;
114
+//constexpr uint16_t VP_MOVE_E2 = 0x2114;
115
+//constexpr uint16_t VP_MOVE_E3 = 0x2116;
116
+//constexpr uint16_t VP_MOVE_E4 = 0x2118;
117
+//constexpr uint16_t VP_MOVE_E5 = 0x211A;
118 118
 constexpr uint16_t VP_HOME_ALL = 0x2120;
119 119
 
120 120
 // Firmware version on the boot screen.
@@ -126,34 +126,34 @@ constexpr uint16_t VP_M117 = 0x3020;
126 126
 constexpr uint8_t VP_M117_LEN = 0x20;
127 127
 
128 128
 // Temperatures.
129
-constexpr uint16_t VP_T_E1_Is = 0x3060;  // 4 Byte Integer
130
-constexpr uint16_t VP_T_E1_Set = 0x3062; // 2 Byte Integer
131
-constexpr uint16_t VP_T_E2_Is = 0x3064;  // 4 Byte Integer
129
+constexpr uint16_t VP_T_E0_Is = 0x3060;  // 4 Byte Integer
130
+constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
131
+constexpr uint16_t VP_T_E1_Is = 0x3064;  // 4 Byte Integer
132 132
 
133 133
 // reserved to support up to 6 Extruders:
134
-//constexpr uint16_t VP_T_E2_Set = 0x3066; // 2 Byte Integer
135
-//constexpr uint16_t VP_T_E3_Is = 0x3068;  // 4 Byte Integer
136
-//constexpr uint16_t VP_T_E3_Set = 0x306A; // 2 Byte Integer
137
-//constexpr uint16_t VP_T_E4_Is = 0x306C;  // 4 Byte Integer
138
-//constexpr uint16_t VP_T_E4_Set = 0x306E; // 2 Byte Integer
139
-//constexpr uint16_t VP_T_E5_Is = 0x3070;  // 4 Byte Integer
140
-//constexpr uint16_t VP_T_E5_Set = 0x3072; // 2 Byte Integer
141
-//constexpr uint16_t VP_T_E5_Is = 0x3074;  // 4 Byte Integer
142
-//constexpr uint16_t VP_T_E5_Set = 0x3076; // 2 Byte Integer
143
-//constexpr uint16_t VP_T_E6_Is = 0x3078;  // 4 Byte Integer
144
-//constexpr uint16_t VP_T_E6_Set = 0x307A; // 2 Byte Integer
134
+//constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
135
+//constexpr uint16_t VP_T_E2_Is = 0x3068;  // 4 Byte Integer
136
+//constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
137
+//constexpr uint16_t VP_T_E3_Is = 0x306C;  // 4 Byte Integer
138
+//constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
139
+//constexpr uint16_t VP_T_E4_Is = 0x3070;  // 4 Byte Integer
140
+//constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
141
+//constexpr uint16_t VP_T_E4_Is = 0x3074;  // 4 Byte Integer
142
+//constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
143
+//constexpr uint16_t VP_T_E5_Is = 0x3078;  // 4 Byte Integer
144
+//constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
145 145
 
146 146
 constexpr uint16_t VP_T_Bed_Is = 0x3080;  // 4 Byte Integer
147 147
 constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
148 148
 
149
-constexpr uint16_t VP_Flowrate_E1 = 0x3090; // 2 Byte Integer
150
-constexpr uint16_t VP_Flowrate_E2 = 0x3092; // 2 Byte Integer
149
+constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
150
+constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
151 151
 
152 152
 // reserved for up to 6 Extruders:
153
-//constexpr uint16_t VP_Flowrate_E3 = 0x3094;
154
-//constexpr uint16_t VP_Flowrate_E4 = 0x3096;
155
-//constexpr uint16_t VP_Flowrate_E5 = 0x3098;
156
-//constexpr uint16_t VP_Flowrate_E6 = 0x309A;
153
+//constexpr uint16_t VP_Flowrate_E2 = 0x3094;
154
+//constexpr uint16_t VP_Flowrate_E3 = 0x3096;
155
+//constexpr uint16_t VP_Flowrate_E4 = 0x3098;
156
+//constexpr uint16_t VP_Flowrate_E5 = 0x309A;
157 157
 
158 158
 constexpr uint16_t VP_Fan_Percentage = 0x3100;  // 2 Byte Integer (0..100)
159 159
 constexpr uint16_t VP_Feedrate_Percentage = 0x3102; // 2 Byte Integer (0..100)
@@ -182,9 +182,9 @@ constexpr uint16_t VP_SD_FileName4 = 0x3280;
182 182
 // located at 0x5000 and up
183 183
 // Not used yet!
184 184
 // This can be used e.g to make controls / data display invisible
185
-constexpr uint16_t SP_T_E1_Is = 0x5000;
186
-constexpr uint16_t SP_T_E1_Set = 0x5010;
187
-constexpr uint16_t SP_T_E2_Is = 0x5020;
185
+constexpr uint16_t SP_T_E0_Is = 0x5000;
186
+constexpr uint16_t SP_T_E0_Set = 0x5010;
187
+constexpr uint16_t SP_T_E1_Is = 0x5020;
188 188
 constexpr uint16_t SP_T_Bed_Is = 0x5030;
189 189
 constexpr uint16_t SP_T_Bed_Set = 0x5040;
190 190
 

+ 0
- 5
Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h Zobrazit soubor

@@ -38,11 +38,6 @@
38 38
   // __MARLIN_FIRMWARE__ exists when compiled within Marlin.
39 39
   #include "pin_mappings.h"
40 40
 #else
41
-  // Messages that are declared in Marlin
42
-  #define WELCOME_MSG        "Printer Ready"
43
-  #define MSG_MEDIA_INSERTED "Media Inserted"
44
-  #define MSG_MEDIA_REMOVED  "Media Removed"
45
-
46 41
   namespace UI {
47 42
     static inline uint32_t safe_millis() {return millis();};
48 43
     static inline void     yield()       {};

+ 0
- 64
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h Zobrazit soubor

@@ -20,70 +20,6 @@
20 20
  ****************************************************************************/
21 21
 #pragma once
22 22
 
23
-typedef const char Language_Str[];
24
-
25
-// Count how many languages are defined.
26
-
27
-#if defined(LCD_LANGUAGE_5)
28
-  #define NUM_LANGUAGES 5
29
-#elif defined(LCD_LANGUAGE_4)
30
-  #define NUM_LANGUAGES 4
31
-#elif defined(LCD_LANGUAGE_3)
32
-  #define NUM_LANGUAGES 3
33
-#elif defined(LCD_LANGUAGE_2)
34
-  #define NUM_LANGUAGES 2
35
-#else
36
-  #define NUM_LANGUAGES 1
37
-#endif
38
-
39
-// Set undefined languages equal to the last and
40
-// let the compiler optimize out the duplicates
41
-
42
-#ifndef LCD_LANGUAGE_1
43
-  #define LCD_LANGUAGE_1 LCD_LANGUAGE
44
-#endif
45
-
46
-#ifndef LCD_LANGUAGE_2
47
-  #define LCD_LANGUAGE_2 LCD_LANGUAGE_1
48
-#endif
49
-
50
-#ifndef LCD_LANGUAGE_3
51
-  #define LCD_LANGUAGE_3 LCD_LANGUAGE_2
52
-#endif
53
-
54
-#ifndef LCD_LANGUAGE_4
55
-  #define LCD_LANGUAGE_4 LCD_LANGUAGE_3
56
-#endif
57
-
58
-#ifndef LCD_LANGUAGE_5
59
-  #define LCD_LANGUAGE_5 LCD_LANGUAGE_4
60
-#endif
61
-
62
-// Indirection required to paste together the namespace name
63
-
64
-#define _GET_LANG(LANG) Language_##LANG
65
-#define GET_LANG(LANG) _GET_LANG(LANG)
66
-
67
-#if NUM_LANGUAGES > 1
68
-  extern uint8_t lang;
69
-  // The compiler does a good job of "flattening" out this
70
-  // if statement when there are fewer than five languages.
71
-  #define GET_TEXT(MSG) ( \
72
-    lang == 0 ? GET_LANG(LCD_LANGUAGE_1)::MSG : \
73
-    lang == 1 ? GET_LANG(LCD_LANGUAGE_2)::MSG : \
74
-    lang == 2 ? GET_LANG(LCD_LANGUAGE_3)::MSG : \
75
-    lang == 3 ? GET_LANG(LCD_LANGUAGE_4)::MSG : \
76
-                GET_LANG(LCD_LANGUAGE_5)::MSG \
77
-    )
78
-#else
79
-  #define GET_TEXT(MSG) GET_LANG(LCD_LANGUAGE_1)::MSG
80
-#endif
81
-#define GET_TEXT_F(MSG) reinterpret_cast<const __FlashStringHelper *>(GET_TEXT(MSG))
82
-
83
-#define GET_LANGUAGE_NAME(N) GET_LANG(LCD_LANGUAGE_##N)::LANGUAGE
84
-
85
-// All the language tables go here
86
-
87 23
 #include "language_en.h"
88 24
 #include "language_de.h"
89 25
 #include "language_fr.h"

+ 0
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h Zobrazit soubor

@@ -24,8 +24,6 @@
24 24
 namespace Language_de {
25 25
   using namespace Language_en; // Inherit undefined strings from English
26 26
 
27
-  PROGMEM Language_Str LANGUAGE                 = u8"Deutsche";
28
-
29 27
   PROGMEM Language_Str YES                      = u8"JA";
30 28
   PROGMEM Language_Str NO                       = u8"NEIN";
31 29
   PROGMEM Language_Str BACK                     = u8"Zurück";

+ 0
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h Zobrazit soubor

@@ -24,8 +24,6 @@
24 24
 #include "language.h"
25 25
 
26 26
 namespace Language_en {
27
-  PROGMEM Language_Str LANGUAGE                 = u8"English";
28
-
29 27
   PROGMEM Language_Str YES                      = u8"Yes";
30 28
   PROGMEM Language_Str NO                       = u8"No";
31 29
   PROGMEM Language_Str BACK                     = u8"Back";

+ 0
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h Zobrazit soubor

@@ -24,8 +24,6 @@
24 24
 namespace Language_fr {
25 25
   using namespace Language_en; // Inherit undefined strings from English
26 26
 
27
-  PROGMEM Language_Str LANGUAGE                 = u8"Français";
28
-
29 27
   PROGMEM Language_Str YES                      = u8"oui";
30 28
   PROGMEM Language_Str NO                       = u8"non";
31 29
   PROGMEM Language_Str BACK                     = u8"Retour";

+ 6
- 4
Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp Zobrazit soubor

@@ -38,19 +38,21 @@ namespace ExtUI {
38 38
     EventLoop::loop();
39 39
   }
40 40
 
41
-  void onPrinterKilled(PGM_P lcd_msg) {
42
-    KillScreen::show(progmem_str(lcd_msg));
41
+  void onPrinterKilled(PGM_P const error, PGM_P const component) {
42
+    char str[strlen_P(error) + strlen_P(component) + 3];
43
+    sprintf_P(str, PSTR(S_FMT ": " S_FMT), error, component);
44
+    KillScreen::show(str);
43 45
   }
44 46
 
45 47
   void onMediaInserted() {
46 48
     if (AT_SCREEN(StatusScreen))
47
-      StatusScreen::setStatusMessage(F(MSG_MEDIA_INSERTED));
49
+      StatusScreen::setStatusMessage(GET_TEXT_F(MSG_MEDIA_INSERTED));
48 50
     sound.play(media_inserted, PLAY_ASYNCHRONOUS);
49 51
   }
50 52
 
51 53
   void onMediaRemoved() {
52 54
     if (AT_SCREEN(StatusScreen))
53
-      StatusScreen::setStatusMessage(F(MSG_MEDIA_REMOVED));
55
+      StatusScreen::setStatusMessage(GET_TEXT_F(MSG_MEDIA_REMOVED));
54 56
     sound.play(media_removed, PLAY_ASYNCHRONOUS);
55 57
     if (AT_SCREEN(FilesScreen)) {
56 58
       GOTO_SCREEN(StatusScreen)

+ 2
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp Zobrazit soubor

@@ -85,10 +85,10 @@ void BootScreen::onIdle() {
85 85
       PUSH_SCREEN(StatusScreen);
86 86
       PUSH_SCREEN(BioConfirmHomeE);
87 87
     #elif NUM_LANGUAGES > 1
88
-      StatusScreen::setStatusMessage(F(WELCOME_MSG));
88
+      StatusScreen::setStatusMessage(GET_TEXT_F(WELCOME_MSG));
89 89
       GOTO_SCREEN(LanguageMenu);
90 90
     #else
91
-      StatusScreen::setStatusMessage(F(WELCOME_MSG));
91
+      StatusScreen::setStatusMessage(GET_TEXT_F(WELCOME_MSG));
92 92
       GOTO_SCREEN(StatusScreen);
93 93
     #endif
94 94
   }

+ 2
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp Zobrazit soubor

@@ -32,10 +32,12 @@ using namespace ExtUI;
32 32
 
33 33
 void EndstopStatesScreen::onEntry() {
34 34
   BaseScreen::onEntry();
35
+  enable_emi_pins(true);
35 36
 }
36 37
 
37 38
 void EndstopStatesScreen::onExit() {
38 39
   BaseScreen::onExit();
40
+  enable_emi_pins(false);
39 41
 }
40 42
 
41 43
 void EndstopStatesScreen::onRedraw(draw_mode_t) {

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp Zobrazit soubor

@@ -32,7 +32,7 @@ using namespace FTDI;
32 32
 // loop. So we only have a show() method rather than onRedraw(). The KillScreen
33 33
 // should not be used as a model for other UI screens as it is an exception.
34 34
 
35
-void KillScreen::show(progmem_str message) {
35
+void KillScreen::show(const char *message) {
36 36
   CommandProcessor cmd;
37 37
 
38 38
   cmd.cmd(CMD_DLSTART)

+ 5
- 5
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp Zobrazit soubor

@@ -39,15 +39,15 @@ void MaxAccelerationScreen::onRedraw(draw_mode_t what) {
39 39
   w.color(y_axis)  .adjuster( 4, GET_TEXT_F(AMAX_Y),  getAxisMaxAcceleration_mm_s2(Y) );
40 40
   w.color(z_axis)  .adjuster( 6, GET_TEXT_F(AMAX_Z),  getAxisMaxAcceleration_mm_s2(Z) );
41 41
   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS)
42
-    w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
42
+    w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) );
43 43
   #elif EXTRUDERS > 1
44
-    w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
45
-    w.color(e_axis).adjuster(10, GET_TEXT_F(AMAX_E2), getAxisMaxAcceleration_mm_s2(E1) );
44
+    w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) );
45
+    w.color(e_axis).adjuster(10, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E1) );
46 46
     #if EXTRUDERS > 2
47
-    w.color(e_axis).adjuster(12, GET_TEXT_F(AMAX_E3), getAxisMaxAcceleration_mm_s2(E2) );
47
+    w.color(e_axis).adjuster(12, GET_TEXT_F(AMAX_E2), getAxisMaxAcceleration_mm_s2(E2) );
48 48
     #endif
49 49
     #if EXTRUDERS > 3
50
-    w.color(e_axis).adjuster(14, GET_TEXT_F(AMAX_E4), getAxisMaxAcceleration_mm_s2(E3) );
50
+    w.color(e_axis).adjuster(14, GET_TEXT_F(AMAX_E3), getAxisMaxAcceleration_mm_s2(E3) );
51 51
     #endif
52 52
   #endif
53 53
   w.increments();

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h Zobrazit soubor

@@ -135,7 +135,7 @@ class KillScreen {
135 135
   // The KillScreen is behaves differently than the
136 136
   // others, so we do not bother extending UIScreen.
137 137
   public:
138
-    static void show(progmem_str msg);
138
+    static void show(const char*);
139 139
 };
140 140
 
141 141
 class DialogBoxBaseClass : public BaseScreen {

+ 8
- 2
Marlin/src/lcd/extensible_ui/ui_api.cpp Zobrazit soubor

@@ -939,6 +939,12 @@ namespace ExtUI {
939 939
     ui.abort_print();
940 940
   }
941 941
 
942
+  void onUserConfirmRequired_P(PGM_P const pstr) {
943
+    char msg[strlen_P(pstr) + 1];
944
+    strcpy_P(msg, pstr);
945
+    onUserConfirmRequired(msg);
946
+  }
947
+
942 948
   FileList::FileList() { refresh(); }
943 949
 
944 950
   void FileList::refresh() { num_files = 0xFFFF; }
@@ -1036,11 +1042,11 @@ void MarlinUI::update() {
1036 1042
   ExtUI::onIdle();
1037 1043
 }
1038 1044
 
1039
-void MarlinUI::kill_screen(PGM_P const msg) {
1045
+void MarlinUI::kill_screen(PGM_P const error, PGM_P const component) {
1040 1046
   using namespace ExtUI;
1041 1047
   if (!flags.printer_killed) {
1042 1048
     flags.printer_killed = true;
1043
-    onPrinterKilled(msg);
1049
+    onPrinterKilled(error, component);
1044 1050
   }
1045 1051
 }
1046 1052
 

+ 2
- 1
Marlin/src/lcd/extensible_ui/ui_api.h Zobrazit soubor

@@ -293,12 +293,13 @@ namespace ExtUI {
293 293
   void onMediaError();
294 294
   void onMediaRemoved();
295 295
   void onPlayTone(const uint16_t frequency, const uint16_t duration);
296
-  void onPrinterKilled(PGM_P const msg);
296
+  void onPrinterKilled(PGM_P const error, PGM_P const component);
297 297
   void onPrintTimerStarted();
298 298
   void onPrintTimerPaused();
299 299
   void onPrintTimerStopped();
300 300
   void onFilamentRunout(const extruder_t extruder);
301 301
   void onUserConfirmRequired(const char * const msg);
302
+  void onUserConfirmRequired_P(PGM_P const pstr);
302 303
   void onStatusChanged(const char * const msg);
303 304
   void onFactoryReset();
304 305
   void onStoreSettings(char *);

+ 3
- 3
Marlin/src/lcd/extui_dgus_lcd.cpp Zobrazit soubor

@@ -43,8 +43,8 @@ namespace ExtUI {
43 43
 
44 44
   void onIdle() { ScreenHandler.loop(); }
45 45
 
46
-  void onPrinterKilled(const char* msg) {
47
-    ScreenHandler.sendinfoscreen(PSTR(MSG_HALTED), msg, PSTR(""), PSTR(MSG_PLEASE_RESET), true, true, true, true);
46
+  void onPrinterKilled(PGM_P error, PGM_P component) {
47
+    ScreenHandler.sendinfoscreen(GET_TEXT(MSG_HALTED), error, PSTR(""), GET_TEXT(MSG_PLEASE_RESET), true, true, true, true);
48 48
     ScreenHandler.GotoScreen(DGUSLCD_SCREEN_KILL);
49 49
     while (!ScreenHandler.loop());  // Wait while anything is left to be sent
50 50
   }
@@ -59,7 +59,7 @@ namespace ExtUI {
59 59
   void onPrintTimerStopped() {}
60 60
   void onFilamentRunout(const extruder_t extruder) {}
61 61
 
62
-  void onUserConfirmRequired(const char *msg) {
62
+  void onUserConfirmRequired(const char * const msg) {
63 63
     if (msg) {
64 64
       ScreenHandler.sendinfoscreen(PSTR("Please confirm."), nullptr, msg, nullptr, true, true, false, true);
65 65
       ScreenHandler.SetupConfirmAction(ExtUI::setUserConfirmed);

+ 1
- 1
Marlin/src/lcd/extui_example.cpp Zobrazit soubor

@@ -46,7 +46,7 @@ namespace ExtUI {
46 46
      */
47 47
   }
48 48
   void onIdle() {}
49
-  void onPrinterKilled(PGM_P const msg) {}
49
+  void onPrinterKilled(PGM_P const error, PGM_P const component) {}
50 50
   void onMediaInserted() {};
51 51
   void onMediaError() {};
52 52
   void onMediaRemoved() {};

+ 4
- 2
Marlin/src/lcd/extui_malyan_lcd.cpp Zobrazit soubor

@@ -464,9 +464,11 @@ namespace ExtUI {
464 464
   }
465 465
 
466 466
   // {E:<msg>} is for error states.
467
-  void onPrinterKilled(PGM_P msg) {
467
+  void onPrinterKilled(PGM_P error, PGM_P component) {
468 468
     write_to_lcd_P(PSTR("{E:"));
469
-    write_to_lcd_P(msg);
469
+    write_to_lcd_P(error);
470
+    write_to_lcd_P(PSTR(" "));
471
+    write_to_lcd_P(component);
470 472
     write_to_lcd_P("}");
471 473
   }
472 474
 

+ 252
- 214
Marlin/src/lcd/language/language_an.h Zobrazit soubor

@@ -32,225 +32,263 @@
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33 33
 #define NOT_EXTENDED_ISO10646_1_5X7
34 34
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" parada.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Tarcheta mesa")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Tarcheta sacada")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("Menu prencipal")
40
-#define MSG_AUTOSTART                       _UxGT("Inicio automatico")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Amortar motors")
42
-#define MSG_AUTO_HOME                       _UxGT("Levar a l'orichen")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Orichen X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Orichen Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Orichen Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Orichen XYZ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Encetar (pretar)")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Vinient punto")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Nivelacion feita!")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Achustar desfases")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Desfase aplicau")
52
-#define MSG_SET_ORIGIN                      _UxGT("Establir orichen")
53
-#define MSG_PREHEAT_1                       _UxGT("Precalentar " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
55
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Tot")
56
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Base")
57
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" Conf")
58
-#define MSG_PREHEAT_2                       _UxGT("Precalentar " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
60
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Tot")
61
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Base")
62
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" Conf")
63
-#define MSG_COOLDOWN                        _UxGT("Enfriar")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Enchegar Fuent")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Amortar Fuent")
66
-#define MSG_EXTRUDE                         _UxGT("Extruir")
67
-#define MSG_RETRACT                         _UxGT("Retraer")
68
-#define MSG_MOVE_AXIS                       _UxGT("Mover Eixes")
69
-#define MSG_BED_LEVELING                    _UxGT("Nivelar base")
70
-#define MSG_LEVEL_BED                       _UxGT("Nivelar base")
71
-#define MSG_MOVE_X                          _UxGT("Mover X")
72
-#define MSG_MOVE_Y                          _UxGT("Mover Y")
73
-#define MSG_MOVE_Z                          _UxGT("Mover Z")
74
-#define MSG_MOVE_E                          _UxGT("Extrusor")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Mover %smm")
76
-#define MSG_MOVE_01MM                       _UxGT("Mover 0.1mm")
77
-#define MSG_MOVE_1MM                        _UxGT("Mover 1mm")
78
-#define MSG_MOVE_10MM                       _UxGT("Mover 10mm")
79
-#define MSG_SPEED                           _UxGT("Velocidat")
80
-#define MSG_BED_Z                           _UxGT("Base Z")
81
-#define MSG_NOZZLE                          _UxGT("Boquilla")
82
-#define MSG_BED                             _UxGT("Base")
83
-#define MSG_FAN_SPEED                       _UxGT("Ixoriador")
84
-#define MSG_FLOW                            _UxGT("Fluxo")
85
-#define MSG_CONTROL                         _UxGT("Control")
86
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
87
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
88
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
89
-#define MSG_AUTOTEMP                        _UxGT("Temperatura Auto.")
90
-#define MSG_LCD_ON                          _UxGT("On")
91
-#define MSG_LCD_OFF                         _UxGT("Off")
92
-#define MSG_PID_P                           _UxGT("PID-P")
93
-#define MSG_PID_I                           _UxGT("PID-I")
94
-#define MSG_PID_D                           _UxGT("PID-D")
95
-#define MSG_PID_C                           _UxGT("PID-C")
96
-#define MSG_SELECT                          _UxGT("Trigar")
97
-#define MSG_ACC                             _UxGT("Aceleracion")
98
-#define MSG_JERK                            _UxGT("Jerk")
99
-#if IS_KINEMATIC
100
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
101
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
102
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
103
-#else
104
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
105
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
106
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
107
-#endif
108
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
109
-#define MSG_VMAX                            _UxGT("Vmax")
110
-#define MSG_VMIN                            _UxGT("Vmin")
111
-#define MSG_VTRAV_MIN                       _UxGT("Vel. viache min")
112
-#define MSG_ACCELERATION                    MSG_ACC
113
-#define MSG_AMAX                            _UxGT("Acel. max")
114
-#define MSG_A_RETRACT                       _UxGT("Acel. retrac.")
115
-#define MSG_A_TRAVEL                        _UxGT("Acel. Viaje")
116
-#define MSG_STEPS_PER_MM                    _UxGT("Trangos/mm")
117
-#if IS_KINEMATIC
118
-  #define MSG_ASTEPS                        _UxGT("A trangos/mm")
119
-  #define MSG_BSTEPS                        _UxGT("B trangos/mm")
120
-  #define MSG_CSTEPS                        _UxGT("C trangos/mm")
121
-#else
122
-  #define MSG_ASTEPS                        _UxGT("X trangos/mm")
123
-  #define MSG_BSTEPS                        _UxGT("Y trangos/mm")
124
-  #define MSG_CSTEPS                        _UxGT("Z trangos/mm")
125
-#endif
126
-#define MSG_ESTEPS                          _UxGT("E trangos/mm")
127
-#define MSG_E0_STEPS                        _UxGT("E1 trangos/mm")
128
-#define MSG_E1_STEPS                        _UxGT("E2 trangos/mm")
129
-#define MSG_E2_STEPS                        _UxGT("E3 trangos/mm")
130
-#define MSG_E3_STEPS                        _UxGT("E4 trangos/mm")
131
-#define MSG_E4_STEPS                        _UxGT("E5 trangos/mm")
132
-#define MSG_E5_STEPS                        _UxGT("E6 trangos/mm")
133
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
134
-#define MSG_MOTION                          _UxGT("Movimiento")
135
-#define MSG_FILAMENT                        _UxGT("Filamento")
136
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm3")
137
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Dia.")
138
-#define MSG_CONTRAST                        _UxGT("Contraste")
139
-#define MSG_STORE_EEPROM                    _UxGT("Alzar memoria")
140
-#define MSG_LOAD_EEPROM                     _UxGT("Cargar memoria")
141
-#define MSG_RESTORE_FAILSAFE                _UxGT("Restaurar memoria")
142
-#define MSG_REFRESH                         _UxGT("Tornar a cargar")
143
-#define MSG_WATCH                           _UxGT("Informacion")
144
-#define MSG_PREPARE                         _UxGT("Preparar")
145
-#define MSG_TUNE                            _UxGT("Achustar")
146
-#define MSG_PAUSE_PRINT                     _UxGT("Pausar impresion")
147
-#define MSG_RESUME_PRINT                    _UxGT("Contin. impresion")
148
-#define MSG_STOP_PRINT                      _UxGT("Detener Impresion")
149
-#define MSG_MEDIA_MENU                      _UxGT("Menu de SD")
150
-#define MSG_NO_MEDIA                        _UxGT("No i hai tarcheta")
151
-#define MSG_DWELL                           _UxGT("Reposo...")
152
-#define MSG_USERWAIT                        _UxGT("Aguardand ordines")
153
-#define MSG_PRINT_ABORTED                   _UxGT("Impres. cancelada")
154
-#define MSG_NO_MOVE                         _UxGT("Sin movimiento")
155
-#define MSG_KILLED                          _UxGT("Aturada d'emerch.")
156
-#define MSG_STOPPED                         _UxGT("Aturada.")
157
-#define MSG_CONTROL_RETRACT                 _UxGT("Retraer mm")
158
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Swap Retraer mm")
159
-#define MSG_CONTROL_RETRACTF                _UxGT("Retraer  F")
160
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Devantar mm")
161
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("DesRet mm")
162
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Swap DesRet mm")
163
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("DesRet F")
164
-#define MSG_AUTORETRACT                     _UxGT("Retraccion auto.")
165
-#define MSG_FILAMENTCHANGE                  _UxGT("Cambear filamento")
166
-#define MSG_INIT_MEDIA                      _UxGT("Encetan. tarcheta")
167
-#define MSG_CHANGE_MEDIA                    _UxGT("Cambiar tarcheta")
168
-#define MSG_ZPROBE_OUT                      _UxGT("Sonda Z fuera")
169
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Auto-Test")
170
-#define MSG_BLTOUCH_RESET                   _UxGT("Reset BLTouch")
171
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s first")
172
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Desfase Z")
173
-#define MSG_BABYSTEP_X                      _UxGT("Micropaso X")
174
-#define MSG_BABYSTEP_Y                      _UxGT("Micropaso Y")
175
-#define MSG_BABYSTEP_Z                      _UxGT("Micropaso Z")
176
-#define MSG_ENDSTOP_ABORT                   _UxGT("Cancelado - Endstop")
177
-#define MSG_HEATING_FAILED_LCD              _UxGT("Error: en calentar")
178
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Error: temperatura")
179
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Error de temperatura")
180
-#define MSG_ERR_MAXTEMP                     _UxGT("Error: Temp Maxima")
181
-#define MSG_ERR_MINTEMP                     _UxGT("Error: Temp Menima")
182
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Error: Temp Max base")
183
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Error: Temp Min base")
184
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY first")
185
-#define MSG_HALTED                          _UxGT("IMPRESORA ATURADA")
186
-#define MSG_PLEASE_RESET                    _UxGT("Per favor reinic.")
187
-#define MSG_SHORT_DAY                       _UxGT("d")
188
-#define MSG_SHORT_HOUR                      _UxGT("h")
189
-#define MSG_SHORT_MINUTE                    _UxGT("m")
190
-#define MSG_HEATING                         _UxGT("Calentando...")
191
-#define MSG_BED_HEATING                     _UxGT("Calentando base...")
192
-#define MSG_DELTA_CALIBRATE                 _UxGT("Calibracion Delta")
193
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Calibrar X")
194
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Calibrar Y")
195
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Calibrar Z")
196
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrar Centro")
35
+namespace Language_an {
36
+  using namespace Language_en; // Inherit undefined strings from English
197 37
 
198
-#define MSG_INFO_MENU                       _UxGT("Inf. Impresora")
199
-#define MSG_INFO_PRINTER_MENU               _UxGT("Inf. Impresora")
200
-#define MSG_INFO_STATS_MENU                 _UxGT("Estadisticas Imp.")
201
-#define MSG_INFO_BOARD_MENU                 _UxGT("Inf. Controlador")
202
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistors")
203
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extrusors")
204
-#define MSG_INFO_BAUDRATE                   _UxGT("Baudios")
205
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocolo")
206
-#define MSG_CASE_LIGHT                      _UxGT("Luz")
38
+  constexpr uint8_t    CHARSIZE                            = 1;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Aragonese");
207 40
 
208
-#if LCD_WIDTH >= 20
209
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Conteo de impresion")
210
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Completadas")
211
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tiempo total d'imp.")
212
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Impresion mas larga")
213
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Total d'extrusion")
214
-#else
215
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Impresions")
216
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Completadas")
217
-  #define MSG_INFO_PRINT_TIME               _UxGT("Total")
218
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Mas larga")
219
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extrusion")
220
-#endif
41
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" parada.");
42
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Tarcheta mesa");
43
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Tarcheta sacada");
44
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Endstops"); // Max length 8 characters
45
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu prencipal");
46
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Inicio automatico");
47
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Amortar motors");
48
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Levar a l'orichen");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Orichen X");
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Orichen Y");
51
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Orichen Z");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Orichen XYZ");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Encetar (pretar)");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Vinient punto");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Nivelacion feita!");
56
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Achustar desfases");
57
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Desfase aplicau");
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_H0                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N0;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N1;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N2;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N3;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N4;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N5;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N0;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N1;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N2;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N3;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N4;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N5;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
74
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
75
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
76
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Precalentar ") PREHEAT_2_LABEL;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N0;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N1;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N2;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N3;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N4;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Precal. ") PREHEAT_2_LABEL " " LCD_STR_N5;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla");
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N0;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N1;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N2;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N3;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N4;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N5;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Tot");
91
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Base");
92
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Conf");
93
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Enfriar");
94
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Enchegar Fuent");
95
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Amortar Fuent");
96
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extruir");
97
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retraer");
98
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Mover Eixes");
99
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Nivelar base");
100
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Nivelar base");
101
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mover X");
102
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mover Y");
103
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mover Z");
104
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Extrusor");
105
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Extrusor ") LCD_STR_E0;
106
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Extrusor ") LCD_STR_E1;
107
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Extrusor ") LCD_STR_E2;
108
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Extrusor ") LCD_STR_E3;
109
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Extrusor ") LCD_STR_E4;
110
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Extrusor ") LCD_STR_E5;
111
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mover %smm");
112
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mover 0.1mm");
113
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mover 1mm");
114
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mover 10mm");
115
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Velocidat");
116
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Base Z");
117
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Boquilla");
118
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Boquilla ") LCD_STR_N0;
119
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Boquilla ") LCD_STR_N1;
120
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Boquilla ") LCD_STR_N2;
121
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Boquilla ") LCD_STR_N3;
122
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Boquilla ") LCD_STR_N4;
123
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Boquilla ") LCD_STR_N5;
124
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Base");
125
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Ixoriador");
126
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Ixoriador 1");
127
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Ixoriador 2");
128
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Ixoriador 3");
129
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Fluxo");
130
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Fluxo ") LCD_STR_N0;
131
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Fluxo ") LCD_STR_N1;
132
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Fluxo ") LCD_STR_N2;
133
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Fluxo ") LCD_STR_N3;
134
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Fluxo ") LCD_STR_N4;
135
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Fluxo ") LCD_STR_N5;
136
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Control");
137
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Temperatura Auto.");
138
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Trigar");
139
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Trigar ") LCD_STR_E0;
140
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Trigar ") LCD_STR_E1;
141
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Trigar ") LCD_STR_E2;
142
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Trigar ") LCD_STR_E3;
143
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Trigar ") LCD_STR_E4;
144
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Trigar ") LCD_STR_E5;
145
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Aceleracion");
146
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vel. viache min");
147
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Accel");
148
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Acel. max") LCD_STR_A;
149
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Acel. max") LCD_STR_B;
150
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Acel. max") LCD_STR_C;
151
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Acel. max") LCD_STR_E;
152
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Acel. max ") LCD_STR_E0;
153
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Acel. max ") LCD_STR_E1;
154
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Acel. max ") LCD_STR_E2;
155
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Acel. max ") LCD_STR_E3;
156
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Acel. max ") LCD_STR_E4;
157
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Acel. max ") LCD_STR_E5;
158
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Acel. retrac.");
159
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Acel. Viaje");
160
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Trangos/mm");
161
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT(" trangos/mm");
162
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT(" trangos/mm");
163
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT(" trangos/mm");
164
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E trangos/mm");
165
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" trangos/mm");
166
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" trangos/mm");
167
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" trangos/mm");
168
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" trangos/mm");
169
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" trangos/mm");
170
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" trangos/mm");
171
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
172
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Movimiento");
173
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filamento");
174
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm3");
175
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Fil. Dia.");
176
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Fil. Dia. ") LCD_STR_E0;
177
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Fil. Dia. ") LCD_STR_E1;
178
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Fil. Dia. ") LCD_STR_E2;
179
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Fil. Dia. ") LCD_STR_E3;
180
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Fil. Dia. ") LCD_STR_E4;
181
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Fil. Dia. ") LCD_STR_E5;
182
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Contraste");
183
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Alzar memoria");
184
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Cargar memoria");
185
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Restaurar memoria");
186
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Tornar a cargar");
187
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Informacion");
188
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Preparar");
189
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Achustar");
190
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausar impresion");
191
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Contin. impresion");
192
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Detener Impresion");
193
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Menu de SD");
194
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("No i hai tarcheta");
195
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Reposo...");
196
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Aguardand ordines");
197
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Impres. cancelada");
198
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Sin movimiento");
199
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("Aturada d'emerch.");
200
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("Aturada.");
201
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Retraer mm");
202
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Swap Retraer mm");
203
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Retraer  F");
204
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Devantar mm");
205
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("DesRet mm");
206
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Swap DesRet mm");
207
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("DesRet F");
208
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Retraccion auto.");
209
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Cambear filamento");
210
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Cambear filamento ") LCD_STR_E0;
211
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Cambear filamento ") LCD_STR_E1;
212
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Cambear filamento ") LCD_STR_E2;
213
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Cambear filamento ") LCD_STR_E3;
214
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Cambear filamento ") LCD_STR_E4;
215
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Cambear filamento ") LCD_STR_E5;
216
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Encetan. tarcheta");
217
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Cambiar tarcheta");
218
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sonda Z fuera");
219
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Reset BLTouch");
220
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Desfase Z");
221
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Micropaso X");
222
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Micropaso Y");
223
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Micropaso Z");
224
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Cancelado - Endstop");
225
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Error: en calentar");
226
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Error: temperatura");
227
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Error de temperatura");
228
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Error: Temp Max");
229
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Error: Temp Min");
230
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY first");
231
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("IMPRESORA ATURADA");
232
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Per favor reinic.");
233
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d");
234
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h");
235
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m");
236
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Calentando...");
237
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Calentando base...");
238
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Calibracion Delta");
239
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Calibrar X");
240
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Calibrar Y");
241
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Calibrar Z");
242
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Calibrar Centro");
221 243
 
222
-#define MSG_INFO_MIN_TEMP                   _UxGT("Temperatura menima")
223
-#define MSG_INFO_MAX_TEMP                   _UxGT("Temperatura maxima")
224
-#define MSG_INFO_PSU                        _UxGT("Fuente de aliment")
244
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Inf. Impresora");
245
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Inf. Impresora");
246
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Estadisticas Imp.");
247
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Inf. Controlador");
248
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistors");
249
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extrusors");
250
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baudios");
251
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protocolo");
252
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Luz");
225 253
 
226
-#define MSG_DRIVE_STRENGTH                  _UxGT("Fuerza d'o driver")
227
-#define MSG_DAC_PERCENT                     _UxGT("Driver %")
228
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Escri. DAC EEPROM")
229
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resumir imp.")
254
+  #if LCD_WIDTH >= 20
255
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Conteo de impresion");
256
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Completadas");
257
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tiempo total d'imp.");
258
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Impresion mas larga");
259
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Total d'extrusion");
260
+  #else
261
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Impresions");
262
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Completadas");
263
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Total");
264
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Mas larga");
265
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extrusion");
266
+  #endif
230 267
 
231
-//
232
-// Filament Change screens show up to 3 lines on a 4-line display
233
-//                        ...or up to 2 lines on a 3-line display
234
-//
235
-#define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Aguardand iniciar")
268
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Temperatura menima");
269
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Temperatura maxima");
270
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Fuente de aliment");
236 271
 
237
-#define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Meta o filamento")
238
-#define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("y prete lo boton")
272
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Fuerza d'o driver");
273
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Escri. DAC EEPROM");
274
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Resumir imp.");
239 275
 
240
-#if LCD_HEIGHT >= 4
241
-  // Up to 3 lines allowed
242
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("d'o filamento")
243
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("cambear")
244
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("pa continar...")
245
-#else // LCD_HEIGHT < 4
246
-  // Up to 2 lines allowed
247
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("d'o fil. cambear")
248
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Meta o filamento")
249
-#endif // LCD_HEIGHT < 4
276
+  //
277
+  // Filament Change screens show up to 3 lines on a 4-line display
278
+  //                        ...or up to 2 lines on a 3-line display
279
+  //
250 280
 
251
-#define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Aguardando a")
252
-#define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("expulsar filament")
253
-#define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Aguardando a")
254
-#define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("cargar filamento")
255
-#define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Aguardando impre.")
256
-#define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("pa continar")
281
+  #if LCD_HEIGHT >= 4
282
+    // Up to 3 lines allowed
283
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear"));
284
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar..."));
285
+  #else // LCD_HEIGHT < 4
286
+    // Up to 2 lines allowed
287
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear"));
288
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton"));
289
+  #endif // LCD_HEIGHT < 4
290
+
291
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD          = _UxGT(MSG_2_LINE("Aguardando a", "expulsar filament"));
292
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD            = _UxGT(MSG_2_LINE("Aguardando a", "cargar filamento"));
293
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME          = _UxGT(MSG_2_LINE("Aguardando impre.", "pa continar"));
294
+}

+ 173
- 115
Marlin/src/lcd/language/language_bg.h Zobrazit soubor

@@ -28,120 +28,178 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+
31 32
 #define DISPLAY_CHARSET_ISO10646_5
32
-#define CHARSIZE 2
33 33
 
34
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" Готов.")
35
-#define MSG_MEDIA_INSERTED                  _UxGT("Картата е поставена")
36
-#define MSG_MEDIA_REMOVED                   _UxGT("Картата е извадена")
37
-#define MSG_MAIN                            _UxGT("Меню")
38
-#define MSG_AUTOSTART                       _UxGT("Автостарт")
39
-#define MSG_DISABLE_STEPPERS                _UxGT("Изкл. двигатели")
40
-#define MSG_AUTO_HOME                       _UxGT("Паркиране")
41
-#define MSG_SET_HOME_OFFSETS                _UxGT("Задай Начало")
42
-#define MSG_SET_ORIGIN                      _UxGT("Изходна точка")
43
-#define MSG_PREHEAT_1                       _UxGT("Подгряване " PREHEAT_1_LABEL)
44
-#define MSG_PREHEAT_1_N                     _UxGT("Подгряване " PREHEAT_1_LABEL)
45
-#define MSG_PREHEAT_1_ALL                   _UxGT("Подгр. " PREHEAT_1_LABEL " Всички")
46
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Подгр. " PREHEAT_1_LABEL " Легло")
47
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Настройки " PREHEAT_1_LABEL)
48
-#define MSG_PREHEAT_2                       _UxGT("Подгряване " PREHEAT_2_LABEL)
49
-#define MSG_PREHEAT_2_N                     _UxGT("Подгряване " PREHEAT_2_LABEL)
50
-#define MSG_PREHEAT_2_ALL                   _UxGT("Подгр. " PREHEAT_2_LABEL " Всички")
51
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Подгр. " PREHEAT_2_LABEL " Легло")
52
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Настройки " PREHEAT_2_LABEL)
53
-#define MSG_COOLDOWN                        _UxGT("Охлаждане")
54
-#define MSG_SWITCH_PS_ON                    _UxGT("Вкл. захранване")
55
-#define MSG_SWITCH_PS_OFF                   _UxGT("Изкл. захранване")
56
-#define MSG_EXTRUDE                         _UxGT("Екструзия")
57
-#define MSG_RETRACT                         _UxGT("Откат")
58
-#define MSG_MOVE_AXIS                       _UxGT("Движение по ос")
59
-#define MSG_BED_LEVELING                    _UxGT("Нивелиране")
60
-#define MSG_LEVEL_BED                       _UxGT("Нивелиране")
61
-#define MSG_MOVE_X                          _UxGT("Движение по X")
62
-#define MSG_MOVE_Y                          _UxGT("Движение по Y")
63
-#define MSG_MOVE_Z                          _UxGT("Движение по Z")
64
-#define MSG_MOVE_E                          _UxGT("Екструдер")
65
-#define MSG_MOVE_Z_DIST                     _UxGT("Премести с %smm")
66
-#define MSG_MOVE_01MM                       _UxGT("Премести с 0.1mm")
67
-#define MSG_MOVE_1MM                        _UxGT("Премести с 1mm")
68
-#define MSG_MOVE_10MM                       _UxGT("Премести с 10mm")
69
-#define MSG_SPEED                           _UxGT("Скорост")
70
-#define MSG_BED_Z                           _UxGT("Bed Z")
71
-#define MSG_NOZZLE                          LCD_STR_THERMOMETER _UxGT(" Дюза")
72
-#define MSG_BED                             LCD_STR_THERMOMETER _UxGT(" Легло")
73
-#define MSG_FAN_SPEED                       _UxGT("Вентилатор")
74
-#define MSG_FLOW                            _UxGT("Поток")
75
-#define MSG_CONTROL                         _UxGT("Управление")
76
-#define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" Минимум")
77
-#define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" Максимум")
78
-#define MSG_FACTOR                          LCD_STR_THERMOMETER _UxGT(" Фактор")
79
-#define MSG_AUTOTEMP                        _UxGT("Авто-темп.")
80
-#define MSG_LCD_ON                          _UxGT("Вкл.")
81
-#define MSG_LCD_OFF                         _UxGT("Изкл.")
82
-#define MSG_A_RETRACT                       _UxGT("A-откат")
83
-#define MSG_A_TRAVEL                        _UxGT("A-travel")
84
-#define MSG_STEPS_PER_MM                    _UxGT("Стъпки/mm")
85
-#if IS_KINEMATIC
86
-  #define MSG_ASTEPS                        _UxGT("Aстъпки/mm")
87
-  #define MSG_BSTEPS                        _UxGT("Bстъпки/mm")
88
-  #define MSG_CSTEPS                        _UxGT("Cстъпки/mm")
89
-#else
90
-  #define MSG_ASTEPS                        _UxGT("Xстъпки/mm")
91
-  #define MSG_BSTEPS                        _UxGT("Yстъпки/mm")
92
-  #define MSG_CSTEPS                        _UxGT("Zстъпки/mm")
93
-#endif
94
-#define MSG_ESTEPS                          _UxGT("E стъпки/mm")
95
-#define MSG_E0_STEPS                        _UxGT("E1 стъпки/mm")
96
-#define MSG_E1_STEPS                        _UxGT("E2 стъпки/mm")
97
-#define MSG_E2_STEPS                        _UxGT("E3 стъпки/mm")
98
-#define MSG_E3_STEPS                        _UxGT("E4 стъпки/mm")
99
-#define MSG_E4_STEPS                        _UxGT("E5 стъпки/mm")
100
-#define MSG_E5_STEPS                        _UxGT("E6 стъпки/mm")
101
-#define MSG_TEMPERATURE                     _UxGT("Температура")
102
-#define MSG_MOTION                          _UxGT("Движение")
103
-#define MSG_FILAMENT                        _UxGT("Нишка")
104
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm3")
105
-#define MSG_FILAMENT_DIAM                   _UxGT("Диам. нишка")
106
-#define MSG_CONTRAST                        _UxGT("LCD контраст")
107
-#define MSG_STORE_EEPROM                    _UxGT("Запази в EPROM")
108
-#define MSG_LOAD_EEPROM                     _UxGT("Зареди от EPROM")
109
-#define MSG_RESTORE_FAILSAFE                _UxGT("Фабрични настройки")
110
-#define MSG_REFRESH                         LCD_STR_REFRESH _UxGT("Обнови")
111
-#define MSG_WATCH                           _UxGT("Преглед")
112
-#define MSG_PREPARE                         _UxGT("Действия")
113
-#define MSG_TUNE                            _UxGT("Настройка")
114
-#define MSG_PAUSE_PRINT                     _UxGT("Пауза")
115
-#define MSG_RESUME_PRINT                    _UxGT("Възобнови печата")
116
-#define MSG_STOP_PRINT                      _UxGT("Спри печата")
117
-#define MSG_MEDIA_MENU                      _UxGT("Меню карта")
118
-#define MSG_NO_MEDIA                        _UxGT("Няма карта")
119
-#define MSG_DWELL                           _UxGT("Почивка...")
120
-#define MSG_USERWAIT                        _UxGT("Изчакване")
121
-#define MSG_PRINT_ABORTED                   _UxGT("Печатът е прекъснат")
122
-#define MSG_NO_MOVE                         _UxGT("Няма движение")
123
-#define MSG_KILLED                          _UxGT("УБИТО.")
124
-#define MSG_STOPPED                         _UxGT("СПРЯНО.")
125
-#define MSG_CONTROL_RETRACT                 _UxGT("Откат mm")
126
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Смяна Откат mm")
127
-#define MSG_CONTROL_RETRACTF                _UxGT("Откат  V")
128
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Скок mm")
129
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Възврат mm")
130
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Смяна Възврат mm")
131
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Възврат  V")
132
-#define MSG_AUTORETRACT                     _UxGT("Автоoткат")
133
-#define MSG_FILAMENTCHANGE                  _UxGT("Смяна нишка")
134
-#define MSG_INIT_MEDIA                      _UxGT("Иниц. SD-Карта")
135
-#define MSG_CHANGE_MEDIA                    _UxGT("Смяна SD-Карта")
136
-#define MSG_ZPROBE_OUT                      _UxGT("Z-сондата е извадена")
137
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Отстояние")
138
-#define MSG_BABYSTEP_X                      _UxGT("Министъпка X")
139
-#define MSG_BABYSTEP_Y                      _UxGT("Министъпка Y")
140
-#define MSG_BABYSTEP_Z                      _UxGT("Министъпка Z")
141
-#define MSG_ENDSTOP_ABORT                   _UxGT("Стоп Кр.Изключватели")
142
-#define MSG_DELTA_CALIBRATE                 _UxGT("Делта Калибровка")
143
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Калибровка X")
144
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Калибровка Y")
145
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Калибровка Z")
146
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Калибровка Център")
147
-#define MSG_EXPECTED_PRINTER                _UxGT("Неправилен принтер")
34
+namespace Language_bg {
35
+  using namespace Language_en; // Inherit undefined strings from English
36
+
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Bulgarian");
39
+
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" Готов.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Картата е поставена");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Картата е извадена");
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Меню");
44
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Автостарт");
45
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Изкл. двигатели");
46
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Паркиране");
47
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Задай Начало");
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_H0                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N0;
51
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N1;
52
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N2;
53
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N3;
54
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N4;
55
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N5;
56
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
57
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N0;
58
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N1;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N2;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N3;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N4;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N5;
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_2_LABEL;
66
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Подгряване ") PREHEAT_2_LABEL;
67
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N0;
68
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N1;
69
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N2;
70
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N3;
71
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N4;
72
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N5;
73
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза");
74
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N0;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N1;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N2;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N3;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N4;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N5;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Всички");
81
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Легло");
82
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Настройки ") PREHEAT_2_LABEL;
83
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Охлаждане");
84
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Вкл. захранване");
85
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Изкл. захранване");
86
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Екструзия");
87
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Откат");
88
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Движение по ос");
89
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Нивелиране");
90
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Нивелиране");
91
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Движение по X");
92
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Движение по Y");
93
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Движение по Z");
94
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Екструдер");
95
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Екструдер ") LCD_STR_E0;
96
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Екструдер ") LCD_STR_E1;
97
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Екструдер ") LCD_STR_E2;
98
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Екструдер ") LCD_STR_E3;
99
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Екструдер ") LCD_STR_E4;
100
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Екструдер ") LCD_STR_E5;
101
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Премести с %smm");
102
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Премести с 0.1mm");
103
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Премести с 1mm");
104
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Премести с 10mm");
105
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Скорост");
106
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Bed Z");
107
+  PROGMEM Language_Str MSG_NOZZLE                          = " " LCD_STR_THERMOMETER _UxGT(" Дюза");
108
+  PROGMEM Language_Str MSG_NOZZLE_0                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N0;
109
+  PROGMEM Language_Str MSG_NOZZLE_1                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N1;
110
+  PROGMEM Language_Str MSG_NOZZLE_2                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N2;
111
+  PROGMEM Language_Str MSG_NOZZLE_3                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N3;
112
+  PROGMEM Language_Str MSG_NOZZLE_4                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N4;
113
+  PROGMEM Language_Str MSG_NOZZLE_5                        = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N5;
114
+  PROGMEM Language_Str MSG_BED                             = " " LCD_STR_THERMOMETER _UxGT(" Легло");
115
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Вентилатор");
116
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Вентилатор 1");
117
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Вентилатор 2");
118
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Вентилатор 3");
119
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Поток");
120
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Поток ") LCD_STR_N0;
121
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Поток ") LCD_STR_N1;
122
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Поток ") LCD_STR_N2;
123
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Поток ") LCD_STR_N3;
124
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Поток ") LCD_STR_N4;
125
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Поток ") LCD_STR_N5;
126
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Управление");
127
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Минимум");
128
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Максимум");
129
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Фактор");
130
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Авто-темп.");
131
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Вкл.");
132
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Изкл.");
133
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-откат");
134
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-travel");
135
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Стъпки/mm");
136
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("стъпки/mm");
137
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("стъпки/mm");
138
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("стъпки/mm");
139
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E стъпки/mm");
140
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" стъпки/mm");
141
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" стъпки/mm");
142
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" стъпки/mm");
143
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" стъпки/mm");
144
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" стъпки/mm");
145
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" стъпки/mm");
146
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Температура");
147
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Движение");
148
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Нишка");
149
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm3");
150
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Диам. нишка");
151
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Диам. нишка ") LCD_STR_E0;
152
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Диам. нишка ") LCD_STR_E1;
153
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Диам. нишка ") LCD_STR_E2;
154
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Диам. нишка ") LCD_STR_E3;
155
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Диам. нишка ") LCD_STR_E4;
156
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Диам. нишка ") LCD_STR_E5;
157
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD контраст");
158
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Запази в EPROM");
159
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Зареди от EPROM");
160
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Фабрични настройки");
161
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH _UxGT("Обнови");
162
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Преглед");
163
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Действия");
164
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Настройка");
165
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Пауза");
166
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Възобнови печата");
167
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Спри печата");
168
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Меню карта");
169
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Няма карта");
170
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Почивка...");
171
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Изчакване");
172
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Печатът е прекъснат");
173
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Няма движение");
174
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("УБИТО.");
175
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("СПРЯНО.");
176
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Откат mm");
177
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Смяна Откат mm");
178
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Откат  V");
179
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Скок mm");
180
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Възврат mm");
181
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Смяна Възврат mm");
182
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Възврат  V");
183
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Автоoткат");
184
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Смяна нишка");
185
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Смяна нишка ") LCD_STR_E0;
186
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Смяна нишка ") LCD_STR_E1;
187
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Смяна нишка ") LCD_STR_E2;
188
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Смяна нишка ") LCD_STR_E3;
189
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Смяна нишка ") LCD_STR_E4;
190
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Смяна нишка ") LCD_STR_E5;
191
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Иниц. SD-Карта");
192
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Смяна SD-Карта");
193
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z-сондата е извадена");
194
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Z Отстояние");
195
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Министъпка X");
196
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Министъпка Y");
197
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Министъпка Z");
198
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Стоп Кр.Изключватели");
199
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Делта Калибровка");
200
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Калибровка X");
201
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Калибровка Y");
202
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Калибровка Z");
203
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Калибровка Център");
204
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Неправилен принтер");
205
+}

+ 251
- 224
Marlin/src/lcd/language/language_ca.h Zobrazit soubor

@@ -28,236 +28,263 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+namespace Language_ca {
32
+  using namespace Language_en; // Inherit undefined strings from English
31 33
 
32
-#define CHARSIZE 2
34
+  constexpr uint8_t    CHARSIZE                            = 2;
35
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Catalan");
33 36
 
34
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" preparada.")
35
-#define MSG_MEDIA_INSERTED                  _UxGT("Targeta detectada.")
36
-#define MSG_MEDIA_REMOVED                   _UxGT("Targeta extreta.")
37
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops")
38
-#define MSG_MAIN                            _UxGT("Menú principal")
39
-#define MSG_AUTOSTART                       _UxGT("Inici automatic")
40
-#define MSG_DISABLE_STEPPERS                _UxGT("Desactiva motors")
41
-#define MSG_DEBUG_MENU                      _UxGT("Menu de depuracio")
42
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Test barra progres")
43
-#define MSG_AUTO_HOME                       _UxGT("Ves a l'origen")
44
-#define MSG_AUTO_HOME_X                     _UxGT("X a origen")
45
-#define MSG_AUTO_HOME_Y                     _UxGT("Y a origen")
46
-#define MSG_AUTO_HOME_Z                     _UxGT("Z a origen")
47
-#define MSG_LEVEL_BED_HOMING                _UxGT("Origen XYZ")
48
-#define MSG_LEVEL_BED_WAITING               _UxGT("Premeu per iniciar")
49
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Següent punt")
50
-#define MSG_LEVEL_BED_DONE                  _UxGT("Anivellament fet!")
51
-#define MSG_SET_HOME_OFFSETS                _UxGT("Ajusta decalatge")
52
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Decalatge aplicat")
53
-#define MSG_SET_ORIGIN                      _UxGT("Estableix origen")
54
-#define MSG_PREHEAT_1                       _UxGT("Preescalfa " PREHEAT_1_LABEL)
55
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
56
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Tot")
57
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Llit")
58
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" Conf.")
59
-#define MSG_PREHEAT_2                       _UxGT("Preescalfa " PREHEAT_2_LABEL)
60
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
61
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Tot")
62
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Llit")
63
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" Conf.")
64
-#define MSG_COOLDOWN                        _UxGT("Refreda")
65
-#define MSG_SWITCH_PS_ON                    _UxGT("Switch power on")
66
-#define MSG_SWITCH_PS_OFF                   _UxGT("Switch power off")
67
-#define MSG_EXTRUDE                         _UxGT("Extrudeix")
68
-#define MSG_RETRACT                         _UxGT("Retreu")
69
-#define MSG_MOVE_AXIS                       _UxGT("Mou eixos")
70
-#define MSG_BED_LEVELING                    _UxGT("Anivella llit")
71
-#define MSG_LEVEL_BED                       _UxGT("Anivella llit")
37
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" preparada.");
38
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Targeta detectada.");
39
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Targeta extreta.");
40
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Endstops");
41
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menú principal");
42
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Inici automatic");
43
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Desactiva motors");
44
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Menu de depuracio");
45
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Test barra progres");
46
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Ves a l'origen");
47
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("X a origen");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Y a origen");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Z a origen");
50
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Origen XYZ");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Premeu per iniciar");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Següent punt");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Anivellament fet!");
54
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ajusta decalatge");
55
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Decalatge aplicat");
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_H0                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N0;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N1;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N2;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N3;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N4;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N5;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Tot");
72
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Llit");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf.");
74
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Preescalfa ") PREHEAT_2_LABEL;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N0;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N1;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N2;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N3;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N4;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N5;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End");
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Tot");
89
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Llit");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf.");
91
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Refreda");
92
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Switch power on");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Switch power off");
94
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrudeix");
95
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retreu");
96
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Mou eixos");
97
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Anivella llit");
98
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Anivella llit");
72 99
 
73
-#define MSG_MOVING                          _UxGT("Movent..")
74
-#define MSG_FREE_XY                         _UxGT("XY lliures")
75
-#define MSG_MOVE_X                          _UxGT("Mou X")
76
-#define MSG_MOVE_Y                          _UxGT("Mou Y")
77
-#define MSG_MOVE_Z                          _UxGT("Mou Z")
78
-#define MSG_MOVE_E                          _UxGT("Extrusor")
79
-#define MSG_MOVE_Z_DIST                     _UxGT("Mou %smm")
80
-#define MSG_MOVE_01MM                       _UxGT("Mou 0.1mm")
81
-#define MSG_MOVE_1MM                        _UxGT("Mou 1mm")
82
-#define MSG_MOVE_10MM                       _UxGT("Mou 10mm")
83
-#define MSG_SPEED                           _UxGT("Velocitat")
84
-#define MSG_BED_Z                           _UxGT("Llit Z")
85
-#define MSG_NOZZLE                          _UxGT("Nozzle")
86
-#define MSG_BED                             _UxGT("Llit")
87
-#define MSG_FAN_SPEED                       _UxGT("Vel. Ventilador")
88
-#define MSG_FLOW                            _UxGT("Flux")
89
-#define MSG_CONTROL                         _UxGT("Control")
90
-#define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" Min")
91
-#define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" Max")
92
-#define MSG_FACTOR                          LCD_STR_THERMOMETER _UxGT(" Fact")
93
-#define MSG_AUTOTEMP                        _UxGT("Autotemp")
94
-#define MSG_LCD_ON                          _UxGT("On")
95
-#define MSG_LCD_OFF                         _UxGT("Off")
96
-#define MSG_PID_P                           _UxGT("PID-P")
97
-#define MSG_PID_I                           _UxGT("PID-I")
98
-#define MSG_PID_D                           _UxGT("PID-D")
99
-#define MSG_PID_C                           _UxGT("PID-C")
100
-#define MSG_SELECT                          _UxGT("Select")
101
-#define MSG_ACC                             _UxGT("Accel")
102
-#define MSG_JERK                            _UxGT("Jerk")
103
-#if IS_KINEMATIC
104
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
105
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
106
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
107
-#else
108
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
109
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
110
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
111
-#endif
112
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
113
-#define MSG_VMAX                            _UxGT("Vmax ")
114
-#define MSG_VMIN                            _UxGT("Vmin")
115
-#define MSG_VTRAV_MIN                       _UxGT("VViatge min")
116
-#define MSG_AMAX                            _UxGT("Accel. max ")
117
-#define MSG_A_RETRACT                       _UxGT("Accel. retracc")
118
-#define MSG_A_TRAVEL                        _UxGT("Accel. Viatge")
119
-#define MSG_STEPS_PER_MM                    _UxGT("Passos/mm")
120
-#if IS_KINEMATIC
121
-  #define MSG_ASTEPS                        _UxGT("Apassos/mm")
122
-  #define MSG_BSTEPS                        _UxGT("Bpassos/mm")
123
-  #define MSG_CSTEPS                        _UxGT("Cpassos/mm")
124
-#else
125
-  #define MSG_ASTEPS                        _UxGT("Xpassos/mm")
126
-  #define MSG_BSTEPS                        _UxGT("Ypassos/mm")
127
-  #define MSG_CSTEPS                        _UxGT("Zpassos/mm")
128
-#endif
129
-#define MSG_ESTEPS                          _UxGT("Epassos/mm")
130
-#define MSG_E0_STEPS                        _UxGT("E1passos/mm")
131
-#define MSG_E1_STEPS                        _UxGT("E2passos/mm")
132
-#define MSG_E2_STEPS                        _UxGT("E3passos/mm")
133
-#define MSG_E3_STEPS                        _UxGT("E4passos/mm")
134
-#define MSG_E4_STEPS                        _UxGT("E5passos/mm")
135
-#define MSG_E5_STEPS                        _UxGT("E6passos/mm")
136
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
137
-#define MSG_MOTION                          _UxGT("Moviment")
138
-#define MSG_FILAMENT                        _UxGT("Filament")
139
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E en mm3")
140
-#define MSG_FILAMENT_DIAM                   _UxGT("Diam. Fil.")
141
-#define MSG_CONTRAST                        _UxGT("Contrast de LCD")
142
-#define MSG_STORE_EEPROM                    _UxGT("Desa memoria")
143
-#define MSG_LOAD_EEPROM                     _UxGT("Carrega memoria")
144
-#define MSG_RESTORE_FAILSAFE                _UxGT("Restaura valors")
145
-#define MSG_REFRESH                         _UxGT("Actualitza")
146
-#define MSG_WATCH                           _UxGT("Pantalla Info.")
147
-#define MSG_PREPARE                         _UxGT("Prepara")
148
-#define MSG_TUNE                            _UxGT("Ajusta")
149
-#define MSG_PAUSE_PRINT                     _UxGT("Pausa impressio")
150
-#define MSG_RESUME_PRINT                    _UxGT("Repren impressio")
151
-#define MSG_STOP_PRINT                      _UxGT("Atura impressio.")
152
-#define MSG_MEDIA_MENU                      _UxGT("Imprimeix de SD")
153
-#define MSG_NO_MEDIA                        _UxGT("No hi ha targeta")
154
-#define MSG_DWELL                           _UxGT("En repos...")
155
-#define MSG_USERWAIT                        _UxGT("Esperant usuari..")
156
-#define MSG_PRINT_ABORTED                   _UxGT("Imp. cancelada")
157
-#define MSG_NO_MOVE                         _UxGT("Sense moviment.")
158
-#define MSG_KILLED                          _UxGT("MATAT.")
159
-#define MSG_STOPPED                         _UxGT("ATURADA.")
160
-#define MSG_CONTROL_RETRACT                 _UxGT("Retreu mm")
161
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Swap Retreure mm")
162
-#define MSG_CONTROL_RETRACTF                _UxGT("Retreu V")
163
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Aixeca mm")
164
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("DesRet +mm")
165
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Swap DesRet +mm")
166
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("DesRet V")
167
-#define MSG_AUTORETRACT                     _UxGT("Auto retraccio")
168
-#define MSG_FILAMENTCHANGE                  _UxGT("Canvia filament")
169
-#define MSG_INIT_MEDIA                      _UxGT("Inicialitza SD")
170
-#define MSG_CHANGE_MEDIA                    _UxGT("Canvia SD")
171
-#define MSG_ZPROBE_OUT                      _UxGT("Sonda Z fora")
172
-#define MSG_BLTOUCH_RESET                   _UxGT("Reinicia BLTouch")
173
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s primer")
174
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Decalatge Z")
175
-#define MSG_BABYSTEP_X                      _UxGT("Micropas X")
176
-#define MSG_BABYSTEP_Y                      _UxGT("Micropas Y")
177
-#define MSG_BABYSTEP_Z                      _UxGT("Micropas Z")
178
-#define MSG_ENDSTOP_ABORT                   _UxGT("Cancel. Endstop")
179
-#define MSG_HEATING_FAILED_LCD              _UxGT("Error al escalfar")
180
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Err: TEMP REDUNDANT")
181
-#define MSG_THERMAL_RUNAWAY                 _UxGT("THERMAL RUNAWAY")
182
-#define MSG_ERR_MAXTEMP                     _UxGT("Err: TEMP MAXIMA")
183
-#define MSG_ERR_MINTEMP                     _UxGT("Err: TEMP MINIMA")
184
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Err: TEMPMAX LLIT")
185
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Err: TEMPMIN LLIT")
186
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY primer")
187
-#define MSG_HALTED                          _UxGT("IMPRESSORA PARADA")
188
-#define MSG_PLEASE_RESET                    _UxGT("Reinicieu")
189
-#define MSG_SHORT_DAY                       _UxGT("d") // One character only
190
-#define MSG_SHORT_HOUR                      _UxGT("h") // One character only
191
-#define MSG_SHORT_MINUTE                    _UxGT("m") // One character only
192
-#define MSG_HEATING                         _UxGT("Escalfant...")
193
-#define MSG_BED_HEATING                     _UxGT("Escalfant llit...")
194
-#define MSG_DELTA_CALIBRATE                 _UxGT("Calibratge Delta")
195
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Calibra X")
196
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Calibra Y")
197
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Calibra Z")
198
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibra el centre")
100
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Movent..");
101
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("XY lliures");
102
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mou X");
103
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mou Y");
104
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mou Z");
105
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Extrusor");
106
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Extrusor ") LCD_STR_E0;
107
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Extrusor ") LCD_STR_E1;
108
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Extrusor ") LCD_STR_E2;
109
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Extrusor ") LCD_STR_E3;
110
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Extrusor ") LCD_STR_E4;
111
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Extrusor ") LCD_STR_E5;
112
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mou %smm");
113
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mou 0.1mm");
114
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mou 1mm");
115
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mou 10mm");
116
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Velocitat");
117
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Llit Z");
118
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Nozzle");
119
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Nozzle ") LCD_STR_N0;
120
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Nozzle ") LCD_STR_N1;
121
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Nozzle ") LCD_STR_N2;
122
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Nozzle ") LCD_STR_N3;
123
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Nozzle ") LCD_STR_N4;
124
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Nozzle ") LCD_STR_N5;
125
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Llit");
126
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Vel. Ventilador");
127
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Vel. Ventilador 1");
128
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Vel. Ventilador 2");
129
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Vel. Ventilador 3");
130
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Flux");
131
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Flux ") LCD_STR_N0;
132
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Flux ") LCD_STR_N1;
133
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Flux ") LCD_STR_N2;
134
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Flux ") LCD_STR_N3;
135
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Flux ") LCD_STR_N4;
136
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Flux ") LCD_STR_N5;
137
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("VViatge min");
138
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Accel. max ") LCD_STR_A;
139
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Accel. max ") LCD_STR_B;
140
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Accel. max ") LCD_STR_C;
141
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Accel. max ") LCD_STR_E;
142
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Accel. max ") LCD_STR_E0;
143
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Accel. max ") LCD_STR_E1;
144
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Accel. max ") LCD_STR_E2;
145
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Accel. max ") LCD_STR_E3;
146
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Accel. max ") LCD_STR_E4;
147
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Accel. max ") LCD_STR_E5;
148
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Accel. retracc");
149
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Accel. Viatge");
150
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Passos/mm");
151
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("passos/mm");
152
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("passos/mm");
153
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("passos/mm");
154
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("Epassos/mm");
155
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT("passos/mm");
156
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT("passos/mm");
157
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT("passos/mm");
158
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT("passos/mm");
159
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT("passos/mm");
160
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT("passos/mm");
161
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
162
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Moviment");
163
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filament");
164
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E en mm3");
165
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Diam. Fil.");
166
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Diam. Fil. ") LCD_STR_E0;
167
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Diam. Fil. ") LCD_STR_E1;
168
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Diam. Fil. ") LCD_STR_E2;
169
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Diam. Fil. ") LCD_STR_E3;
170
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Diam. Fil. ") LCD_STR_E4;
171
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Diam. Fil. ") LCD_STR_E5;
172
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Contrast de LCD");
173
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Desa memoria");
174
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Carrega memoria");
175
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Restaura valors");
176
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Actualitza");
177
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Pantalla Info.");
178
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Prepara");
179
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Ajusta");
180
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausa impressio");
181
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Repren impressio");
182
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Atura impressio.");
183
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Imprimeix de SD");
184
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("No hi ha targeta");
185
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("En repos...");
186
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Esperant usuari..");
187
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Imp. cancelada");
188
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Sense moviment.");
189
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("MATAT.");
190
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ATURADA.");
191
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Retreu mm");
192
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Swap Retreure mm");
193
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Retreu V");
194
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Aixeca mm");
195
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("DesRet +mm");
196
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Swap DesRet +mm");
197
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("DesRet V");
198
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Auto retraccio");
199
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Canvia filament");
200
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Canvia filament ") LCD_STR_E0;
201
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Canvia filament ") LCD_STR_E1;
202
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Canvia filament ") LCD_STR_E2;
203
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Canvia filament ") LCD_STR_E3;
204
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Canvia filament ") LCD_STR_E4;
205
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Canvia filament ") LCD_STR_E5;
206
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Inicialitza SD");
207
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Canvia SD");
208
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sonda Z fora");
209
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Reinicia BLTouch");
210
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Home %s%s%s primer");
211
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Decalatge Z");
212
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Micropas X");
213
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Micropas Y");
214
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Micropas Z");
215
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Cancel. Endstop");
216
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Error al escalfar");
217
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Err: TEMP REDUNDANT");
218
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("THERMAL RUNAWAY");
219
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Err: TEMP MAXIMA");
220
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Err: TEMP MINIMA");
221
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY primer");
222
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("IMPRESSORA PARADA");
223
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Reinicieu");
224
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d"); // One character only
225
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h"); // One character only
226
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m"); // One character only
227
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Escalfant...");
228
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Escalfant llit...");
229
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Calibratge Delta");
230
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Calibra X");
231
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Calibra Y");
232
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Calibra Z");
233
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Calibra el centre");
199 234
 
200
-#define MSG_INFO_MENU                       _UxGT("Quant a la impr.")
201
-#define MSG_INFO_PRINTER_MENU               _UxGT("Info Impressora")
202
-#define MSG_INFO_STATS_MENU                 _UxGT("Estadistiques")
203
-#define MSG_INFO_BOARD_MENU                 _UxGT("Info placa")
204
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistors")
205
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extrusors")
206
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")
207
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocol")
208
-#define MSG_CASE_LIGHT                      _UxGT("Llum")
235
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Quant a la impr.");
236
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Info Impressora");
237
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Estadistiques");
238
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Info placa");
239
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistors");
240
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extrusors");
241
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baud");
242
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protocol");
243
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Llum");
209 244
 
210
-#if LCD_WIDTH >= 20
211
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Total impressions")
212
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Acabades")
213
-  #define MSG_INFO_PRINT_TIME               _UxGT("Temps imprimint")
214
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Treball mes llarg")
215
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Total extrudit")
216
-#else
217
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Impressions")
218
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Acabades")
219
-  #define MSG_INFO_PRINT_TIME               _UxGT("Total")
220
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Mes llarg")
221
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extrudit")
222
-#endif
245
+  #if LCD_WIDTH >= 20
246
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Total impressions");
247
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Acabades");
248
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Temps imprimint");
249
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Treball mes llarg");
250
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Total extrudit");
251
+  #else
252
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Impressions");
253
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Acabades");
254
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Total");
255
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Mes llarg");
256
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extrudit");
257
+  #endif
223 258
 
224
-#define MSG_INFO_MIN_TEMP                   _UxGT("Temp. mínima")
225
-#define MSG_INFO_MAX_TEMP                   _UxGT("Temp. màxima")
226
-#define MSG_INFO_PSU                        _UxGT("Font alimentacio")
259
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Temp. mínima");
260
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Temp. màxima");
261
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Font alimentacio");
227 262
 
228
-#define MSG_DRIVE_STRENGTH                  _UxGT("Força motor")
229
-#define MSG_DAC_PERCENT                     _UxGT("Driver %")
230
-#define MSG_DAC_EEPROM_WRITE                _UxGT("DAC EEPROM Write")
231
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Repren impressió")
263
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Força motor");
264
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Driver %");
265
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("DAC EEPROM Write");
266
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Repren impressió");
232 267
 
233
-#define MSG_EXPECTED_PRINTER                _UxGT("Impressora incorrecta")
268
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Impressora incorrecta");
234 269
 
235
-//
236
-// Filament Change screens show up to 3 lines on a 4-line display
237
-//                        ...or up to 2 lines on a 3-line display
238
-//
239
-#if LCD_HEIGHT >= 4
240
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Esperant per")
241
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("iniciar el canvi")
242
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("de filament")
243
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Esperant per")
244
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("treure filament")
245
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Poseu filament")
246
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("i premeu el boto")
247
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("per continuar...")
248
-  #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Premeu boto per")
249
-  #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("escalfar nozzle.")
250
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Escalfant nozzle")
251
-  #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Espereu...")
252
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Esperant carrega")
253
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("de filament")
254
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Esperant per")
255
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("reprendre")
256
-#else // LCD_HEIGHT < 4
257
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Espereu...")
258
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Expulsant...")
259
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insereix i prem")
260
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Escalfant...")
261
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Carregant...")
262
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Reprenent...")
263
-#endif // LCD_HEIGHT < 4
270
+  //
271
+  // Filament Change screens show up to 3 lines on a 4-line display
272
+  //                        ...or up to 2 lines on a 3-line display
273
+  //
274
+  #if LCD_HEIGHT >= 4
275
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Esperant per", "iniciar el canvi", "de filament"));
276
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Esperant per", "treure filament"));
277
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Poseu filament", "i premeu el boto", "per continuar..."));
278
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Premeu boto per", "escalfar nozzle."));
279
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Escalfant nozzle", "Espereu..."));
280
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Esperant carrega", "de filament"));
281
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Esperant per", "reprendre"));
282
+  #else // LCD_HEIGHT < 4
283
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Espereu..."));
284
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Expulsant..."));
285
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Insereix i prem"));
286
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Escalfant..."));
287
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Carregant..."));
288
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Reprenent..."));
289
+  #endif // LCD_HEIGHT < 4
290
+}

+ 562
- 505
Marlin/src/lcd/language/language_cz.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 200
- 211
Marlin/src/lcd/language/language_da.h Zobrazit soubor

@@ -30,223 +30,212 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" er klar")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Kort isat")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Kort fjernet")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("Menu")
40
-#define MSG_AUTOSTART                       _UxGT("Autostart")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Slå alle steppere fra")
42
-#define MSG_AUTO_HOME                       _UxGT("Auto Home") // G28
43
-#define MSG_AUTO_HOME_X                     _UxGT("Home X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Home Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Home Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Homing XYZ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Klik når du er klar")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Næste punkt")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Bed level er færdig!")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Sæt forsk. af home")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Forsk. er nu aktiv")
52
-#define MSG_SET_ORIGIN                      _UxGT("Sæt origin")
53
-#define MSG_PREHEAT_1                       _UxGT("Forvarm " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     _UxGT("Forvarm " PREHEAT_1_LABEL " ")
55
-#define MSG_PREHEAT_1_ALL                   _UxGT("Forvarm " PREHEAT_1_LABEL " Alle")
56
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Forvarm " PREHEAT_1_LABEL " Bed")
57
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Forvarm " PREHEAT_1_LABEL " conf")
58
-#define MSG_PREHEAT_2                       _UxGT("Forvarm " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     _UxGT("Forvarm " PREHEAT_2_LABEL " ")
60
-#define MSG_PREHEAT_2_ALL                   _UxGT("Forvarm " PREHEAT_2_LABEL " Alle")
61
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Forvarm " PREHEAT_2_LABEL " Bed")
62
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Forvarm " PREHEAT_2_LABEL " conf")
63
-#define MSG_COOLDOWN                        _UxGT("Afkøl")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Slå strøm til")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Slå strøm fra")
66
-#define MSG_EXTRUDE                         _UxGT("Extruder")
67
-#define MSG_RETRACT                         _UxGT("Retract")
68
-#define MSG_MOVE_AXIS                       _UxGT("Flyt akser")
69
-#define MSG_BED_LEVELING                    _UxGT("Juster bed")
70
-#define MSG_LEVEL_BED                       _UxGT("Juster bed")
71
-#define MSG_MOVE_X                          _UxGT("Flyt X")
72
-#define MSG_MOVE_Y                          _UxGT("Flyt Y")
73
-#define MSG_MOVE_Z                          _UxGT("Flyt Z")
74
-#define MSG_MOVE_E                          _UxGT("Extruder")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Flyt %smm")
76
-#define MSG_MOVE_01MM                       _UxGT("Flyt 0.1mm")
77
-#define MSG_MOVE_1MM                        _UxGT("Flyt 1mm")
78
-#define MSG_MOVE_10MM                       _UxGT("Flyt 10mm")
79
-#define MSG_SPEED                           _UxGT("Hastighed")
80
-#define MSG_BED_Z                           _UxGT("Plade Z")
81
-#define MSG_NOZZLE                          _UxGT("Dyse")
34
+namespace Language_da {
35
+  using namespace Language_en; // Inherit undefined strings from English
82 36
 
83
-#define MSG_BED                             _UxGT("Plade")
84
-#define MSG_FAN_SPEED                       _UxGT("Blæser hastighed")
85
-#define MSG_FLOW                            _UxGT("Flow")
86
-#define MSG_CONTROL                         _UxGT("Kontrol")
87
-#define MSG_MIN                             _UxGT(" \002 Min")
88
-#define MSG_MAX                             _UxGT(" \002 Max")
89
-#define MSG_FACTOR                          _UxGT(" \002 Fact")
90
-#define MSG_AUTOTEMP                        _UxGT("Autotemp")
91
-#define MSG_LCD_ON                          _UxGT("Til")
92
-#define MSG_LCD_OFF                         _UxGT("Fra")
93
-#define MSG_PID_P                           _UxGT("PID-P")
94
-#define MSG_PID_I                           _UxGT("PID-I")
95
-#define MSG_PID_D                           _UxGT("PID-D")
96
-#define MSG_PID_C                           _UxGT("PID-C")
97
-#define MSG_SELECT                          _UxGT("Vælg")
98
-#define MSG_ACC                             _UxGT("Accel")
99
-#define MSG_JERK                            _UxGT("Jerk")
100
-#if IS_KINEMATIC
101
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
102
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
103
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
104
-#else
105
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
106
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
107
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
108
-#endif
109
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
110
-#define MSG_VMAX                            _UxGT("Vmax ")
111
-#define MSG_VMIN                            _UxGT("Vmin")
112
-#define MSG_VTRAV_MIN                       _UxGT("VTrav min")
113
-#define MSG_AMAX                            _UxGT("Amax ")
114
-#define MSG_A_RETRACT                       _UxGT("A-retract")
115
-#define MSG_A_TRAVEL                        _UxGT("A-rejse")
116
-#define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
117
-#if IS_KINEMATIC
118
-  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
119
-  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
120
-  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
121
-#else
122
-  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
123
-  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
124
-  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
125
-#endif
126
-#define MSG_ESTEPS                          _UxGT("Esteps/mm")
127
-#define MSG_E0_STEPS                        _UxGT("E1steps/mm")
128
-#define MSG_E1_STEPS                        _UxGT("E2steps/mm")
129
-#define MSG_E2_STEPS                        _UxGT("E3steps/mm")
130
-#define MSG_E3_STEPS                        _UxGT("E4steps/mm")
131
-#define MSG_E4_STEPS                        _UxGT("E5steps/mm")
132
-#define MSG_E5_STEPS                        _UxGT("E6steps/mm")
133
-#define MSG_TEMPERATURE                     _UxGT("Temperatur")
134
-#define MSG_MOTION                          _UxGT("Bevægelse")
135
-#define MSG_FILAMENT                        _UxGT("Filament")
136
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E i mm3")
137
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Dia.")
138
-#define MSG_CONTRAST                        _UxGT("LCD kontrast")
139
-#define MSG_STORE_EEPROM                    _UxGT("Gem i EEPROM")
140
-#define MSG_LOAD_EEPROM                     _UxGT("Hent fra EEPROM")
141
-#define MSG_RESTORE_FAILSAFE                _UxGT("Gendan failsafe")
142
-#define MSG_REFRESH                         _UxGT("Genopfrisk")
143
-#define MSG_WATCH                           _UxGT("Info skærm")
144
-#define MSG_PREPARE                         _UxGT("Forbered")
145
-#define MSG_TUNE                            _UxGT("Tune")
146
-#define MSG_PAUSE_PRINT                     _UxGT("Pause printet")
147
-#define MSG_RESUME_PRINT                    _UxGT("Forsæt printet")
148
-#define MSG_STOP_PRINT                      _UxGT("Stop printet")
149
-#define MSG_MEDIA_MENU                      _UxGT("Print fra SD")
150
-#define MSG_NO_MEDIA                        _UxGT("Intet SD kort")
151
-#define MSG_DWELL                           _UxGT("Dvale...")
152
-#define MSG_USERWAIT                        _UxGT("Venter på bruger...")
153
-#define MSG_PRINT_ABORTED                   _UxGT("Print annulleret")
154
-#define MSG_NO_MOVE                         _UxGT("Ingen bevægelse.")
155
-#define MSG_KILLED                          _UxGT("DRÆBT. ")
156
-#define MSG_STOPPED                         _UxGT("STOPPET. ")
157
-#define MSG_CONTROL_RETRACT                 _UxGT("Tilbagetræk mm")
158
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Skift Re.mm")
159
-#define MSG_CONTROL_RETRACTF                _UxGT("Tilbagetræk V")
160
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Hop mm")
161
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
162
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Skift UnRet mm")
163
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
164
-#define MSG_AUTORETRACT                     _UxGT("AutoRetr.")
165
-#define MSG_FILAMENTCHANGE                  _UxGT("Skift filament")
166
-#define MSG_INIT_MEDIA                      _UxGT("Init. SD card")
167
-#define MSG_CHANGE_MEDIA                    _UxGT("Skift SD kort")
168
-#define MSG_ZPROBE_OUT                      _UxGT("Probe udenfor plade")
169
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Selv-Test")
170
-#define MSG_BLTOUCH_RESET                   _UxGT("Reset BLTouch")
171
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s først")
172
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Offset")
173
-#define MSG_BABYSTEP_X                      _UxGT("Babystep X")
174
-#define MSG_BABYSTEP_Y                      _UxGT("Babystep Y")
175
-#define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
176
-#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop abort")
177
-#define MSG_HEATING_FAILED_LCD              _UxGT("Opvarmning fejlet")
178
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Fejl: reserve temp")
179
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Temp løber løbsk")
180
-#define MSG_ERR_MAXTEMP                     _UxGT("Fejl: Maks temp")
181
-#define MSG_ERR_MINTEMP                     _UxGT("Fejl: Min temp")
182
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Fejl: Maks Plade temp")
183
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Fejl: Min Plade temp")
184
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY først")
185
-#define MSG_HALTED                          _UxGT("PRINTER STOPPET")
186
-#define MSG_PLEASE_RESET                    _UxGT("Reset Venligst")
187
-#define MSG_SHORT_DAY                       _UxGT("d") // Kun et bogstav
188
-#define MSG_SHORT_HOUR                      _UxGT("h") // Kun et bogstav
189
-#define MSG_SHORT_MINUTE                    _UxGT("m") // Kun et bogstav
190
-#define MSG_HEATING                         _UxGT("Opvarmer...")
191
-#define MSG_BED_HEATING                     _UxGT("Opvarmer plade...")
192
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibrering")
193
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibrer X")
194
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibrer Y")
195
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibrer Z")
196
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibrerings Center")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Danish");
197 39
 
198
-#define MSG_INFO_MENU                       _UxGT("Om Printer")
199
-#define MSG_INFO_PRINTER_MENU               _UxGT("Printer Info")
200
-#define MSG_INFO_STATS_MENU                 _UxGT("Printer Stats")
201
-#define MSG_INFO_BOARD_MENU                 _UxGT("Kort Info")
202
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistors")
203
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extruders")
204
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")
205
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocol")
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" er klar");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Kort isat");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Kort fjernet");
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu");
44
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Slå alle steppere fra");
45
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Auto Home"); // G28
46
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Klik når du er klar");
47
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Næste punkt");
48
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Bed level er færdig!");
49
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Sæt forsk. af home");
50
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Forsk. er nu aktiv");
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_H0                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N0;
54
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N1;
55
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N2;
56
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N3;
57
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N4;
58
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N5;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end")
60
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N0;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N1;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N2;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N3;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N4;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N5;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
67
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
68
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
69
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Forvarm ") PREHEAT_2_LABEL;
70
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N0;
71
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N1;
72
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N2;
73
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N3;
74
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N4;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N5;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end")
77
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N0;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N1;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N2;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N3;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N4;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N5;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Alle");
84
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Bed");
85
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" conf");
86
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Afkøl");
87
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Slå strøm til");
88
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Slå strøm fra");
89
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extruder");
90
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Flyt akser");
91
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Juster bed");
92
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Juster bed");
93
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Flyt X");
94
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Flyt Y");
95
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Flyt Z");
96
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Flyt %smm");
97
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Flyt 0.1mm");
98
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Flyt 1mm");
99
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Flyt 10mm");
100
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Hastighed");
101
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Plade Z");
102
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Dyse");
103
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Dyse ") LCD_STR_N0;
104
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Dyse ") LCD_STR_N1;
105
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Dyse ") LCD_STR_N2;
106
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Dyse ") LCD_STR_N3;
107
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Dyse ") LCD_STR_N4;
108
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Dyse ") LCD_STR_N5;
206 109
 
207
-#if LCD_WIDTH >= 20
208
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Ant. Prints")
209
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Færdige")
210
-  #define MSG_INFO_PRINT_TIME               _UxGT("Total print tid")
211
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Længste print")
212
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Total Extruderet")
213
-#else
214
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Prints")
215
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Færdige")
216
-  #define MSG_INFO_PRINT_TIME               _UxGT("Total")
217
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Længste")
218
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extruderet")
219
-#endif
110
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Plade");
111
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Blæser hastighed");
112
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Blæser hastighed 1");
113
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Blæser hastighed 2");
114
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Blæser hastighed 3");
115
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Kontrol");
116
+  PROGMEM Language_Str MSG_MIN                             = _UxGT(" \002 Min");
117
+  PROGMEM Language_Str MSG_MAX                             = _UxGT(" \002 Max");
118
+  PROGMEM Language_Str MSG_FACTOR                          = _UxGT(" \002 Fact");
119
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Autotemp");
120
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Til");
121
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Fra");
122
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Vælg");
123
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Vælg ") LCD_STR_E0;
124
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Vælg ") LCD_STR_E1;
125
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Vælg ") LCD_STR_E2;
126
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Vælg ") LCD_STR_E3;
127
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Vælg ") LCD_STR_E4;
128
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Vælg ") LCD_STR_E5;
129
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-retract");
130
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-rejse");
131
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatur");
132
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Bevægelse");
133
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filament");
134
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E i mm3");
135
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Fil. Dia.");
136
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Fil. Dia. ") LCD_STR_E0;
137
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Fil. Dia. ") LCD_STR_E1;
138
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Fil. Dia. ") LCD_STR_E2;
139
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Fil. Dia. ") LCD_STR_E3;
140
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Fil. Dia. ") LCD_STR_E4;
141
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Fil. Dia. ") LCD_STR_E5;
142
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD kontrast");
143
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Gem i EEPROM");
144
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Hent fra EEPROM");
145
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Gendan failsafe");
146
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Genopfrisk");
147
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Info skærm");
148
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Forbered");
149
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pause printet");
150
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Forsæt printet");
151
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Stop printet");
152
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Print fra SD");
153
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Intet SD kort");
154
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Dvale...");
155
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Venter på bruger...");
156
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Print annulleret");
157
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Ingen bevægelse.");
158
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("DRÆBT. ");
159
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("STOPPET. ");
160
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Tilbagetræk mm");
161
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Skift Re.mm");
162
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Tilbagetræk V");
163
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Hop mm");
164
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
165
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Skift UnRet mm");
166
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  V");
167
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("AutoRetr.");
168
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Skift filament");
169
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Skift filament ") LCD_STR_E0;
170
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Skift filament ") LCD_STR_E1;
171
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Skift filament ") LCD_STR_E2;
172
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Skift filament ") LCD_STR_E3;
173
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Skift filament ") LCD_STR_E4;
174
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Skift filament ") LCD_STR_E5;
175
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Skift SD kort");
176
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Probe udenfor plade");
177
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch Selv-Test");
178
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Home %s%s%s først");
179
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Opvarmning fejlet");
180
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Fejl: reserve temp");
181
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Temp løber løbsk");
182
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Fejl: Maks temp");
183
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Fejl: Min temp");
184
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Fejl: Maks Plade temp");
185
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Fejl: Min Plade temp");
186
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY først");
187
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("PRINTER STOPPET");
188
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Reset Venligst");
189
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d"); // Kun et bogstav
190
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h"); // Kun et bogstav
191
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m"); // Kun et bogstav
192
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Opvarmer...");
193
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Opvarmer plade...");
194
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Kalibrering");
195
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibrer X");
196
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibrer Y");
197
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibrer Z");
198
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibrerings Center");
220 199
 
221
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
222
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Temp")
223
-#define MSG_INFO_PSU                        _UxGT("Strømfors.")
200
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Om Printer");
201
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Kort Info");
202
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Thermistors");
224 203
 
225
-#define MSG_DRIVE_STRENGTH                  _UxGT("Driv Styrke")
226
-#define MSG_DAC_PERCENT                     _UxGT("Driv %")
227
-#define MSG_DAC_EEPROM_WRITE                _UxGT("DAC EEPROM Skriv")
204
+  #if LCD_WIDTH >= 20
205
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Ant. Prints");
206
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Færdige");
207
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Total print tid");
208
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Længste print");
209
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Total Extruderet");
210
+  #else
211
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Prints");
212
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Færdige");
213
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Total");
214
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Længste");
215
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extruderet");
216
+  #endif
228 217
 
229
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Forsæt print")
218
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Strømfors.");
230 219
 
231
-#define MSG_EXPECTED_PRINTER                _UxGT("Forkert printer")
220
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Driv Styrke");
221
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Driv %");
222
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("DAC EEPROM Skriv");
232 223
 
233
-#if LCD_HEIGHT >= 4
234
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Vent på start")
235
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("af filament")
236
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("skift")
237
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Vent på")
238
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("filament udskyd.")
239
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Indsæt filament")
240
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("og tryk på knap")
241
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("for at fortsætte...")
242
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Vent på")
243
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament indtag")
244
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Vent på at print")
245
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("fortsætter")
246
-#else // LCD_HEIGHT < 4
247
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Vent venligst...")
248
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Udskyder...")
249
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Indsæt og klik")
250
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Indtager...")
251
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Fortsætter...")
252
-#endif // LCD_HEIGHT < 4
224
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Forsæt print");
225
+
226
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Forkert printer");
227
+
228
+  #if LCD_HEIGHT >= 4
229
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Vent på start", "af filament", "skift"));
230
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Vent på", "filament udskyd."));
231
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Indsæt filament", "og tryk på knap", "for at fortsætte..."));
232
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Vent på", "filament indtag"));
233
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Vent på at print", "fortsætter"));
234
+  #else // LCD_HEIGHT < 4
235
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Vent venligst..."));
236
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Udskyder..."));
237
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Indsæt og klik"));
238
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Indtager..."));
239
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Fortsætter..."));
240
+  #endif // LCD_HEIGHT < 4
241
+}

+ 638
- 531
Marlin/src/lcd/language/language_de.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 220
- 157
Marlin/src/lcd/language/language_el.h Zobrazit soubor

@@ -30,162 +30,225 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_GREEK
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" έτοιμο.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Εισαγωγή κάρτας")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Αφαίρεση κάρτας")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("Βασική Οθόνη")
40
-#define MSG_AUTOSTART                       _UxGT("Αυτόματη εκκίνηση")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Απενεργοποίηση Μοτέρ")
42
-#define MSG_AUTO_HOME                       _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο") //SHORTEN
43
-#define MSG_AUTO_HOME_X                     _UxGT("Αρχικό σημείο X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Αρχικό σημείο Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Αρχικό σημείο Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Επαναφορά Επ. Εκτύπωσης") //SHORTEN
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Επιπεδοποίηση επ. Εκτύπωσης περιμενει") //SHORTEN
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Επόμενο σημείο")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Ολοκλήρωση επιπεδοποίησης!") //SHORTEN
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Ορισμός βασικών μετατοπίσεων") //SHORTEN
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Εφαρμόστηκαν οι μετατοπίσεις") //SHORTEN
52
-#define MSG_SET_ORIGIN                      _UxGT("Ορισμός προέλευσης")
53
-#define MSG_PREHEAT_1                       _UxGT("Προθέρμανση " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
55
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" όλα")
56
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" bed") //SHORTEN
57
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" επιβεβαίωση") //SHORTEN
58
-#define MSG_PREHEAT_2                       _UxGT("Προθέρμανση " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
60
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" όλα")
61
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" bed") //SHORTEN
62
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" επιβεβαίωση") //SHORTEN
63
-#define MSG_COOLDOWN                        _UxGT("Μειωση θερμοκρασιας")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Ενεργοποίηση")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Απενεργοποίηση")
66
-#define MSG_EXTRUDE                         _UxGT("Εξώθηση")
67
-#define MSG_RETRACT                         _UxGT("Ανάσυρση")
68
-#define MSG_MOVE_AXIS                       _UxGT("Μετακίνηση άξονα")
69
-#define MSG_BED_LEVELING                    _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης") //SHORTEN
70
-#define MSG_LEVEL_BED                       _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης") //SHORTEN
71
-#define MSG_MOVE_X                          _UxGT("Μετακίνηση X")
72
-#define MSG_MOVE_Y                          _UxGT("Μετακίνηση Y")
73
-#define MSG_MOVE_Z                          _UxGT("Μετακίνηση Z")
74
-#define MSG_MOVE_E                          _UxGT("Εξωθητήρας")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Μετακίνηση %s μμ")
76
-#define MSG_MOVE_01MM                       _UxGT("Μετακίνηση 0,1 μμ")
77
-#define MSG_MOVE_1MM                        _UxGT("Μετακίνηση 1 μμ")
78
-#define MSG_MOVE_10MM                       _UxGT("Μετακίνηση 10 μμ")
79
-#define MSG_SPEED                           _UxGT("Ταχύτητα")
80
-#define MSG_BED_Z                           _UxGT("Επ. Εκτύπωσης Z")
81
-#define MSG_NOZZLE                          _UxGT("Ακροφύσιο")
82
-#define MSG_BED                             _UxGT("Κλίνη")
83
-#define MSG_FAN_SPEED                       _UxGT("Ταχύτητα ανεμιστήρα")
84
-#define MSG_FLOW                            _UxGT("Ροή")
85
-#define MSG_CONTROL                         _UxGT("Έλεγχος")
86
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
87
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
88
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
89
-#define MSG_AUTOTEMP                        _UxGT("Αυτομ ρύθμιση θερ/σίας") //SHORTEN
90
-#define MSG_LCD_ON                          _UxGT("Ενεργοποιημένο")
91
-#define MSG_LCD_OFF                         _UxGT("Απενεργοποιημένο")
92
-#define MSG_PID_P                           _UxGT("PID-P")
93
-#define MSG_PID_I                           _UxGT("PID-I")
94
-#define MSG_PID_D                           _UxGT("PID-D")
95
-#define MSG_PID_C                           _UxGT("PID-C")
96
-#define MSG_ACC                             _UxGT("Επιτάχυνση")
97
-#define MSG_JERK                            _UxGT("Jerk")
98
-#if IS_KINEMATIC
99
-  #define MSG_VA_JERK                       _UxGT("Vαντίδραση A")
100
-  #define MSG_VB_JERK                       _UxGT("Vαντίδραση B")
101
-  #define MSG_VC_JERK                       _UxGT("Vαντίδραση C")
102
-#else
103
-  #define MSG_VA_JERK                       _UxGT("Vαντίδραση X")
104
-  #define MSG_VB_JERK                       _UxGT("Vαντίδραση Y")
105
-  #define MSG_VC_JERK                       _UxGT("Vαντίδραση Z")
106
-#endif
107
-#define MSG_VE_JERK                         _UxGT("Vαντίδραση E")
108
-#define MSG_VMAX                            _UxGT("V Μέγιστο")
109
-#define MSG_VMIN                            _UxGT("V Ελάχιστο")
110
-#define MSG_VTRAV_MIN                       _UxGT("Vελάχ. μετατόπιση")
111
-#define MSG_ACCELERATION                    MSG_ACC
112
-#define MSG_AMAX                            _UxGT("Aμεγ ")
113
-#define MSG_A_RETRACT                       _UxGT("Α-ανάσυρση")
114
-#define MSG_A_TRAVEL                        _UxGT("Α-μετατόπιση")
115
-#define MSG_STEPS_PER_MM                    _UxGT("Bήματα ανά μμ")
116
-#if IS_KINEMATIC
117
-  #define MSG_ASTEPS                        _UxGT("Bήματα A ανά μμ")
118
-  #define MSG_BSTEPS                        _UxGT("Bήματα B ανά μμ")
119
-  #define MSG_CSTEPS                        _UxGT("Bήματα C ανά μμ")
120
-#else
121
-  #define MSG_ASTEPS                        _UxGT("Bήματα X ανά μμ")
122
-  #define MSG_BSTEPS                        _UxGT("Bήματα Y ανά μμ")
123
-  #define MSG_CSTEPS                        _UxGT("Bήματα Z ανά μμ")
124
-#endif
125
-#define MSG_ESTEPS                          _UxGT("Bήματα Ε ανά μμ")
126
-#define MSG_E0_STEPS                        _UxGT("Bήματα Ε1 ανά μμ")
127
-#define MSG_E1_STEPS                        _UxGT("Bήματα Ε2 ανά μμ")
128
-#define MSG_E2_STEPS                        _UxGT("Bήματα Ε3 ανά μμ")
129
-#define MSG_E3_STEPS                        _UxGT("Bήματα Ε4 ανά μμ")
130
-#define MSG_E4_STEPS                        _UxGT("Bήματα Ε5 ανά μμ")
131
-#define MSG_E5_STEPS                        _UxGT("Bήματα Ε6 ανά μμ")
132
-#define MSG_TEMPERATURE                     _UxGT("Θερμοκρασία")
133
-#define MSG_MOTION                          _UxGT("Κίνηση")
134
-#define MSG_FILAMENT                        _UxGT("Νήμα")
135
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("Ε σε μμ3")
136
-#define MSG_FILAMENT_DIAM                   _UxGT("Διάμετρος νήματος")
137
-#define MSG_CONTRAST                        _UxGT("Κοντράστ LCD")
138
-#define MSG_STORE_EEPROM                    _UxGT("Αποθήκευση")
139
-#define MSG_LOAD_EEPROM                     _UxGT("Φόρτωση")
140
-#define MSG_RESTORE_FAILSAFE                _UxGT("Επαναφορά ασφαλούς αντιγράφου") //SHORTEN
141
-#define MSG_REFRESH                         _UxGT("Ανανέωση")
142
-#define MSG_WATCH                           _UxGT("Οθόνη πληροφόρησης")
143
-#define MSG_PREPARE                         _UxGT("Προετοιμασία")
144
-#define MSG_TUNE                            _UxGT("Συντονισμός")
145
-#define MSG_PAUSE_PRINT                     _UxGT("Παύση εκτύπωσης")
146
-#define MSG_RESUME_PRINT                    _UxGT("Συνέχιση εκτύπωσης")
147
-#define MSG_STOP_PRINT                      _UxGT("Διακοπή εκτύπωσης")
148
-#define MSG_MEDIA_MENU                      _UxGT("Εκτύπωση από SD")
149
-#define MSG_NO_MEDIA                        _UxGT("Δεν βρέθηκε SD")
150
-#define MSG_DWELL                           _UxGT("Αναστολή λειτουργίας")
151
-#define MSG_USERWAIT                        _UxGT("Αναμονή για χρήστη")
152
-#define MSG_PRINT_ABORTED                   _UxGT("Διακόπτεται η εκτύπωση") //SHORTEN
153
-#define MSG_NO_MOVE                         _UxGT("Καμία κίνηση.")
154
-#define MSG_KILLED                          _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ")
155
-#define MSG_STOPPED                         _UxGT("ΔΙΑΚΟΠΗ. ")
156
-#define MSG_CONTROL_RETRACT                 _UxGT("Ανάσυρση μμ")
157
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Εναλλαγή ανάσυρσης μμ")  //SHORTEN
158
-#define MSG_CONTROL_RETRACTF                _UxGT("Ανάσυρση V")
159
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Μεταπήδηση μμ")
160
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
161
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("S UnRet mm")
162
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
163
-#define MSG_AUTORETRACT                     _UxGT("Αυτόματη ανάσυρση")
164
-#define MSG_FILAMENTCHANGE                  _UxGT("Αλλαγή νήματος")
165
-#define MSG_INIT_MEDIA                      _UxGT("Προετοιμασία κάρτας SD")  //SHORTEN
166
-#define MSG_CHANGE_MEDIA                    _UxGT("Αλλαγή κάρτας SD")
167
-#define MSG_ZPROBE_OUT                      _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης") //SHORTEN
168
-#define MSG_YX_UNHOMED                      _UxGT("Επαναφορά Χ/Υ πριν από Ζ") //SHORTEN
169
-#define MSG_XYZ_UNHOMED                     _UxGT("Επαναφορά ΧΥΖ πρώτα")
170
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Μετατόπιση Ζ")
171
-#define MSG_BABYSTEP_X                      _UxGT("Μικρό βήμα Χ")
172
-#define MSG_BABYSTEP_Y                      _UxGT("Μικρό βήμα Υ")
173
-#define MSG_BABYSTEP_Z                      _UxGT("Μικρό βήμα Ζ")
174
-#define MSG_ENDSTOP_ABORT                   _UxGT("Ακύρωση endstop ")
175
-#define MSG_HEATING_FAILED_LCD              _UxGT("Ανεπιτυχής θέρμανση")
176
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ")
177
-#define MSG_THERMAL_RUNAWAY                 _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ")
178
-#define MSG_ERR_MAXTEMP                     _UxGT("ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ")
179
-#define MSG_ERR_MINTEMP                     _UxGT("ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ") //SHORTEN
180
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
181
-#define MSG_ERR_MINTEMP_BED                 _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
182
-#define MSG_HALTED                          _UxGT("H εκτύπωση διακόπηκε")
183
-#define MSG_HEATING                         _UxGT("Θερμαίνεται…")
184
-#define MSG_BED_HEATING                     _UxGT("Θέρμανση ΕΠ. Εκτύπωσης") //SHORTEN
185
-#define MSG_DELTA_CALIBRATE                 _UxGT("Βαθμονόμηση Delta")
186
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Βαθμονόμηση X")
187
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Βαθμονόμηση Y")
188
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Βαθμονόμηση Z")
189
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Βαθμονόμηση κέντρου")
34
+namespace Language_el {
35
+  using namespace Language_en; // Inherit undefined strings from English
190 36
 
191
-#define MSG_EXPECTED_PRINTER                _UxGT("Εσφαλμένος εκτυπωτής")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Greek");
39
+
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" έτοιμο.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Εισαγωγή κάρτας");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Αφαίρεση κάρτας");
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Βασική Οθόνη");
44
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Αυτόματη εκκίνηση");
45
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Απενεργοποίηση Μοτέρ");
46
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο"); //SHORTEN
47
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Αρχικό σημείο X");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Αρχικό σημείο Y");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Αρχικό σημείο Z");
50
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Επαναφορά Επ. Εκτύπωσης"); //SHORTEN
51
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Επιπεδοποίηση επ. Εκτύπωσης περιμενει"); //SHORTEN
52
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Επόμενο σημείο");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); //SHORTEN
54
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ορισμός βασικών μετατοπίσεων"); //SHORTEN
55
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); //SHORTEN
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_H0                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N0;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N1;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N2;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N3;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N4;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N5;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
72
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); //SHORTEN
73
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
74
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N0;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N1;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N2;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N3;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N4;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N5;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
89
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" bed"); //SHORTEN
90
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
91
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Μειωση θερμοκρασιας");
92
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ενεργοποίηση");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Απενεργοποίηση");
94
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Εξώθηση");
95
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Ανάσυρση");
96
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Μετακίνηση άξονα");
97
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης"); //SHORTEN
98
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης"); //SHORTEN
99
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Μετακίνηση X");
100
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Μετακίνηση Y");
101
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Μετακίνηση Z");
102
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Εξωθητήρας");
103
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Εξωθητήρας ") LCD_STR_E0;
104
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Εξωθητήρας ") LCD_STR_E1;
105
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Εξωθητήρας ") LCD_STR_E2;
106
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Εξωθητήρας ") LCD_STR_E3;
107
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Εξωθητήρας ") LCD_STR_E4;
108
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Εξωθητήρας ") LCD_STR_E5;
109
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Μετακίνηση %s μμ");
110
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Μετακίνηση 0,1 μμ");
111
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Μετακίνηση 1 μμ");
112
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Μετακίνηση 10 μμ");
113
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Ταχύτητα");
114
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Επ. Εκτύπωσης Z");
115
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Ακροφύσιο");
116
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Ακροφύσιο ") LCD_STR_N0;
117
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Ακροφύσιο ") LCD_STR_N1;
118
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Ακροφύσιο ") LCD_STR_N2;
119
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Ακροφύσιο ") LCD_STR_N3;
120
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Ακροφύσιο ") LCD_STR_N4;
121
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Ακροφύσιο ") LCD_STR_N5;
122
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Κλίνη");
123
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Ταχύτητα ανεμιστήρα");
124
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Ταχύτητα ανεμιστήρα 1");
125
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Ταχύτητα ανεμιστήρα 2");
126
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Ταχύτητα ανεμιστήρα 3");
127
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Ροή");
128
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Ροή ") LCD_STR_N0;
129
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Ροή ") LCD_STR_N1;
130
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Ροή ") LCD_STR_N2;
131
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Ροή ") LCD_STR_N3;
132
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Ροή ") LCD_STR_N4;
133
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Ροή ") LCD_STR_N5;
134
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Έλεγχος");
135
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
136
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
137
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fact");
138
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Αυτομ ρύθμιση θερ/σίας"); //SHORTEN
139
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Ενεργοποιημένο");
140
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Απενεργοποιημένο");
141
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Επιτάχυνση");
142
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_A;
143
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_B;
144
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_C;
145
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Vαντίδραση E");
146
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("V Μέγιστο") LCD_STR_A;
147
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("V Μέγιστο") LCD_STR_B;
148
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("V Μέγιστο") LCD_STR_C;
149
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("V Μέγιστο") LCD_STR_E;
150
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("V Μέγιστο ") LCD_STR_E0;
151
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("V Μέγιστο ") LCD_STR_E1;
152
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("V Μέγιστο ") LCD_STR_E2;
153
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("V Μέγιστο ") LCD_STR_E3;
154
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("V Μέγιστο ") LCD_STR_E4;
155
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("V Μέγιστο ") LCD_STR_E5;
156
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("V Ελάχιστο");
157
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vελάχ. μετατόπιση");
158
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Accel");
159
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Aμεγ ") LCD_STR_A;
160
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Aμεγ ") LCD_STR_B;
161
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Aμεγ ") LCD_STR_C;
162
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Aμεγ ") LCD_STR_E;
163
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Aμεγ ") LCD_STR_E0;
164
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Aμεγ ") LCD_STR_E1;
165
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Aμεγ ") LCD_STR_E2;
166
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Aμεγ ") LCD_STR_E3;
167
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Aμεγ ") LCD_STR_E4;
168
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Aμεγ ") LCD_STR_E5;
169
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Α-ανάσυρση");
170
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Α-μετατόπιση");
171
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Bήματα ανά μμ");
172
+  PROGMEM Language_Str MSG_A_STEPS                         = _UxGT("Bήματα ") LCD_STR_A _UxGT(" ανά μμ");
173
+  PROGMEM Language_Str MSG_B_STEPS                         = _UxGT("Bήματα ") LCD_STR_B _UxGT(" ανά μμ");
174
+  PROGMEM Language_Str MSG_C_STEPS                         = _UxGT("Bήματα ") LCD_STR_C _UxGT(" ανά μμ");
175
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("Bήματα Ε ανά μμ");
176
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("Bήματα ") LCD_STR_E0 _UxGT(" ανά μμ");
177
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("Bήματα ") LCD_STR_E1 _UxGT(" ανά μμ");
178
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("Bήματα ") LCD_STR_E2 _UxGT(" ανά μμ");
179
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("Bήματα ") LCD_STR_E3 _UxGT(" ανά μμ");
180
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("Bήματα ") LCD_STR_E4 _UxGT(" ανά μμ");
181
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("Bήματα ") LCD_STR_E5 _UxGT(" ανά μμ");
182
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Θερμοκρασία");
183
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Κίνηση");
184
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Νήμα");
185
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("Ε σε μμ3");
186
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Διάμετρος νήματος");
187
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Διάμετρος νήματος ") LCD_STR_E0;
188
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Διάμετρος νήματος ") LCD_STR_E1;
189
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Διάμετρος νήματος ") LCD_STR_E2;
190
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Διάμετρος νήματος ") LCD_STR_E3;
191
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Διάμετρος νήματος ") LCD_STR_E4;
192
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Διάμετρος νήματος ") LCD_STR_E5;
193
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Κοντράστ LCD");
194
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Αποθήκευση");
195
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Φόρτωση");
196
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); //SHORTEN
197
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Ανανέωση");
198
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Οθόνη πληροφόρησης");
199
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Προετοιμασία");
200
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Συντονισμός");
201
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Παύση εκτύπωσης");
202
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Συνέχιση εκτύπωσης");
203
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Διακοπή εκτύπωσης");
204
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Εκτύπωση από SD");
205
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Δεν βρέθηκε SD");
206
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Αναστολή λειτουργίας");
207
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Αναμονή για χρήστη");
208
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Διακόπτεται η εκτύπωση"); //SHORTEN
209
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Καμία κίνηση.");
210
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ");
211
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ΔΙΑΚΟΠΗ. ");
212
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Ανάσυρση μμ");
213
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Εναλλαγή ανάσυρσης μμ");  //SHORTEN
214
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Ανάσυρση V");
215
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Μεταπήδηση μμ");
216
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
217
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("S UnRet mm");
218
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  V");
219
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Αυτόματη ανάσυρση");
220
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Αλλαγή νήματος");
221
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Αλλαγή νήματος ") LCD_STR_E0;
222
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Αλλαγή νήματος ") LCD_STR_E1;
223
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Αλλαγή νήματος ") LCD_STR_E2;
224
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Αλλαγή νήματος ") LCD_STR_E3;
225
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Αλλαγή νήματος ") LCD_STR_E4;
226
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Αλλαγή νήματος ") LCD_STR_E5;
227
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Προετοιμασία κάρτας SD");  //SHORTEN
228
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Αλλαγή κάρτας SD");
229
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); //SHORTEN
230
+  PROGMEM Language_Str MSG_YX_UNHOMED                      = _UxGT("Επαναφορά Χ/Υ πριν από Ζ"); //SHORTEN
231
+  PROGMEM Language_Str MSG_XYZ_UNHOMED                     = _UxGT("Επαναφορά ΧΥΖ πρώτα");
232
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Μετατόπιση Ζ");
233
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Μικρό βήμα Χ");
234
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Μικρό βήμα Υ");
235
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Μικρό βήμα Ζ");
236
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Ακύρωση endstop ");
237
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Ανεπιτυχής θέρμανση");
238
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ");
239
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ");
240
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ");
241
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ"); //SHORTEN
242
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ"); //SHORTEN
243
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ"); //SHORTEN
244
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("H εκτύπωση διακόπηκε");
245
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Θερμαίνεται…");
246
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Θέρμανση ΕΠ. Εκτύπωσης"); //SHORTEN
247
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Βαθμονόμηση Delta");
248
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Βαθμονόμηση X");
249
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Βαθμονόμηση Y");
250
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Βαθμονόμηση Z");
251
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Βαθμονόμηση κέντρου");
252
+
253
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Εσφαλμένος εκτυπωτής");
254
+}

+ 249
- 156
Marlin/src/lcd/language/language_el_gr.h Zobrazit soubor

@@ -30,161 +30,254 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_GREEK
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" έτοιμο.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Εισαγωγή κάρτας")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Αφαίρεση κάρτας")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("Βασική Οθόνη")
40
-#define MSG_AUTOSTART                       _UxGT("Αυτόματη εκκίνηση")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Απενεργοποίηση βηματιστή")
42
-#define MSG_AUTO_HOME                       _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Αρχικό σημείο X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Αρχικό σημείο Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Αρχικό σημείο Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Επαναφορά στο αρχικό σημείο ΧΥΖ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Κάντε κλικ για να ξεκινήσετε")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Επόμενο σημείο")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Ολοκλήρωση επιπεδοποίησης!")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Ορισμός βασικών μετατοπίσεων")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Εφαρμόστηκαν οι μετατοπίσεις")
52
-#define MSG_SET_ORIGIN                      _UxGT("Ορισμός προέλευσης")
53
-#define MSG_PREHEAT_1                       _UxGT("Προθέρμανση " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
55
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" όλα")
56
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" κλίνη")
57
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" επιβεβαίωση")
58
-#define MSG_PREHEAT_2                       _UxGT("Προθέρμανση " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
60
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" όλα")
61
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Bed")
62
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" επιβεβαίωση")
63
-#define MSG_COOLDOWN                        _UxGT("Μειωση θερμοκρασιας")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Ενεργοποίηση")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Απενεργοποίηση")
66
-#define MSG_EXTRUDE                         _UxGT("Εξώθηση")
67
-#define MSG_RETRACT                         _UxGT("Ανάσυρση")
68
-#define MSG_MOVE_AXIS                       _UxGT("Μετακίνηση άξονα")
69
-#define MSG_BED_LEVELING                    _UxGT("Επιπεδοποίηση κλίνης")
70
-#define MSG_LEVEL_BED                       _UxGT("Επιπεδοποίηση κλίνης")
71
-#define MSG_MOVE_X                          _UxGT("Μετακίνηση X")
72
-#define MSG_MOVE_Y                          _UxGT("Μετακίνηση Y")
73
-#define MSG_MOVE_Z                          _UxGT("Μετακίνηση Z")
74
-#define MSG_MOVE_E                          _UxGT("Εξωθητήρας")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Μετακίνηση %s μμ")
76
-#define MSG_MOVE_01MM                       _UxGT("Μετακίνηση 0,1 μμ")
77
-#define MSG_MOVE_1MM                        _UxGT("Μετακίνηση 1 μμ")
78
-#define MSG_MOVE_10MM                       _UxGT("Μετακίνηση 10 μμ")
79
-#define MSG_SPEED                           _UxGT("Ταχύτητα")
80
-#define MSG_BED_Z                           _UxGT("Κλίνη Z")
81
-#define MSG_NOZZLE                          _UxGT("Ακροφύσιο")
82
-#define MSG_BED                             _UxGT("Κλίνη")
83
-#define MSG_FAN_SPEED                       _UxGT("Ταχύτητα ανεμιστήρα")
84
-#define MSG_FLOW                            _UxGT("Ροή")
85
-#define MSG_CONTROL                         _UxGT("Έλεγχος")
86
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
87
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
88
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
89
-#define MSG_AUTOTEMP                        _UxGT("Αυτομ. ρύθμιση θερμοκρασίας")
90
-#define MSG_LCD_ON                          _UxGT("Ενεργοποιημένο")
91
-#define MSG_LCD_OFF                         _UxGT("Απενεργοποιημένο")
92
-#define MSG_PID_P                           _UxGT("PID-P")
93
-#define MSG_PID_I                           _UxGT("PID-I")
94
-#define MSG_PID_D                           _UxGT("PID-D")
95
-#define MSG_PID_C                           _UxGT("PID-C")
96
-#define MSG_ACC                             _UxGT("Επιτάχυνση")
97
-#define MSG_JERK                            _UxGT("Vαντίδραση")
98
-#if IS_KINEMATIC
99
-  #define MSG_VA_JERK                       _UxGT("Vαντίδραση A")
100
-  #define MSG_VB_JERK                       _UxGT("Vαντίδραση B")
101
-  #define MSG_VC_JERK                       _UxGT("Vαντίδραση C")
102
-#else
103
-  #define MSG_VA_JERK                       _UxGT("Vαντίδραση X")
104
-  #define MSG_VB_JERK                       _UxGT("Vαντίδραση Y")
105
-  #define MSG_VC_JERK                       _UxGT("Vαντίδραση Z")
106
-#endif
107
-#define MSG_VE_JERK                         _UxGT("Vαντίδραση E")
108
-#define MSG_VMAX                            _UxGT("Vμεγ ")
109
-#define MSG_VMIN                            _UxGT("Vελαχ")
110
-#define MSG_VTRAV_MIN                       _UxGT("Vελάχ. μετατόπιση")
111
-#define MSG_ACCELERATION                    MSG_ACC
112
-#define MSG_AMAX                            _UxGT("Aμεγ ")
113
-#define MSG_A_RETRACT                       _UxGT("Α-ανάσυρση")
114
-#define MSG_A_TRAVEL                        _UxGT("Α-μετατόπιση")
115
-#define MSG_STEPS_PER_MM                    _UxGT("Bήματα ανά μμ")
116
-#if IS_KINEMATIC
117
-  #define MSG_ASTEPS                        _UxGT("Bήματα A ανά μμ")
118
-  #define MSG_BSTEPS                        _UxGT("Bήματα B ανά μμ")
119
-  #define MSG_CSTEPS                        _UxGT("Bήματα C ανά μμ")
120
-#else
121
-  #define MSG_ASTEPS                        _UxGT("Bήματα X ανά μμ")
122
-  #define MSG_BSTEPS                        _UxGT("Bήματα Y ανά μμ")
123
-  #define MSG_CSTEPS                        _UxGT("Bήματα Z ανά μμ")
124
-#endif
125
-#define MSG_ESTEPS                          _UxGT("Bήματα Ε ανά μμ")
126
-#define MSG_E0_STEPS                        _UxGT("Bήματα Ε1 ανά μμ")
127
-#define MSG_E1_STEPS                        _UxGT("Bήματα Ε2 ανά μμ")
128
-#define MSG_E2_STEPS                        _UxGT("Bήματα Ε3 ανά μμ")
129
-#define MSG_E3_STEPS                        _UxGT("Bήματα Ε4 ανά μμ")
130
-#define MSG_E4_STEPS                        _UxGT("Bήματα Ε5 ανά μμ")
131
-#define MSG_E5_STEPS                        _UxGT("Bήματα Ε6 ανά μμ")
132
-#define MSG_TEMPERATURE                     _UxGT("Θερμοκρασία")
133
-#define MSG_MOTION                          _UxGT("Κίνηση")
134
-#define MSG_FILAMENT                        _UxGT("Νήμα")
135
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("Ε σε μμ3")
136
-#define MSG_FILAMENT_DIAM                   _UxGT("Διάμετρος νήματος")
137
-#define MSG_CONTRAST                        _UxGT("Κοντράστ LCD")
138
-#define MSG_STORE_EEPROM                    _UxGT("Αποθήκευση")
139
-#define MSG_LOAD_EEPROM                     _UxGT("Φόρτωση")
140
-#define MSG_RESTORE_FAILSAFE                _UxGT("Επαναφορά ασφαλούς αντιγράφου")
141
-#define MSG_REFRESH                         _UxGT("Ανανέωση")
142
-#define MSG_WATCH                           _UxGT("Οθόνη πληροφόρησης")
143
-#define MSG_PREPARE                         _UxGT("Προετοιμασία")
144
-#define MSG_TUNE                            _UxGT("Συντονισμός")
145
-#define MSG_PAUSE_PRINT                     _UxGT("Παύση εκτύπωσης")
146
-#define MSG_RESUME_PRINT                    _UxGT("Συνέχιση εκτύπωσης")
147
-#define MSG_STOP_PRINT                      _UxGT("Διακοπή εκτύπωσης")
148
-#define MSG_MEDIA_MENU                      _UxGT("Εκτύπωση από SD")
149
-#define MSG_NO_MEDIA                        _UxGT("Δεν βρέθηκε SD")
150
-#define MSG_DWELL                           _UxGT("Αναστολή λειτουργίας…")
151
-#define MSG_USERWAIT                        _UxGT("Αναμονή για χρήστη…")
152
-#define MSG_PRINT_ABORTED                   _UxGT("Διακόπτεται η εκτύπωση")
153
-#define MSG_NO_MOVE                         _UxGT("Καμία κίνηση.")
154
-#define MSG_KILLED                          _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ")
155
-#define MSG_STOPPED                         _UxGT("ΔΙΑΚΟΠΗ. ")
156
-#define MSG_CONTROL_RETRACT                 _UxGT("Ανάσυρση μμ")
157
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Εναλλαγή ανάσυρσης μμ")
158
-#define MSG_CONTROL_RETRACTF                _UxGT("Ανάσυρση V")
159
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Μεταπήδηση μμ")
160
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
161
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("S UnRet mm")
162
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
163
-#define MSG_AUTORETRACT                     _UxGT("Αυτόματη ανάσυρση")
164
-#define MSG_FILAMENTCHANGE                  _UxGT("Αλλαγή νήματος")
165
-#define MSG_INIT_MEDIA                      _UxGT("Προετοιμασία κάρτας SD")
166
-#define MSG_CHANGE_MEDIA                    _UxGT("Αλλαγή κάρτας SD")
167
-#define MSG_ZPROBE_OUT                      _UxGT("Διερεύνηση Z εκτός κλίνης")
168
-#define MSG_YX_UNHOMED                      _UxGT("Επαναφορά Χ/Υ πριν από Ζ")
169
-#define MSG_XYZ_UNHOMED                     _UxGT("Επαναφορά ΧΥΖ πρώτα")
170
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Μετατόπιση Ζ")
171
-#define MSG_BABYSTEP_X                      _UxGT("Μικρό βήμα Χ")
172
-#define MSG_BABYSTEP_Y                      _UxGT("Μικρό βήμα Υ")
173
-#define MSG_BABYSTEP_Z                      _UxGT("Μικρό βήμα Ζ")
174
-#define MSG_ENDSTOP_ABORT                   _UxGT("Ματαίωση endstop ")
175
-#define MSG_HEATING_FAILED_LCD              _UxGT("Ανεπιτυχής θέρμανση")
176
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ")
177
-#define MSG_THERMAL_RUNAWAY                 _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ")
178
-#define MSG_ERR_MAXTEMP                     _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ")
179
-#define MSG_ERR_MINTEMP                     _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ")
180
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ")
181
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ")
182
-#define MSG_HEATING                         _UxGT("Θερμαίνεται…")
183
-#define MSG_BED_HEATING                     _UxGT("Θέρμανση κλίνης…")
184
-#define MSG_DELTA_CALIBRATE                 _UxGT("Βαθμονόμηση Delta")
185
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Βαθμονόμηση X")
186
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Βαθμονόμηση Y")
187
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Βαθμονόμηση Z")
188
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Βαθμονόμηση κέντρου")
34
+namespace Language_el_gr {
35
+  using namespace Language_en; // Inherit undefined strings from English
189 36
 
190
-#define MSG_EXPECTED_PRINTER                _UxGT("Εσφαλμένος εκτυπωτής")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Greek (Greece)");
39
+
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" έτοιμο.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Εισαγωγή κάρτας");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Αφαίρεση κάρτας");
43
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Endstops"); // Max length 8 characters
44
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Βασική Οθόνη");
45
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Αυτόματη εκκίνηση");
46
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Απενεργοποίηση βηματιστή");
47
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Αρχικό σημείο X");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Αρχικό σημείο Y");
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Αρχικό σημείο Z");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥΖ");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Κάντε κλικ για να ξεκινήσετε");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Επόμενο σημείο");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Ολοκλήρωση επιπεδοποίησης!");
55
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ορισμός βασικών μετατοπίσεων");
56
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις");
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_H0                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N0;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N1;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N2;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N3;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N4;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N5;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
74
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
75
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N0;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N1;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N2;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N3;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N4;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N5;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" κλίνη");
91
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση");
92
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Μειωση θερμοκρασιας");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ενεργοποίηση");
94
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Απενεργοποίηση");
95
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Εξώθηση");
96
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Ανάσυρση");
97
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Μετακίνηση άξονα");
98
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Επιπεδοποίηση κλίνης");
99
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Επιπεδοποίηση κλίνης");
100
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Μετακίνηση X");
101
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Μετακίνηση Y");
102
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Μετακίνηση Z");
103
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Εξωθητήρας");
104
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Εξωθητήρας ") LCD_STR_E0;
105
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Εξωθητήρας ") LCD_STR_E1;
106
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Εξωθητήρας ") LCD_STR_E2;
107
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Εξωθητήρας ") LCD_STR_E3;
108
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Εξωθητήρας ") LCD_STR_E4;
109
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Εξωθητήρας ") LCD_STR_E5;
110
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Μετακίνηση %s μμ");
111
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Μετακίνηση 0,1 μμ");
112
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Μετακίνηση 1 μμ");
113
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Μετακίνηση 10 μμ");
114
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Ταχύτητα");
115
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Κλίνη Z");
116
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Ακροφύσιο");
117
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Ακροφύσιο ") LCD_STR_N0;
118
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Ακροφύσιο ") LCD_STR_N1;
119
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Ακροφύσιο ") LCD_STR_N2;
120
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Ακροφύσιο ") LCD_STR_N3;
121
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Ακροφύσιο ") LCD_STR_N4;
122
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Ακροφύσιο ") LCD_STR_N5;
123
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Κλίνη");
124
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Ταχύτητα ανεμιστήρα");
125
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Ταχύτητα ανεμιστήρα 1");
126
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Ταχύτητα ανεμιστήρα 2");
127
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Ταχύτητα ανεμιστήρα 3");
128
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Ροή");
129
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Ροή ") LCD_STR_N0;
130
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Ροή ") LCD_STR_N1;
131
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Ροή ") LCD_STR_N2;
132
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Ροή ") LCD_STR_N3;
133
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Ροή ") LCD_STR_N4;
134
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Ροή ") LCD_STR_N5;
135
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Έλεγχος");
136
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
137
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
138
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fact");
139
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Αυτομ. ρύθμιση θερμοκρασίας");
140
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Ενεργοποιημένο");
141
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Απενεργοποιημένο");
142
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");
143
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
144
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
145
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
146
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
147
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
148
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
149
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");
150
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
151
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
152
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
153
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
154
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
155
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
156
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");
157
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
158
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
159
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
160
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
161
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
162
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
163
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");
164
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
165
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
166
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
167
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
168
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
169
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
170
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Επιτάχυνση");
171
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Vαντίδραση");
172
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_A;
173
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_B;
174
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("Vαντίδραση ") LCD_STR_C;
175
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Vαντίδραση E");
176
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("Vμεγ ") LCD_STR_A;
177
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("Vμεγ ") LCD_STR_B;
178
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("Vμεγ ") LCD_STR_C;
179
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("Vμεγ ") LCD_STR_E;
180
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("Vμεγ ") LCD_STR_E0;
181
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("Vμεγ ") LCD_STR_E1;
182
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("Vμεγ ") LCD_STR_E2;
183
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("Vμεγ ") LCD_STR_E3;
184
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("Vμεγ ") LCD_STR_E4;
185
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("Vμεγ ") LCD_STR_E5;
186
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("Vελαχ");
187
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vελάχ. μετατόπιση");
188
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Accel");
189
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Aμεγ ") LCD_STR_A;
190
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Aμεγ ") LCD_STR_B;
191
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Aμεγ ") LCD_STR_C;
192
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Aμεγ ") LCD_STR_E;
193
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Aμεγ ") LCD_STR_E0;
194
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Aμεγ ") LCD_STR_E1;
195
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Aμεγ ") LCD_STR_E2;
196
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Aμεγ ") LCD_STR_E3;
197
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Aμεγ ") LCD_STR_E4;
198
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Aμεγ ") LCD_STR_E5;
199
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Α-ανάσυρση");
200
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Α-μετατόπιση");
201
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Bήματα ανά μμ");
202
+  PROGMEM Language_Str MSG_A_STEPS                         = _UxGT("Bήματα ") LCD_STR_A _UxGT(" ανά μμ");
203
+  PROGMEM Language_Str MSG_B_STEPS                         = _UxGT("Bήματα ") LCD_STR_B _UxGT(" ανά μμ");
204
+  PROGMEM Language_Str MSG_C_STEPS                         = _UxGT("Bήματα ") LCD_STR_C _UxGT(" ανά μμ");
205
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("Bήματα Ε ανά μμ");
206
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("Bήματα ") LCD_STR_E0 _UxGT(" ανά μμ");
207
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("Bήματα ") LCD_STR_E1 _UxGT(" ανά μμ");
208
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("Bήματα ") LCD_STR_E2 _UxGT(" ανά μμ");
209
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("Bήματα ") LCD_STR_E3 _UxGT(" ανά μμ");
210
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("Bήματα ") LCD_STR_E4 _UxGT(" ανά μμ");
211
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("Bήματα ") LCD_STR_E5 _UxGT(" ανά μμ");
212
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Θερμοκρασία");
213
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Κίνηση");
214
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Νήμα");
215
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("Ε σε μμ3");
216
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Διάμετρος νήματος");
217
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Διάμετρος νήματος ") LCD_STR_E0;
218
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Διάμετρος νήματος ") LCD_STR_E1;
219
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Διάμετρος νήματος ") LCD_STR_E2;
220
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Διάμετρος νήματος ") LCD_STR_E3;
221
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Διάμετρος νήματος ") LCD_STR_E4;
222
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Διάμετρος νήματος ") LCD_STR_E5;
223
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Κοντράστ LCD");
224
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Αποθήκευση");
225
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Φόρτωση");
226
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Επαναφορά ασφαλούς αντιγράφου");
227
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Ανανέωση");
228
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Οθόνη πληροφόρησης");
229
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Προετοιμασία");
230
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Συντονισμός");
231
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Παύση εκτύπωσης");
232
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Συνέχιση εκτύπωσης");
233
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Διακοπή εκτύπωσης");
234
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Εκτύπωση από SD");
235
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Δεν βρέθηκε SD");
236
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Αναστολή λειτουργίας…");
237
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Αναμονή για χρήστη…");
238
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Διακόπτεται η εκτύπωση");
239
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Καμία κίνηση.");
240
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ");
241
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ΔΙΑΚΟΠΗ. ");
242
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Ανάσυρση μμ");
243
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Εναλλαγή ανάσυρσης μμ");
244
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Ανάσυρση V");
245
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Μεταπήδηση μμ");
246
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
247
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("S UnRet mm");
248
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  V");
249
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Αυτόματη ανάσυρση");
250
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Αλλαγή νήματος");
251
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Αλλαγή νήματος ") LCD_STR_E0;
252
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Αλλαγή νήματος ") LCD_STR_E1;
253
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Αλλαγή νήματος ") LCD_STR_E2;
254
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Αλλαγή νήματος ") LCD_STR_E3;
255
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Αλλαγή νήματος ") LCD_STR_E4;
256
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Αλλαγή νήματος ") LCD_STR_E5;
257
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Προετοιμασία κάρτας SD");
258
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Αλλαγή κάρτας SD");
259
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Διερεύνηση Z εκτός κλίνης");
260
+  PROGMEM Language_Str MSG_YX_UNHOMED                      = _UxGT("Επαναφορά Χ/Υ πριν από Ζ");
261
+  PROGMEM Language_Str MSG_XYZ_UNHOMED                     = _UxGT("Επαναφορά ΧΥΖ πρώτα");
262
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Μετατόπιση Ζ");
263
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Μικρό βήμα Χ");
264
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Μικρό βήμα Υ");
265
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Μικρό βήμα Ζ");
266
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Ματαίωση endstop ");
267
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Ανεπιτυχής θέρμανση");
268
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ");
269
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ");
270
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ");
271
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ");
272
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ");
273
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ");
274
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Θερμαίνεται…");
275
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Θέρμανση κλίνης…");
276
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Βαθμονόμηση Delta");
277
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Βαθμονόμηση X");
278
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Βαθμονόμηση Y");
279
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Βαθμονόμηση Z");
280
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Βαθμονόμηση κέντρου");
281
+
282
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Εσφαλμένος εκτυπωτής");
283
+}

+ 659
- 1538
Marlin/src/lcd/language/language_en.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 590
- 520
Marlin/src/lcd/language/language_es.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 355
- 351
Marlin/src/lcd/language/language_eu.h Zobrazit soubor

@@ -32,358 +32,362 @@
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33 33
 #define NOT_EXTENDED_ISO10646_1_5X7
34 34
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" prest.")
36
-#define MSG_BACK                            _UxGT("Atzera")
37
-#define MSG_MEDIA_INSERTED                  _UxGT("Txartela sartuta")
38
-#define MSG_MEDIA_REMOVED                   _UxGT("Txartela kenduta")
39
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
40
-#define MSG_MAIN                            _UxGT("Menu nagusia")
41
-#define MSG_AUTOSTART                       _UxGT("Auto hasiera")
42
-#define MSG_DISABLE_STEPPERS                _UxGT("Itzali motoreak")
43
-#define MSG_DEBUG_MENU                      _UxGT("Arazketa Menua")
44
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Prog. Barra Proba")
45
-#define MSG_AUTO_HOME                       _UxGT("Hasierara joan")
46
-#define MSG_AUTO_HOME_X                     _UxGT("X jatorrira")
47
-#define MSG_AUTO_HOME_Y                     _UxGT("Y jatorrira")
48
-#define MSG_AUTO_HOME_Z                     _UxGT("Z jatorrira")
49
-#define MSG_LEVEL_BED_HOMING                _UxGT("XYZ hasieraratzen")
50
-#define MSG_LEVEL_BED_WAITING               _UxGT("Klik egin hasteko")
51
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Hurrengo Puntua")
52
-#define MSG_LEVEL_BED_DONE                  _UxGT("Berdintzea eginda")
53
-//#define MSG_Z_FADE_HEIGHT                 _UxGT("Fade Height")
54
-#define MSG_SET_HOME_OFFSETS                _UxGT("Etxe. offset eza.")
55
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offsetak ezarrita")
56
-#define MSG_SET_ORIGIN                      _UxGT("Hasiera ipini")
57
-#define MSG_PREHEAT_1                       _UxGT("Berotu " PREHEAT_1_LABEL)
58
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
59
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Guztia")
60
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" Amaia")
61
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Ohea")
62
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" Ezarp.")
63
-#define MSG_PREHEAT_2                       _UxGT("Berotu " PREHEAT_2_LABEL)
64
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_1 _UxGT(" ")
65
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_1 _UxGT(" Guztia")
66
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" Amaia")
67
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_1 _UxGT(" Ohea")
68
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_1 _UxGT(" Ezarp.")
69
-#define MSG_COOLDOWN                        _UxGT("Hoztu")
70
-#define MSG_SWITCH_PS_ON                    _UxGT("Energia piztu")
71
-#define MSG_SWITCH_PS_OFF                   _UxGT("Energia itzali")
72
-#define MSG_EXTRUDE                         _UxGT("Estruitu")
73
-#define MSG_RETRACT                         _UxGT("Atzera eragin")
74
-#define MSG_MOVE_AXIS                       _UxGT("Ardatzak mugitu")
75
-#define MSG_BED_LEVELING                    _UxGT("Ohe berdinketa")
76
-#define MSG_LEVEL_BED                       _UxGT("Ohea berdindu")
77
-#define MSG_LEVEL_CORNERS                   _UxGT("Ertzak berdindu")
78
-#define MSG_NEXT_CORNER                     _UxGT("Hurrengo ertza")
79
-#define MSG_EDIT_MESH                       _UxGT("Sarea editatu")
80
-//#define MSG_EDITING_STOPPED               _UxGT("Mesh Editing Stopped")
81
-//#define MSG_USER_MENU                     _UxGT("Custom Commands")
35
+namespace Language_eu {
36
+  using namespace Language_en; // Inherit undefined strings from English
82 37
 
83
-#define MSG_UBL_DOING_G29                   _UxGT("G29 exekutatzen")
84
-#define MSG_UBL_TOOLS                       _UxGT("UBL Tresnak")
85
-#define MSG_UBL_LEVEL_BED                   _UxGT("Unified Bed Leveling")
86
-#define MSG_UBL_MANUAL_MESH                 _UxGT("Sarea eskuz sortu")
87
-//#define MSG_UBL_BC_INSERT                 _UxGT("Place shim & measure")
88
-#define MSG_UBL_BC_INSERT2                  _UxGT("Neurtu")
89
-//#define MSG_UBL_BC_REMOVE                 _UxGT("Remove & measure bed")
90
-//#define MSG_UBL_MOVING_TO_NEXT            _UxGT("Moving to next")
91
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("UBL aktibatu")
92
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("UBL desaktibatu")
93
-#define MSG_UBL_SET_TEMP_BED                _UxGT("Ohearen tenperatura")
94
-#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
95
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("Mutur beroaren tenp.")
96
-#define MSG_UBL_HOTEND_TEMP_CUSTOM          MSG_UBL_SET_TEMP_HOTEND
97
-#define MSG_UBL_MESH_EDIT                   _UxGT("Sarea editatu")
98
-//#define MSG_UBL_EDIT_CUSTOM_MESH          _UxGT("Edit Custom Mesh")
99
-//#define MSG_UBL_FINE_TUNE_MESH            _UxGT("Fine Tuning Mesh")
100
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Sarea editatzea eginda")
101
-//#define MSG_UBL_BUILD_CUSTOM_MESH         _UxGT("Build Custom Mesh")
102
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Sarea sortu")
103
-#define MSG_UBL_BUILD_MESH_M1               _UxGT(PREHEAT_1_LABEL " sarea sortu")
104
-#define MSG_UBL_BUILD_MESH_M2               _UxGT(PREHEAT_2_LABEL " sarea sortu")
105
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Sare hotza sortu")
106
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Sarearen altuera doitu")
107
-//#define MSG_UBL_MESH_HEIGHT_AMOUNT        _UxGT("Height Amount")
108
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Sarea balioetsi")
109
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT(PREHEAT_1_LABEL " sarea balioetsi")
110
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT(PREHEAT_2_LABEL " sarea balioetsi")
111
-//#define MSG_UBL_VALIDATE_CUSTOM_MESH      _UxGT("Validate Custom Mesh")
112
-#define MSG_UBL_CONTINUE_MESH               _UxGT("Ohe sarea balioetsi")
113
-#define MSG_UBL_MESH_LEVELING               _UxGT("Sare berdinketa")
114
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("3 puntuko berdinketa")
115
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Lauki-sare berdinketa")
116
-#define MSG_UBL_MESH_LEVEL                  _UxGT("Sarea berdindu")
117
-//#define MSG_UBL_SIDE_POINTS               _UxGT("Side Points")
118
-#define MSG_UBL_MAP_TYPE                    _UxGT("Mapa mota")
119
-//#define MSG_UBL_OUTPUT_MAP                _UxGT("Output Mesh Map")
120
-//#define MSG_UBL_OUTPUT_MAP_HOST           _UxGT("Output for Host")
121
-//#define MSG_UBL_OUTPUT_MAP_CSV            _UxGT("Output for CSV")
122
-//#define MSG_UBL_OUTPUT_MAP_BACKUP         _UxGT("Off Printer Backup")
123
-//#define MSG_UBL_INFO_UBL                  _UxGT("Output UBL Info")
124
-//#define MSG_UBL_FILLIN_AMOUNT             _UxGT("Fill-in Amount")
125
-//#define MSG_UBL_MANUAL_FILLIN             _UxGT("Manual Fill-in")
126
-//#define MSG_UBL_SMART_FILLIN              _UxGT("Smart Fill-in")
127
-//#define MSG_UBL_FILLIN_MESH               _UxGT("Fill-in Mesh")
128
-//#define MSG_UBL_INVALIDATE_ALL            _UxGT("Invalidate All")
129
-//#define MSG_UBL_INVALIDATE_CLOSEST        _UxGT("Invalidate Closest")
130
-//#define MSG_UBL_FINE_TUNE_ALL             _UxGT("Fine Tune All")
131
-//#define MSG_UBL_FINE_TUNE_CLOSEST         _UxGT("Fine Tune Closest")
132
-//#define MSG_UBL_STORAGE_MESH_MENU         _UxGT("Mesh Storage")
133
-//#define MSG_UBL_STORAGE_SLOT              _UxGT("Memory Slot")
134
-//#define MSG_UBL_LOAD_MESH                 _UxGT("Load Bed Mesh")
135
-//#define MSG_UBL_SAVE_MESH                 _UxGT("Save Bed Mesh")
136
-//#define MSG_MESH_LOADED                   _UxGT("Mesh %i loaded")
137
-//#define MSG_MESH_SAVED                    _UxGT("Mesh %i saved")
138
-//#define MSG_UBL_NO_STORAGE                _UxGT("No storage")
139
-//#define MSG_UBL_SAVE_ERROR                _UxGT("Err: UBL Save")
140
-//#define MSG_UBL_RESTORE_ERROR             _UxGT("Err: UBL Restore")
141
-//#define MSG_UBL_Z_OFFSET_STOPPED          _UxGT("Z-Offset Stopped")
142
-//#define MSG_UBL_STEP_BY_STEP_MENU         _UxGT("Step-By-Step UBL")
143
-#define MSG_LED_CONTROL                     _UxGT("LED ezarpenak")
144
-#define MSG_LEDS                            _UxGT("Argiak")
145
-#define MSG_LED_PRESETS                     _UxGT("Argi aurrehautaketak")
146
-#define MSG_SET_LEDS_RED                    _UxGT("Gorria")
147
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Laranja")
148
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Horia")
149
-#define MSG_SET_LEDS_GREEN                  _UxGT("Berdea")
150
-#define MSG_SET_LEDS_BLUE                   _UxGT("Urdina")
151
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Indigo")
152
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Bioleta")
153
-#define MSG_SET_LEDS_WHITE                  _UxGT("Zuria")
154
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Lehenetsia")
155
-#define MSG_CUSTOM_LEDS                     _UxGT("Argi pertsonalizatuak")
156
-#define MSG_INTENSITY_R                     _UxGT("Intentsitate gorria")
157
-#define MSG_INTENSITY_G                     _UxGT("Intentsitate berdea")
158
-#define MSG_INTENSITY_B                     _UxGT("Intentsitate urdina")
159
-#define MSG_INTENSITY_W                     _UxGT("Intentsitate zuria")
160
-#define MSG_LED_BRIGHTNESS                  _UxGT("Distira")
38
+  constexpr uint8_t    CHARSIZE                            = 1;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Basque-Euskera");
161 40
 
162
-#define MSG_MOVING                          _UxGT("Mugitzen...")
163
-#define MSG_FREE_XY                         _UxGT("Askatu XY")
164
-#define MSG_MOVE_X                          _UxGT("Mugitu X")
165
-#define MSG_MOVE_Y                          _UxGT("Mugitu Y")
166
-#define MSG_MOVE_Z                          _UxGT("Mugitu Z")
167
-#define MSG_MOVE_E                          _UxGT("Estrusorea")
168
-#define MSG_MOVE_Z_DIST                     _UxGT("Mugitu %smm")
169
-#define MSG_MOVE_01MM                       _UxGT("Mugitu 0.1mm")
170
-#define MSG_MOVE_1MM                        _UxGT("Mugitu 1mm")
171
-#define MSG_MOVE_10MM                       _UxGT("Mugitu 10mm")
172
-#define MSG_SPEED                           _UxGT("Abiadura")
173
-#define MSG_BED_Z                           _UxGT("Z Ohea")
174
-#define MSG_NOZZLE                          _UxGT("Pita")
175
-#define MSG_BED                             _UxGT("Ohea")
176
-#define MSG_FAN_SPEED                       _UxGT("Haizagailu abiadura")
177
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("Haiz.gehig. abiadura")
178
-#define MSG_FLOW                            _UxGT("Fluxua")
179
-#define MSG_CONTROL                         _UxGT("Kontrola")
180
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
181
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
182
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
183
-#define MSG_AUTOTEMP                        _UxGT("Auto tenperatura")
184
-#define MSG_LCD_ON                          _UxGT("On")
185
-#define MSG_LCD_OFF                         _UxGT("Off")
186
-#define MSG_PID_P                           _UxGT("PID-P")
187
-#define MSG_PID_I                           _UxGT("PID-I")
188
-#define MSG_PID_D                           _UxGT("PID-D")
189
-#define MSG_PID_C                           _UxGT("PID-C")
190
-#define MSG_SELECT                          _UxGT("Aukeratu")
191
-#define MSG_ACC                             _UxGT("Azelerazioa")
192
-#define MSG_JERK                            _UxGT("Astindua")
193
-#if IS_KINEMATIC
194
-  #define MSG_VA_JERK                       _UxGT("Va-astindua")
195
-  #define MSG_VB_JERK                       _UxGT("Vb-astindua")
196
-  #define MSG_VC_JERK                       _UxGT("Vc-astindua")
197
-#else
198
-  #define MSG_VA_JERK                       _UxGT("Vx-astindua")
199
-  #define MSG_VB_JERK                       _UxGT("Vy-astindua")
200
-  #define MSG_VC_JERK                       _UxGT("Vz-astindua")
201
-#endif
202
-#define MSG_VE_JERK                         _UxGT("Ve-astindua")
203
-//#define MSG_VELOCITY                      _UxGT("Velocity")
204
-#define MSG_VMAX                            _UxGT("Vmax ")
205
-#define MSG_VMIN                            _UxGT("Vmin")
206
-#define MSG_VTRAV_MIN                       _UxGT("VBidaia min")
207
-#define MSG_ACCELERATION                    MSG_ACC
208
-#define MSG_AMAX                            _UxGT("Amax ")
209
-#define MSG_A_RETRACT                       _UxGT("A-retrakt")
210
-#define MSG_A_TRAVEL                        _UxGT("A-bidaia")
211
-#define MSG_STEPS_PER_MM                    _UxGT("Pausoak/mm")
212
-#if IS_KINEMATIC
213
-  #define MSG_ASTEPS                        _UxGT("A pausoak/mm")
214
-  #define MSG_BSTEPS                        _UxGT("B pausoak/mm")
215
-  #define MSG_CSTEPS                        _UxGT("C pausoak/mm")
216
-#else
217
-  #define MSG_ASTEPS                        _UxGT("X pausoak/mm")
218
-  #define MSG_BSTEPS                        _UxGT("Y pausoak/mm")
219
-  #define MSG_CSTEPS                        _UxGT("Z pausoak/mm")
220
-#endif
221
-#define MSG_ESTEPS                          _UxGT("E pausoak/mm")
222
-#define MSG_E0_STEPS                        _UxGT("E1 pausoak/mm")
223
-#define MSG_E1_STEPS                        _UxGT("E2 pausoak/mm")
224
-#define MSG_E2_STEPS                        _UxGT("E3 pausoak/mm")
225
-#define MSG_E3_STEPS                        _UxGT("E4 pausoak/mm")
226
-#define MSG_E4_STEPS                        _UxGT("E5 pausoak/mm")
227
-#define MSG_E5_STEPS                        _UxGT("E6 pausoak/mm")
228
-#define MSG_TEMPERATURE                     _UxGT("Tenperatura")
229
-#define MSG_MOTION                          _UxGT("Mugimendua")
230
-#define MSG_FILAMENT                        _UxGT("Harizpia")
231
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E mm3-tan")
232
-#define MSG_FILAMENT_DIAM                   _UxGT("Hariz. Dia.")
233
-#define MSG_FILAMENT_UNLOAD                 _UxGT("Deskargatu mm")
234
-#define MSG_FILAMENT_LOAD                   _UxGT("Kargatu mm")
235
-#define MSG_ADVANCE_K                       _UxGT("K Aurrerapena")
236
-#define MSG_CONTRAST                        _UxGT("LCD kontrastea")
237
-#define MSG_STORE_EEPROM                    _UxGT("Gorde memoria")
238
-#define MSG_LOAD_EEPROM                     _UxGT("Kargatu memoria")
239
-#define MSG_RESTORE_FAILSAFE                _UxGT("Larri. berriz.")
240
-#define MSG_INIT_EEPROM                     _UxGT("EEPROM-a hasieratu")
241
-#define MSG_REFRESH                         _UxGT("Berriz kargatu")
242
-#define MSG_WATCH                           _UxGT("Pantaila info")
243
-#define MSG_PREPARE                         _UxGT("Prestatu")
244
-#define MSG_TUNE                            _UxGT("Doitu")
245
-#define MSG_PAUSE_PRINT                     _UxGT("Pausatu inprimak.")
246
-#define MSG_RESUME_PRINT                    _UxGT("Jarraitu inprima.")
247
-#define MSG_STOP_PRINT                      _UxGT("Gelditu inprima.")
248
-#define MSG_MEDIA_MENU                      _UxGT("SD-tik inprimatu")
249
-#define MSG_NO_MEDIA                        _UxGT("Ez dago SD-rik")
250
-#define MSG_DWELL                           _UxGT("Lo egin...")
251
-#define MSG_USERWAIT                        _UxGT("Aginduak zain...")
252
-#define MSG_PRINT_PAUSED                    _UxGT("Inprim. geldi.")
253
-#define MSG_PRINT_ABORTED                   _UxGT("Inprim. deusezta.")
254
-#define MSG_NO_MOVE                         _UxGT("Mugimendu gabe.")
255
-#define MSG_KILLED                          _UxGT("AKABATUTA. ")
256
-#define MSG_STOPPED                         _UxGT("GELDITUTA. ")
257
-#define MSG_CONTROL_RETRACT                 _UxGT("Atzera egin mm")
258
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Swap Atzera mm")
259
-#define MSG_CONTROL_RETRACTF                _UxGT("Atzera egin V")
260
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Igo mm")
261
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Atzera egin mm")
262
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Swap Atzera mm")
263
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Atzera egin V")
264
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
265
-#define MSG_AUTORETRACT                     _UxGT("Atzera egin")
266
-#define MSG_FILAMENTCHANGE                  _UxGT("Aldatu harizpia")
267
-#define MSG_FILAMENTLOAD                    _UxGT("Harizpia kargatu")
268
-#define MSG_FILAMENTUNLOAD                  _UxGT("Harizpia deskargatu")
269
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("Erabat deskargatu")
270
-#define MSG_INIT_MEDIA                      _UxGT("Hasieratu SD-a")
271
-#define MSG_CHANGE_MEDIA                    _UxGT("Aldatu txartela")
272
-#define MSG_ZPROBE_OUT                      _UxGT("Z zunda kanpora")
273
-#define MSG_SKEW_FACTOR                     _UxGT("Okertze faktorea")
274
-#define MSG_BLTOUCH                         _UxGT("BLTouch")
275
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch AutoProba")
276
-#define MSG_BLTOUCH_RESET                   _UxGT("BLTouch berrabia.")
277
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("BLTouch jaitsi/luzatu")
278
-#define MSG_BLTOUCH_STOW                    _UxGT("BLTouch igo/jaso")
279
-#define MSG_HOME_FIRST                      _UxGT("Etxera %s%s%s lehenengo")
280
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Konpentsatu")
281
-#define MSG_BABYSTEP_X                      _UxGT("Mikro-urratsa X")
282
-#define MSG_BABYSTEP_Y                      _UxGT("Mikro-urratsa Y")
283
-#define MSG_BABYSTEP_Z                      _UxGT("Mikro-urratsa Z")
284
-#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop deusezta.")
285
-#define MSG_HEATING_FAILED_LCD              _UxGT("Err: Beroketa")
286
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Err: Tenperatura")
287
-#define MSG_THERMAL_RUNAWAY                 _UxGT("TENP. KONTROL EZA")
288
-#define MSG_ERR_MAXTEMP                     _UxGT("Err: Tenp Maximoa")
289
-#define MSG_ERR_MINTEMP                     _UxGT("Err: Tenp Minimoa")
290
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Err: Ohe Tenp Max")
291
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Err: Ohe Tenp Min")
292
-#define MSG_ERR_Z_HOMING                    _UxGT("Etxera XY lehenengo")
293
-#define MSG_HALTED                          _UxGT("INPRIMA. GELDIRIK")
294
-#define MSG_PLEASE_RESET                    _UxGT("Berrabia. Mesedez")
295
-#define MSG_SHORT_DAY                       _UxGT("d") // One character only
296
-#define MSG_SHORT_HOUR                      _UxGT("h") // One character only
297
-#define MSG_SHORT_MINUTE                    _UxGT("m") // One character only
298
-#define MSG_HEATING                         _UxGT("Berotzen...")
299
-#define MSG_BED_HEATING                     _UxGT("Ohea Berotzen...")
300
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibraketa")
301
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibratu X")
302
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibratu Y")
303
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibratu Z")
304
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibratu Zentrua")
305
-#define MSG_DELTA_SETTINGS                  _UxGT("Delta ezarpenak")
306
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Auto Kalibraketa")
307
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Delta Alt. Ezar.")
308
-#define MSG_DELTA_DIAG_ROD                  _UxGT("Barra diagonala")
309
-#define MSG_DELTA_HEIGHT                    _UxGT("Altuera")
310
-#define MSG_DELTA_RADIUS                    _UxGT("Erradioa")
311
-#define MSG_INFO_MENU                       _UxGT("Inprimagailu Inf.")
312
-#define MSG_INFO_PRINTER_MENU               _UxGT("Inprimagailu Inf.")
313
-#define MSG_3POINT_LEVELING                 _UxGT("3 puntuko berdinketa")
314
-#define MSG_LINEAR_LEVELING                 _UxGT("Berdinketa lineala")
315
-#define MSG_BILINEAR_LEVELING               _UxGT("Berdinketa bilinearra")
316
-#define MSG_UBL_LEVELING                    _UxGT("Unified Bed Leveling")
317
-#define MSG_MESH_LEVELING                   _UxGT("Sare berdinketa")
318
-#define MSG_INFO_STATS_MENU                 _UxGT("Inprima. estatis.")
319
-#define MSG_INFO_BOARD_MENU                 _UxGT("Txartelaren Info.")
320
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistoreak")
321
-#define MSG_INFO_EXTRUDERS                  _UxGT("Estrusoreak")
322
-#define MSG_INFO_BAUDRATE                   _UxGT("Baudioak")
323
-#define MSG_INFO_PROTOCOL                   _UxGT("Protokoloa")
324
-#define MSG_CASE_LIGHT                      _UxGT("Kabina Argia")
325
-//#define MSG_CASE_LIGHT_BRIGHTNESS
326
-#if LCD_WIDTH >= 20
327
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Inprim. Zenbaketa")
328
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Burututa")
329
-  #define MSG_INFO_PRINT_TIME               _UxGT("Inprim. denbora")
330
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Imprimatze luzeena")
331
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Estruituta guztira")
332
-#else
333
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Inprimatze")
334
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Burututa")
335
-  #define MSG_INFO_PRINT_TIME               _UxGT("Guztira")
336
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Luzeena")
337
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Estrusio")
338
-#endif
339
-#define MSG_INFO_MIN_TEMP                   _UxGT("Tenp. Minimoa")
340
-#define MSG_INFO_MAX_TEMP                   _UxGT("Tenp. Maximoa")
341
-#define MSG_INFO_PSU                        _UxGT("Elikadura-iturria")
342
-#define MSG_DRIVE_STRENGTH                  _UxGT("Driver-aren potentzia")
343
-#define MSG_DAC_PERCENT                     _UxGT("Driver %")
344
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Idatzi DAC EEPROM")
345
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("HARIZPIA ALDATU")
346
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("HARIZPIA KARGATU")
347
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("HARIZPIA DESKARGATU")
348
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("ALDAKETA AUKERAK:")
349
-//#define MSG_FILAMENT_CHANGE_OPTION_PURGE  _UxGT("Purge more")
350
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Inprima. jarraitu")
351
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Pita: ")
352
-#define MSG_ERR_HOMING_FAILED               _UxGT("Hasi. huts egin du")
353
-#define MSG_ERR_PROBING_FAILED              _UxGT("Neurketak huts egin du")
354
-#define MSG_M600_TOO_COLD                   _UxGT("M600: hotzegi")
41
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" prest.");
42
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Atzera");
43
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Txartela sartuta");
44
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Txartela kenduta");
45
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu nagusia");
46
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Auto hasiera");
47
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Itzali motoreak");
48
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Arazketa Menua");
49
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Prog. Barra Proba");
50
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Hasierara joan");
51
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("X jatorrira");
52
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Y jatorrira");
53
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Z jatorrira");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("XYZ hasieraratzen");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Klik egin hasteko");
56
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Hurrengo Puntua");
57
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Berdintzea eginda");
58
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Etxe. offset eza.");
59
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsetak ezarrita");
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_H0                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N0;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N1;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N2;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N3;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N4;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N5;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N0;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N1;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N2;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N3;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N4;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N5;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
76
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
77
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
78
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Berotu ") PREHEAT_2_LABEL;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N0;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N1;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N2;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N3;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N4;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N5;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia");
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N0;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N1;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N2;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N3;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N4;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N5;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Guztia");
93
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ohea");
94
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ezarp.");
95
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Hoztu");
96
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Energia piztu");
97
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Energia itzali");
98
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Estruitu");
99
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Atzera eragin");
100
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Ardatzak mugitu");
101
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Ohe berdinketa");
102
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Ohea berdindu");
103
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("Ertzak berdindu");
104
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("Hurrengo ertza");
105
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("Sarea editatu");
355 106
 
356
-#define MSG_EXPECTED_PRINTER                _UxGT("Inprimagailu okerra")
107
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("G29 exekutatzen");
108
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("UBL Tresnak");
109
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("Unified Bed Leveling");
110
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("Sarea eskuz sortu");
111
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("Neurtu");
112
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("UBL aktibatu");
113
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("UBL desaktibatu");
114
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("Ohearen tenperatura");
115
+  PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM             = _UxGT("Bed Temp");
116
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("Mutur beroaren tenp.");
117
+  PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM          = _UxGT("Hotend Temp");
118
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Sarea editatu");
119
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Sarea editatzea eginda");
120
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Sarea sortu");
121
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = PREHEAT_1_LABEL _UxGT(" sarea sortu");
122
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = PREHEAT_2_LABEL _UxGT(" sarea sortu");
123
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Sare hotza sortu");
124
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Sarearen altuera doitu");
125
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Sarea balioetsi");
126
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = PREHEAT_1_LABEL _UxGT(" sarea balioetsi");
127
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = PREHEAT_2_LABEL _UxGT(" sarea balioetsi");
128
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Ohe sarea balioetsi");
129
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Sare berdinketa");
130
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("3 puntuko berdinketa");
131
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("Lauki-sare berdinketa");
132
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("Sarea berdindu");
133
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("Mapa mota");
134
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("LED ezarpenak");
135
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("Argiak");
136
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("Argi aurrehautaketak");
137
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("Gorria");
138
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("Laranja");
139
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("Horia");
140
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("Berdea");
141
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("Urdina");
142
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("Indigo");
143
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("Bioleta");
144
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("Zuria");
145
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("Lehenetsia");
146
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("Argi pertsonalizatuak");
147
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("Intentsitate gorria");
148
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("Intentsitate berdea");
149
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("Intentsitate urdina");
150
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("Intentsitate zuria");
151
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("Distira");
357 152
 
358
-//
359
-// Filament Change screens show up to 3 lines on a 4-line display
360
-//                        ...or up to 2 lines on a 3-line display
361
-//
362
-#if LCD_HEIGHT >= 4
363
-  //#define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Wait for start")
364
-  //#define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("of the filament")
365
-  //#define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("change")
366
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Wait for")
367
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("filament unload")
368
-  //#define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Insert filament")
369
-  //#define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("and press button")
370
-  //#define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("to continue...")
371
-  //#define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Press button to")
372
-  //#define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("heat nozzle.")
373
-  //#define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Heating nozzle")
374
-  //#define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Please wait...")
375
-  //#define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Wait for")
376
-  //#define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("filament load")
377
-  //#define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Wait for")
378
-  //#define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("filament purge")
379
-  //#define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Wait for print")
380
-  //#define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("to resume")
381
-#else // LCD_HEIGHT < 4
382
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Mesedez, itxaron...")
383
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Deskargatzen...")
384
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Sartu eta click egin")
385
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Berotzen...")
386
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Kargatzen...")
387
-  //#define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Purging...")
388
-  //#define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Resuming...")
389
-#endif // LCD_HEIGHT < 4
153
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Mugitzen...");
154
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Askatu XY");
155
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mugitu X");
156
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mugitu Y");
157
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mugitu Z");
158
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Estrusorea");
159
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Estrusorea ") LCD_STR_E0;
160
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Estrusorea ") LCD_STR_E1;
161
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Estrusorea ") LCD_STR_E2;
162
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Estrusorea ") LCD_STR_E3;
163
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Estrusorea ") LCD_STR_E4;
164
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Estrusorea ") LCD_STR_E5;
165
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mugitu %smm");
166
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mugitu 0.1mm");
167
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mugitu 1mm");
168
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mugitu 10mm");
169
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Abiadura");
170
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Z Ohea");
171
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Pita");
172
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Pita ") LCD_STR_N0;
173
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Pita ") LCD_STR_N1;
174
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Pita ") LCD_STR_N2;
175
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Pita ") LCD_STR_N3;
176
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Pita ") LCD_STR_N4;
177
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Pita ") LCD_STR_N5;
178
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Ohea");
179
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Haizagailu abiadura");
180
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Haizagailu abiadura 1");
181
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Haizagailu abiadura 2");
182
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Haizagailu abiadura 3");
183
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("Haiz.gehig. abiadura");
184
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("Haiz.gehig. abiadura 1");
185
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("Haiz.gehig. abiadura 2");
186
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("Haiz.gehig. abiadura 3");
187
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Fluxua");
188
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Fluxua ") LCD_STR_N0;
189
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Fluxua ") LCD_STR_N1;
190
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Fluxua ") LCD_STR_N2;
191
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Fluxua ") LCD_STR_N3;
192
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Fluxua ") LCD_STR_N4;
193
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Fluxua ") LCD_STR_N5;
194
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Kontrola");
195
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
196
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
197
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fakt");
198
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Auto tenperatura");
199
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Aukeratu");
200
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Aukeratu ") LCD_STR_E0;
201
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Aukeratu ") LCD_STR_E1;
202
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Aukeratu ") LCD_STR_E2;
203
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Aukeratu ") LCD_STR_E3;
204
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Aukeratu ") LCD_STR_E4;
205
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Aukeratu ") LCD_STR_E5;
206
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Azelerazioa");
207
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Astindua");
208
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("V") LCD_STR_A _UxGT("-astindua");
209
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("V") LCD_STR_B _UxGT("-astindua");
210
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("V") LCD_STR_C _UxGT("-astindua");
211
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Ve-astindua");
212
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("VBidaia min");
213
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-retrakt");
214
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-bidaia");
215
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Pausoak/mm");
216
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT(" pausoak/mm");
217
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT(" pausoak/mm");
218
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT(" pausoak/mm");
219
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E pausoak/mm");
220
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" pausoak/mm");
221
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" pausoak/mm");
222
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" pausoak/mm");
223
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" pausoak/mm");
224
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" pausoak/mm");
225
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" pausoak/mm");
226
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Tenperatura");
227
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Mugimendua");
228
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Harizpia");
229
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E mm3-tan");
230
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Hariz. Dia.");
231
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Hariz. Dia. ") LCD_STR_E0;
232
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Hariz. Dia. ") LCD_STR_E1;
233
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Hariz. Dia. ") LCD_STR_E2;
234
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Hariz. Dia. ") LCD_STR_E3;
235
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Hariz. Dia. ") LCD_STR_E4;
236
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Hariz. Dia. ") LCD_STR_E5;
237
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("Deskargatu mm");
238
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("Kargatu mm");
239
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("K Aurrerapena");
240
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("K Aurrerapena ") LCD_STR_E0;
241
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("K Aurrerapena ") LCD_STR_E1;
242
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("K Aurrerapena ") LCD_STR_E2;
243
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("K Aurrerapena ") LCD_STR_E3;
244
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("K Aurrerapena ") LCD_STR_E4;
245
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("K Aurrerapena ") LCD_STR_E5;
246
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD kontrastea");
247
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Gorde memoria");
248
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Kargatu memoria");
249
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Larri. berriz.");
250
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("EEPROM-a hasieratu");
251
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Berriz kargatu");
252
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Pantaila info");
253
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Prestatu");
254
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Doitu");
255
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausatu inprimak.");
256
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Jarraitu inprima.");
257
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Gelditu inprima.");
258
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("SD-tik inprimatu");
259
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Ez dago SD-rik");
260
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Lo egin...");
261
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Aginduak zain...");
262
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("Inprim. geldi.");
263
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Inprim. deusezta.");
264
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Mugimendu gabe.");
265
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("AKABATUTA. ");
266
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("GELDITUTA. ");
267
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Atzera egin mm");
268
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Swap Atzera mm");
269
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Atzera egin V");
270
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Igo mm");
271
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Atzera egin mm");
272
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Swap Atzera mm");
273
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Atzera egin V");
274
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("S UnRet V");
275
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Atzera egin");
276
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Aldatu harizpia");
277
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Aldatu harizpia ") LCD_STR_E0;
278
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Aldatu harizpia ") LCD_STR_E1;
279
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Aldatu harizpia ") LCD_STR_E2;
280
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Aldatu harizpia ") LCD_STR_E3;
281
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Aldatu harizpia ") LCD_STR_E4;
282
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Aldatu harizpia ") LCD_STR_E5;
283
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("Harizpia kargatu ") LCD_STR_E0;
284
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("Harizpia kargatu ") LCD_STR_E1;
285
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("Harizpia kargatu ") LCD_STR_E2;
286
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("Harizpia kargatu ") LCD_STR_E3;
287
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("Harizpia kargatu ") LCD_STR_E4;
288
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("Harizpia kargatu ") LCD_STR_E5;
289
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("Harizpia deskargatu ") LCD_STR_E0;
290
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("Harizpia deskargatu ") LCD_STR_E1;
291
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("Harizpia deskargatu ") LCD_STR_E2;
292
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("Harizpia deskargatu ") LCD_STR_E3;
293
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("Harizpia deskargatu ") LCD_STR_E4;
294
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("Harizpia deskargatu ") LCD_STR_E5;
295
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("Erabat deskargatu");
296
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Hasieratu SD-a");
297
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Aldatu txartela");
298
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z zunda kanpora");
299
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("Okertze faktorea");
300
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");
301
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch AutoProba");
302
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("BLTouch berrabia.");
303
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("BLTouch jaitsi/luzatu");
304
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("BLTouch igo/jaso");
305
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Etxera %s%s%s lehenengo");
306
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Z Konpentsatu");
307
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Mikro-urratsa X");
308
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Mikro-urratsa Y");
309
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Mikro-urratsa Z");
310
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Endstop deusezta.");
311
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Err: Beroketa");
312
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Err: Tenperatura");
313
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("TENP. KONTROL EZA");
314
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Err: Tenp Maximoa");
315
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Err: Tenp Minimoa");
316
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Err: Ohe Tenp Max");
317
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Err: Ohe Tenp Min");
318
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Etxera XY lehenengo");
319
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("INPRIMA. GELDIRIK");
320
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Berrabia. Mesedez");
321
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d"); // One character only
322
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h"); // One character only
323
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m"); // One character only
324
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Berotzen...");
325
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Ohea Berotzen...");
326
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Kalibraketa");
327
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibratu X");
328
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibratu Y");
329
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibratu Z");
330
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibratu Zentrua");
331
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("Delta ezarpenak");
332
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Auto Kalibraketa");
333
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Delta Alt. Ezar.");
334
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("Barra diagonala");
335
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("Altuera");
336
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("Erradioa");
337
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Inprimagailu Inf.");
338
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Inprimagailu Inf.");
339
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("3 puntuko berdinketa");
340
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("Berdinketa lineala");
341
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("Berdinketa bilinearra");
342
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("Unified Bed Leveling");
343
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("Sare berdinketa");
344
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Inprima. estatis.");
345
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Txartelaren Info.");
346
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistoreak");
347
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Estrusoreak");
348
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baudioak");
349
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protokoloa");
350
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Kabina Argia");
351
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS
352
+  = ;
353
+  #if LCD_WIDTH >= 20
354
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Inprim. Zenbaketa");
355
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Burututa");
356
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Inprim. denbora");
357
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Imprimatze luzeena");
358
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Estruituta guztira");
359
+  #else
360
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Inprimatze");
361
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Burututa");
362
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Guztira");
363
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Luzeena");
364
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Estrusio");
365
+  #endif
366
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Tenp. Minimoa");
367
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Tenp. Maximoa");
368
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Elikadura-iturria");
369
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Driver-aren potentzia");
370
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Driver %");
371
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Idatzi DAC EEPROM");
372
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("HARIZPIA ALDATU");
373
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("HARIZPIA KARGATU");
374
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("HARIZPIA DESKARGATU");
375
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("ALDAKETA AUKERAK:");
376
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Inprima. jarraitu");
377
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  Pita: ");
378
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("Hasi. huts egin du");
379
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("Neurketak huts egin du");
380
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: hotzegi");
381
+
382
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Inprimagailu okerra");
383
+
384
+  //
385
+  // Filament Change screens show up to 3 lines on a 4-line display
386
+  //                        ...or up to 2 lines on a 3-line display
387
+  //
388
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT            = _UxGT(MSG_1_LINE("Mesedez, itxaron..."));
389
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD          = _UxGT(MSG_1_LINE("Deskargatzen..."));
390
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT          = _UxGT(MSG_1_LINE("Sartu eta click egin"));
391
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING         = _UxGT(MSG_1_LINE("Berotzen..."));
392
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD            = _UxGT(MSG_1_LINE("Kargatzen..."));
393
+}

+ 131
- 137
Marlin/src/lcd/language/language_fi.h Zobrazit soubor

@@ -30,142 +30,136 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" valmis.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Kortti asetettu")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Kortti poistettu")
38
-#define MSG_MAIN                            _UxGT("Palaa")
39
-#define MSG_AUTOSTART                       _UxGT("Automaatti")
40
-#define MSG_DISABLE_STEPPERS                _UxGT("Vapauta moottorit")
41
-#define MSG_AUTO_HOME                       _UxGT("Aja referenssiin")
42
-#define MSG_LEVEL_BED_HOMING                _UxGT("Homing XYZ")
43
-#define MSG_LEVEL_BED_WAITING               _UxGT("Click to Begin")
44
-#define MSG_LEVEL_BED_DONE                  _UxGT("Leveling Done!")
45
-#define MSG_SET_HOME_OFFSETS                _UxGT("Set home offsets")
46
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offsets applied")
47
-#define MSG_SET_ORIGIN                      _UxGT("Aseta origo")
48
-#define MSG_PREHEAT_1                       _UxGT("Esilämmitä " PREHEAT_1_LABEL)
49
-#define MSG_PREHEAT_1_N                     _UxGT("Esilämmitä " PREHEAT_1_LABEL " ")
50
-#define MSG_PREHEAT_1_ALL                   _UxGT("Esilä. " PREHEAT_1_LABEL " Kaikki")
51
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Esilä. " PREHEAT_1_LABEL " Alusta")
52
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Esilämm. " PREHEAT_1_LABEL " konf")
53
-#define MSG_PREHEAT_2                       _UxGT("Esilämmitä " PREHEAT_2_LABEL)
54
-#define MSG_PREHEAT_2_N                     _UxGT("Esilämmitä " PREHEAT_2_LABEL " ")
55
-#define MSG_PREHEAT_2_ALL                   _UxGT("Esilä. " PREHEAT_2_LABEL " Kaikki")
56
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Esilä. " PREHEAT_2_LABEL " Alusta")
57
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Esilämm. " PREHEAT_2_LABEL " konf")
58
-#define MSG_COOLDOWN                        _UxGT("Jäähdytä")
59
-#define MSG_SWITCH_PS_ON                    _UxGT("Virta päälle")
60
-#define MSG_SWITCH_PS_OFF                   _UxGT("Virta pois")
61
-#define MSG_EXTRUDE                         _UxGT("Pursota")
62
-#define MSG_RETRACT                         _UxGT("Vedä takaisin")
63
-#define MSG_MOVE_AXIS                       _UxGT("Liikuta akseleita")
64
-#define MSG_MOVE_X                          _UxGT("Liikuta X")
65
-#define MSG_MOVE_Y                          _UxGT("Liikuta Y")
66
-#define MSG_MOVE_Z                          _UxGT("Liikuta Z")
67
-#define MSG_MOVE_E                          _UxGT("Extruder")
68
-#define MSG_MOVE_Z_DIST                     _UxGT("Liikuta %smm")
69
-#define MSG_MOVE_01MM                       _UxGT("Liikuta 0.1mm")
70
-#define MSG_MOVE_1MM                        _UxGT("Liikuta 1mm")
71
-#define MSG_MOVE_10MM                       _UxGT("Liikuta 10mm")
72
-#define MSG_SPEED                           _UxGT("Nopeus")
73
-#define MSG_NOZZLE                          _UxGT("Suutin")
74
-#define MSG_BED                             _UxGT("Alusta")
75
-#define MSG_FAN_SPEED                       _UxGT("Tuul. nopeus")
76
-#define MSG_FLOW                            _UxGT("Virtaus")
77
-#define MSG_CONTROL                         _UxGT("Kontrolli")
78
-#define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" Min")
79
-#define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" Max")
80
-#define MSG_FACTOR                          LCD_STR_THERMOMETER _UxGT(" Kerr")
81
-#define MSG_AUTOTEMP                        _UxGT("Autotemp")
82
-#define MSG_LCD_ON                          _UxGT("On")
83
-#define MSG_LCD_OFF                         _UxGT("Off")
84
-#define MSG_PID_P                           _UxGT("PID-P")
85
-#define MSG_PID_I                           _UxGT("PID-I")
86
-#define MSG_PID_D                           _UxGT("PID-D")
87
-#define MSG_PID_C                           _UxGT("PID-C")
88
-#define MSG_ACC                             _UxGT("Kiihtyv")
89
-#define MSG_JERK                            _UxGT("Jerk")
90
-#if IS_KINEMATIC
91
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
92
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
93
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
94
-#else
95
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
96
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
97
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
98
-#endif
99
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
100
-#define MSG_VMAX                            _UxGT("Vmax ")
101
-#define MSG_VMIN                            _UxGT("Vmin")
102
-#define MSG_VTRAV_MIN                       _UxGT("VLiike min")
103
-#define MSG_ACCELERATION                    MSG_ACC
104
-#define MSG_AMAX                            _UxGT("Amax ")
105
-#define MSG_A_RETRACT                       _UxGT("A-peruuta")
106
-#define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
107
-#if IS_KINEMATIC
108
-  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
109
-  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
110
-  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
111
-#else
112
-  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
113
-  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
114
-  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
115
-#endif
116
-#define MSG_ESTEPS                          _UxGT("Esteps/mm")
117
-#define MSG_E0_STEPS                        _UxGT("E1steps/mm")
118
-#define MSG_E1_STEPS                        _UxGT("E2steps/mm")
119
-#define MSG_E2_STEPS                        _UxGT("E3steps/mm")
120
-#define MSG_E3_STEPS                        _UxGT("E4steps/mm")
121
-#define MSG_E4_STEPS                        _UxGT("E5steps/mm")
122
-#define MSG_E5_STEPS                        _UxGT("E6steps/mm")
123
-#define MSG_TEMPERATURE                     _UxGT("Lämpötila")
124
-#define MSG_MOTION                          _UxGT("Liike")
125
-#define MSG_FILAMENT                        _UxGT("Filament")
126
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm³")
127
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Dia.")
128
-#define MSG_CONTRAST                        _UxGT("LCD kontrasti")
129
-#define MSG_STORE_EEPROM                    _UxGT("Tallenna muistiin")
130
-#define MSG_LOAD_EEPROM                     _UxGT("Lataa muistista")
131
-#define MSG_RESTORE_FAILSAFE                _UxGT("Palauta oletus")
132
-#define MSG_REFRESH                         _UxGT("Päivitä")
133
-#define MSG_WATCH                           _UxGT("Seuraa")
134
-#define MSG_PREPARE                         _UxGT("Valmistele")
135
-#define MSG_TUNE                            _UxGT("Säädä")
136
-#define MSG_PAUSE_PRINT                     _UxGT("Keskeytä tulostus")
137
-#define MSG_RESUME_PRINT                    _UxGT("Jatka tulostusta")
138
-#define MSG_STOP_PRINT                      _UxGT("Pysäytä tulostus")
139
-#define MSG_MEDIA_MENU                      _UxGT("Korttivalikko")
140
-#define MSG_NO_MEDIA                        _UxGT("Ei korttia")
141
-#define MSG_DWELL                           _UxGT("Nukkumassa...")
142
-#define MSG_USERWAIT                        _UxGT("Odotet. valintaa")
143
-#define MSG_PRINT_ABORTED                   _UxGT("Print aborted")
144
-#define MSG_NO_MOVE                         _UxGT("Ei liiketta.")
145
-#define MSG_KILLED                          _UxGT("KILLED. ")
146
-#define MSG_STOPPED                         _UxGT("STOPPED. ")
147
-#define MSG_CONTROL_RETRACT                 _UxGT("Vedä mm")
148
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Va. Vedä mm")
149
-#define MSG_CONTROL_RETRACTF                _UxGT("Vedä V")
150
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Z mm")
151
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
152
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Va. UnRet mm")
153
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
154
-#define MSG_AUTORETRACT                     _UxGT("AutoVeto.")
155
-#define MSG_FILAMENTCHANGE                  _UxGT("Change filament")
156
-#define MSG_INIT_MEDIA                      _UxGT("Init. SD-Card")
157
-#define MSG_CHANGE_MEDIA                    _UxGT("Change SD-Card")
158
-#define MSG_ZPROBE_OUT                      _UxGT("Z probe out. bed")
159
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s first")
160
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Offset")
161
-#define MSG_BABYSTEP_X                      _UxGT("Babystep X")
162
-#define MSG_BABYSTEP_Y                      _UxGT("Babystep Y")
163
-#define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
164
-#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop abort")
165
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibrointi")
166
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibroi X")
167
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibroi Y")
168
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibroi Z")
169
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibroi Center")
34
+namespace Language_fi {
35
+  using namespace Language_en; // Inherit undefined strings from English
170 36
 
171
-#define MSG_EXPECTED_PRINTER                _UxGT("Väärä tulostin")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Finnish");
39
+
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" valmis.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Kortti asetettu");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Kortti poistettu");
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Palaa");
44
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Automaatti");
45
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Vapauta moottorit");
46
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Aja referenssiin");
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_H0                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N0;
50
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N1;
51
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N2;
52
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N3;
53
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N4;
54
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N5;
55
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
56
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N0;
57
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N1;
58
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N2;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N3;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N4;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N5;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
63
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
64
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
65
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Esilämmitä ") PREHEAT_2_LABEL;
66
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin");
73
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N0;
74
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N1;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N2;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N3;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N4;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N5;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Kaikki");
80
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Alusta");
81
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Esilämm. ") PREHEAT_2_LABEL _UxGT(" konf");
82
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Jäähdytä");
83
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Virta päälle");
84
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Virta pois");
85
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Pursota");
86
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Vedä takaisin");
87
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Liikuta akseleita");
88
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Liikuta X");
89
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Liikuta Y");
90
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Liikuta Z");
91
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Extruder");
92
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Extruder ") LCD_STR_E0;
93
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Extruder ") LCD_STR_E1;
94
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Extruder ") LCD_STR_E2;
95
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Extruder ") LCD_STR_E3;
96
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Extruder ") LCD_STR_E4;
97
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Extruder ") LCD_STR_E5;
98
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Liikuta %smm");
99
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Liikuta 0.1mm");
100
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Liikuta 1mm");
101
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Liikuta 10mm");
102
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Nopeus");
103
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Suutin");
104
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Suutin ") LCD_STR_N0;
105
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Suutin ") LCD_STR_N1;
106
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Suutin ") LCD_STR_N2;
107
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Suutin ") LCD_STR_N3;
108
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Suutin ") LCD_STR_N4;
109
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Suutin ") LCD_STR_N5;
110
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Alusta");
111
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Tuul. nopeus");
112
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Tuul. nopeus 1");
113
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Tuul. nopeus 2");
114
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Tuul. nopeus 3");
115
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Virtaus");
116
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Virtaus ") LCD_STR_N0;
117
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Virtaus ") LCD_STR_N1;
118
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Virtaus ") LCD_STR_N2;
119
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Virtaus ") LCD_STR_N3;
120
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Virtaus ") LCD_STR_N4;
121
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Virtaus ") LCD_STR_N5;
122
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Kontrolli");
123
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
124
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
125
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Kerr");
126
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Autotemp");
127
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Kiihtyv");
128
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("VLiike min");
129
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-peruuta");
130
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Lämpötila");
131
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Liike");
132
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filament");
133
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm³");
134
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD kontrasti");
135
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Tallenna muistiin");
136
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Lataa muistista");
137
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Palauta oletus");
138
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Päivitä");
139
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Seuraa");
140
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Valmistele");
141
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Säädä");
142
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Keskeytä tulostus");
143
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Jatka tulostusta");
144
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Pysäytä tulostus");
145
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Korttivalikko");
146
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Ei korttia");
147
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Nukkumassa...");
148
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Odotet. valintaa");
149
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Ei liiketta.");
150
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Vedä mm");
151
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Va. Vedä mm");
152
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Vedä V");
153
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Z mm");
154
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
155
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Va. UnRet mm");
156
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  V");
157
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("AutoVeto.");
158
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Kalibrointi");
159
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibroi X");
160
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibroi Y");
161
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibroi Z");
162
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibroi Center");
163
+
164
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Väärä tulostin");
165
+}

+ 568
- 515
Marlin/src/lcd/language/language_fr.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 235
- 216
Marlin/src/lcd/language/language_gl.h Zobrazit soubor

@@ -32,222 +32,241 @@
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33 33
 #define NOT_EXTENDED_ISO10646_1_5X7
34 34
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" lista.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Tarxeta inserida")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Tarxeta retirada")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("FinCarro")
39
-#define MSG_MAIN                            _UxGT("Menu principal")
40
-#define MSG_AUTOSTART                       _UxGT("Autoarranque")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Apagar motores")
42
-#define MSG_AUTO_HOME                       _UxGT("Ir a orixe")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Ir orixe X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Ir orixe Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Ir orixe Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Ir orixes XYZ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Prema pulsador")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Seguinte punto")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Nivelado feito")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Offsets na orixe")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offsets fixados")
52
-#define MSG_SET_ORIGIN                      _UxGT("Fixar orixe")
53
-#define MSG_PREHEAT_1                       _UxGT("Prequentar " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     _UxGT("Prequentar " PREHEAT_1_LABEL " ")
55
-#define MSG_PREHEAT_1_ALL                   _UxGT("Preque. " PREHEAT_1_LABEL " Todo")
56
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Preque. " PREHEAT_1_LABEL " Cama")
57
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Preque. " PREHEAT_1_LABEL " conf")
58
-#define MSG_PREHEAT_2                       _UxGT("Prequentar " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     _UxGT("Prequentar " PREHEAT_2_LABEL " ")
60
-#define MSG_PREHEAT_2_ALL                   _UxGT("Preque. " PREHEAT_2_LABEL " Todo")
61
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Preque. " PREHEAT_2_LABEL " Cama")
62
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Preque. " PREHEAT_2_LABEL " conf")
63
-#define MSG_COOLDOWN                        _UxGT("Arrefriar")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Acender")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Apagar")
66
-#define MSG_EXTRUDE                         _UxGT("Extrudir")
67
-#define MSG_RETRACT                         _UxGT("Retraer")
68
-#define MSG_MOVE_AXIS                       _UxGT("Mover eixe")
69
-#define MSG_BED_LEVELING                    _UxGT("Nivelar cama")
70
-#define MSG_LEVEL_BED                       _UxGT("Nivelar cama")
71
-#define MSG_MOVE_X                          _UxGT("Mover X")
72
-#define MSG_MOVE_Y                          _UxGT("Mover Y")
73
-#define MSG_MOVE_Z                          _UxGT("Mover Z")
74
-#define MSG_MOVE_E                          _UxGT("Extrusor")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Mover %smm")
76
-#define MSG_MOVE_01MM                       _UxGT("Mover 0.1mm")
77
-#define MSG_MOVE_1MM                        _UxGT("Mover 1mm")
78
-#define MSG_MOVE_10MM                       _UxGT("Mover 10mm")
79
-#define MSG_SPEED                           _UxGT("Velocidade")
80
-#define MSG_BED_Z                           _UxGT("Cama Z")
81
-#define MSG_NOZZLE                          _UxGT("Bico")
82
-#define MSG_BED                             _UxGT("Cama")
83
-#define MSG_FAN_SPEED                       _UxGT("Velocidade vent.")
84
-#define MSG_FLOW                            _UxGT("Fluxo")
85
-//#define MSG_CONTROL                       _UxGT("Control")
86
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
87
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
88
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
89
-//#define MSG_AUTOTEMP                      _UxGT("Autotemp")
90
-//#define MSG_LCD_ON                        _UxGT("On")
91
-//#define MSG_LCD_OFF                       _UxGT("Off")
92
-//#define MSG_PID_P                         _UxGT("PID-P")
93
-//#define MSG_PID_I                         _UxGT("PID-I")
94
-//#define MSG_PID_D                         _UxGT("PID-D")
95
-//#define MSG_PID_C                         _UxGT("PID-C")
96
-#define MSG_SELECT                          _UxGT("Escolla")
97
-#define MSG_ACC                             _UxGT("Acel")
98
-//#define MSG_JERK                          _UxGT("Jerk")
99
-//#if IS_KINEMATIC
100
-//  #define MSG_VA_JERK                     _UxGT("Va-jerk")
101
-//  #define MSG_VB_JERK                     _UxGT("Vb-jerk")
102
-//  #define MSG_VC_JERK                     _UxGT("Vc-jerk")
103
-//#else
104
-//  #define MSG_VA_JERK                     _UxGT("Vx-jerk")
105
-//  #define MSG_VB_JERK                     _UxGT("Vy-jerk")
106
-//  #define MSG_VC_JERK                     _UxGT("Vz-jerk")
107
-//#endif
108
-//#define MSG_VE_JERK                       _UxGT("Ve-jerk")
109
-//#define MSG_VMAX                          _UxGT("Vmax ")
110
-//#define MSG_VMIN                          _UxGT("Vmin")
111
-//#define MSG_VTRAV_MIN                     _UxGT("VTrav min")
112
-//#define MSG_AMAX                          _UxGT("Amax ")
113
-//#define MSG_A_RETRACT                     _UxGT("A-retract")
114
-//#define MSG_A_TRAVEL                      _UxGT("A-travel")
115
-#define MSG_STEPS_PER_MM                    _UxGT("Pasos/mm")
116
-#if IS_KINEMATIC
117
-  #define MSG_ASTEPS                        _UxGT("A pasos/mm")
118
-  #define MSG_BSTEPS                        _UxGT("B pasos/mm")
119
-  #define MSG_CSTEPS                        _UxGT("C pasos/mm")
120
-#else
121
-  #define MSG_ASTEPS                        _UxGT("X pasos/mm")
122
-  #define MSG_BSTEPS                        _UxGT("Y pasos/mm")
123
-  #define MSG_CSTEPS                        _UxGT("Z pasos/mm")
124
-#endif
125
-#define MSG_ESTEPS                          _UxGT("E pasos/mm")
126
-#define MSG_E0_STEPS                        _UxGT("E1 pasos/mm")
127
-#define MSG_E1_STEPS                        _UxGT("E2 pasos/mm")
128
-#define MSG_E2_STEPS                        _UxGT("E3 pasos/mm")
129
-#define MSG_E3_STEPS                        _UxGT("E4 pasos/mm")
130
-#define MSG_E4_STEPS                        _UxGT("E5 pasos/mm")
131
-#define MSG_E5_STEPS                        _UxGT("E6 pasos/mm")
132
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
133
-#define MSG_MOTION                          _UxGT("Movemento")
134
-#define MSG_FILAMENT                        _UxGT("Filamento")
135
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E en mm3")
136
-#define MSG_FILAMENT_DIAM                   _UxGT("Diam. fil.")
137
-#define MSG_CONTRAST                        _UxGT("Constraste LCD")
138
-#define MSG_STORE_EEPROM                    _UxGT("Gardar en memo.")
139
-#define MSG_LOAD_EEPROM                     _UxGT("Cargar de memo.")
140
-#define MSG_RESTORE_FAILSAFE                _UxGT("Cargar de firm.")
141
-#define MSG_REFRESH                         _UxGT("Volver a cargar")
142
-#define MSG_WATCH                           _UxGT("Monitorizacion")
143
-#define MSG_PREPARE                         _UxGT("Preparar")
144
-#define MSG_TUNE                            _UxGT("Axustar")
145
-#define MSG_PAUSE_PRINT                     _UxGT("Pausar impres.")
146
-#define MSG_RESUME_PRINT                    _UxGT("Seguir impres.")
147
-#define MSG_STOP_PRINT                      _UxGT("Deter impres.")
148
-#define MSG_MEDIA_MENU                      _UxGT("Tarxeta SD")
149
-#define MSG_NO_MEDIA                        _UxGT("Sen tarxeta SD")
150
-#define MSG_DWELL                           _UxGT("En repouso...")
151
-#define MSG_USERWAIT                        _UxGT("A espera...")
152
-#define MSG_PRINT_ABORTED                   _UxGT("Impre. cancelada")
153
-#define MSG_NO_MOVE                         _UxGT("Sen movemento.")
154
-#define MSG_KILLED                          _UxGT("PROGRAMA MORTO")
155
-#define MSG_STOPPED                         _UxGT("PROGRAMA PARADO")
156
-#define MSG_CONTROL_RETRACT                 _UxGT("Retraccion mm")
157
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Cambio retra. mm")
158
-#define MSG_CONTROL_RETRACTF                _UxGT("Retraccion V")
159
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Alzar Z mm")
160
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Recup. retra. mm")
161
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Cambio recup. mm")
162
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Recuperacion V")
163
-#define MSG_AUTORETRACT                     _UxGT("Retraccion auto.")
164
-#define MSG_FILAMENTCHANGE                  _UxGT("Cambiar filamen.")
165
-#define MSG_INIT_MEDIA                      _UxGT("Iniciando SD")
166
-#define MSG_CHANGE_MEDIA                    _UxGT("Cambiar SD")
167
-#define MSG_ZPROBE_OUT                      _UxGT("Sonda-Z sen cama")
168
-//#define MSG_HOME_FIRST                    _UxGT("Home %s%s%s first")
169
-#define MSG_BLTOUCH_SELFTEST                _UxGT("Comprobar BLTouch")
170
-#define MSG_BLTOUCH_RESET                   _UxGT("Iniciar BLTouch")
171
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Offset Z")
172
-#define MSG_BABYSTEP_X                      _UxGT("Micropaso X")
173
-#define MSG_BABYSTEP_Y                      _UxGT("Micropaso Y")
174
-#define MSG_BABYSTEP_Z                      _UxGT("Micropaso Z")
175
-#define MSG_ENDSTOP_ABORT                   _UxGT("Erro fin carro")
176
-#define MSG_HEATING_FAILED_LCD              _UxGT("Fallo quentando")
177
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Erro temperatura")
178
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Temp. excesiva")
179
-//#define MSG_ERR_MAXTEMP                   _UxGT("Err: temp. max.")
180
-//#define MSG_ERR_MINTEMP                   _UxGT("Err: temp. min.")
181
-//#define MSG_ERR_MAXTEMP_BED               _UxGT("Err: MAXTEMP BED")
182
-//#define MSG_ERR_MINTEMP_BED               _UxGT("Err: MINTEMP BED")
183
-//#define MSG_ERR_Z_HOMING                  _UxGT("Home XY first")
184
-#define MSG_HALTED                          _UxGT("SISTEMA MORTO")
185
-#define MSG_PLEASE_RESET                    _UxGT("Debe reiniciar!")
186
-//#define MSG_SHORT_DAY                     _UxGT("d") // One character only
187
-//#define MSG_SHORT_HOUR                    _UxGT("h") // One character only
188
-//#define MSG_SHORT_MINUTE                  _UxGT("m") // One character only
189
-#define MSG_HEATING                         _UxGT("Quentando...")
190
-#define MSG_BED_HEATING                     _UxGT("Quentando cama...")
191
-#define MSG_DELTA_CALIBRATE                 _UxGT("Calibracion Delta")
192
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Calibrar X")
193
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Calibrar Y")
194
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Calibrar Z")
195
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrar Centro")
196
-#define MSG_INFO_MENU                       _UxGT("Acerca de...")
197
-#define MSG_INFO_PRINTER_MENU               _UxGT("Informacion")
198
-#define MSG_INFO_STATS_MENU                 _UxGT("Estadisticas")
199
-#define MSG_INFO_BOARD_MENU                 _UxGT("Placa nai")
200
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistores")
201
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extrusores")
202
-#define MSG_INFO_BAUDRATE                   _UxGT("Baudios")
203
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocolo")
204
-#define MSG_CASE_LIGHT                      _UxGT("Luz")
205
-#if LCD_WIDTH >= 20
206
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Total traballos")
207
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Total completos")
208
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tempo impresion")
209
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Traballo +longo")
210
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Total extruido")
211
-#else
212
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Traballos")
213
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Completos")
214
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tempo")
215
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("O +longo")
216
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extruido")
217
-#endif
218
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
219
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Temp")
220
-#define MSG_INFO_PSU                        _UxGT("Fonte alime.")
221
-#define MSG_DRIVE_STRENGTH                  _UxGT("Potencia motor")
222
-#define MSG_DAC_PERCENT                     _UxGT("Motor %")
223
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Garda DAC EEPROM")
35
+namespace Language_gl {
36
+  using namespace Language_en; // Inherit undefined strings from English
224 37
 
225
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Segue traballo")
38
+  constexpr uint8_t    CHARSIZE                            = 1;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Galician");
226 40
 
227
-#define MSG_EXPECTED_PRINTER                _UxGT("Impresora incorrecta")
41
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" lista.");
42
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Tarxeta inserida");
43
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Tarxeta retirada");
44
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("FinCarro");
45
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu principal");
46
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Autoarranque");
47
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Apagar motores");
48
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Ir a orixe");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Ir orixe X");
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Ir orixe Y");
51
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Ir orixe Z");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Ir orixes XYZ");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Prema pulsador");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Seguinte punto");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Nivelado feito");
56
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Offsets na orixe");
57
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets fixados");
58
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Fixar orixe");
59
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Prequentar ") PREHEAT_1_LABEL;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N0;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N1;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N2;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N3;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N4;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N5;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N0;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N1;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N2;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N3;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N4;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N5;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
74
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
75
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
76
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Prequentar ") PREHEAT_2_LABEL;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N0;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N1;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N2;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N3;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N4;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N5;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico");
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N0;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N1;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N2;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N3;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N4;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N5;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Todo");
91
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Cama");
92
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" conf");
93
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Arrefriar");
94
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Acender");
95
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Apagar");
96
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrudir");
97
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retraer");
98
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Mover eixe");
99
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Nivelar cama");
100
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Nivelar cama");
101
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mover X");
102
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mover Y");
103
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mover Z");
104
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Extrusor");
105
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Extrusor ") LCD_STR_E0;
106
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Extrusor ") LCD_STR_E1;
107
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Extrusor ") LCD_STR_E2;
108
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Extrusor ") LCD_STR_E3;
109
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Extrusor ") LCD_STR_E4;
110
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Extrusor ") LCD_STR_E5;
111
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mover %smm");
112
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mover 0.1mm");
113
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mover 1mm");
114
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mover 10mm");
115
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Velocidade");
116
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Cama Z");
117
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Bico");
118
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Bico ") LCD_STR_N0;
119
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Bico ") LCD_STR_N1;
120
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Bico ") LCD_STR_N2;
121
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Bico ") LCD_STR_N3;
122
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Bico ") LCD_STR_N4;
123
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Bico ") LCD_STR_N5;
124
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Cama");
125
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Velocidade vent.");
126
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Velocidade vent. 1");
127
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Velocidade vent. 2");
128
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Velocidade vent. 3");
129
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Fluxo");
130
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Fluxo ") LCD_STR_N0;
131
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Fluxo ") LCD_STR_N1;
132
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Fluxo ") LCD_STR_N2;
133
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Fluxo ") LCD_STR_N3;
134
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Fluxo ") LCD_STR_N4;
135
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Fluxo ") LCD_STR_N5;
136
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
137
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
138
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fact");
139
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Escolla");
140
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Escolla ") LCD_STR_E0;
141
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Escolla ") LCD_STR_E1;
142
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Escolla ") LCD_STR_E2;
143
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Escolla ") LCD_STR_E3;
144
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Escolla ") LCD_STR_E4;
145
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Escolla ") LCD_STR_E5;
146
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Acel");
147
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Pasos/mm");
148
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT(" pasos/mm");
149
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT(" pasos/mm");
150
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT(" pasos/mm");
151
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E pasos/mm");
152
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" pasos/mm");
153
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" pasos/mm");
154
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" pasos/mm");
155
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" pasos/mm");
156
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" pasos/mm");
157
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" pasos/mm");
158
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
159
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Movemento");
160
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filamento");
161
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E en mm3");
162
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Diam. fil.");
163
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Diam. fil. ") LCD_STR_E0;
164
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Diam. fil. ") LCD_STR_E1;
165
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Diam. fil. ") LCD_STR_E2;
166
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Diam. fil. ") LCD_STR_E3;
167
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Diam. fil. ") LCD_STR_E4;
168
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Diam. fil. ") LCD_STR_E5;
169
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Constraste LCD");
170
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Gardar en memo.");
171
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Cargar de memo.");
172
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Cargar de firm.");
173
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Volver a cargar");
174
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Monitorizacion");
175
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Preparar");
176
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Axustar");
177
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausar impres.");
178
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Seguir impres.");
179
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Deter impres.");
180
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Tarxeta SD");
181
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Sen tarxeta SD");
182
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("En repouso...");
183
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("A espera...");
184
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Impre. cancelada");
185
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Sen movemento.");
186
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("PROGRAMA MORTO");
187
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("PROGRAMA PARADO");
188
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Retraccion mm");
189
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Cambio retra. mm");
190
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Retraccion V");
191
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Alzar Z mm");
192
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Recup. retra. mm");
193
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Cambio recup. mm");
194
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Recuperacion V");
195
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Retraccion auto.");
196
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Cambiar filamen.");
197
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Cambiar filamen. ") LCD_STR_E0;
198
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Cambiar filamen. ") LCD_STR_E1;
199
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Cambiar filamen. ") LCD_STR_E2;
200
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Cambiar filamen. ") LCD_STR_E3;
201
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Cambiar filamen. ") LCD_STR_E4;
202
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Cambiar filamen. ") LCD_STR_E5;
203
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Iniciando SD");
204
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Cambiar SD");
205
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sonda-Z sen cama");
206
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("Comprobar BLTouch");
207
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Iniciar BLTouch");
208
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Offset Z");
209
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Micropaso X");
210
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Micropaso Y");
211
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Micropaso Z");
212
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Erro fin carro");
213
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Fallo quentando");
214
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Erro temperatura");
215
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Temp. excesiva");
216
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("SISTEMA MORTO");
217
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Debe reiniciar!");
218
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Quentando...");
219
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Quentando cama...");
220
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Calibracion Delta");
221
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Calibrar X");
222
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Calibrar Y");
223
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Calibrar Z");
224
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Calibrar Centro");
225
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Acerca de...");
226
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Informacion");
227
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Estadisticas");
228
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Placa nai");
229
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistores");
230
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extrusores");
231
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baudios");
232
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protocolo");
233
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Luz");
234
+  #if LCD_WIDTH >= 20
235
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Total traballos");
236
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Total completos");
237
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tempo impresion");
238
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Traballo +longo");
239
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Total extruido");
240
+  #else
241
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Traballos");
242
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Completos");
243
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tempo");
244
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("O +longo");
245
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extruido");
246
+  #endif
247
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Min Temp");
248
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Max Temp");
249
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Fonte alime.");
250
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Potencia motor");
251
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Garda DAC EEPROM");
228 252
 
229
-#if LCD_HEIGHT >= 4
230
-  // Up to 3 lines allowed
231
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Agarde para")
232
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("iniciar troco")
233
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("de filamento")
234
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Agarde pola")
235
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("descarga do")
236
-  #define MSG_FILAMENT_CHANGE_UNLOAD_3      _UxGT("filamento")
237
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Introduza o")
238
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("filamento e")
239
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("faga click")
240
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Agarde pola")
241
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("carga do")
242
-  #define MSG_FILAMENT_CHANGE_LOAD_3        _UxGT("filamento")
243
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Agarde para")
244
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("seguir co")
245
-  #define MSG_FILAMENT_CHANGE_RESUME_3      _UxGT("traballo")
246
-#else // LCD_HEIGHT < 4
247
-  // Up to 2 lines allowed
248
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Agarde...")
249
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Descargando...")
250
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Introduza e click")
251
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Cargando...")
252
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Seguindo...")
253
-#endif // LCD_HEIGHT < 4
253
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Segue traballo");
254
+
255
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Impresora incorrecta");
256
+
257
+  #if LCD_HEIGHT >= 4
258
+    // Up to 3 lines allowed
259
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Agarde para", "iniciar troco", "de filamento"));
260
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento"));
261
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click"));
262
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento"));
263
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_3_LINE("Agarde para", "seguir co", "traballo"));
264
+  #else // LCD_HEIGHT < 4
265
+    // Up to 2 lines allowed
266
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Agarde..."));
267
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Descargando..."));
268
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Introduza e click"));
269
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Cargando..."));
270
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Seguindo..."));
271
+  #endif // LCD_HEIGHT < 4
272
+}

+ 172
- 214
Marlin/src/lcd/language/language_hr.h Zobrazit soubor

@@ -30,223 +30,181 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" spreman.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("SD kartica umetnuta")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("SD kartica uklonjena")
38
-//#define MSG_LCD_ENDSTOPS                  _UxGT("Endstops") // Max length 8 characters
39
-//#define MSG_MAIN                          _UxGT("Main")
40
-#define MSG_AUTOSTART                       _UxGT("Auto pokretanje")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Ugasi steppere")
42
-#define MSG_AUTO_HOME                       _UxGT("Automatski homing")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Home-aj X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Home-aj Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Home-aj Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Home-aj XYZ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Klikni za početak")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Sljedeća točka")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Niveliranje gotovo!")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Postavi home offsete")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offsets postavljeni")
52
-#define MSG_SET_ORIGIN                      _UxGT("Postavi ishodište")
53
-#define MSG_PREHEAT_1                       _UxGT("Predgrij " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
55
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Sve")
56
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Bed")
57
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" conf")
58
-#define MSG_PREHEAT_2                       _UxGT("Predgrij " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
60
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Sve")
61
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Bed")
62
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" conf")
63
-#define MSG_COOLDOWN                        _UxGT("Hlađenje")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Uključi napajanje")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Isključi napajanje")
66
-//#define MSG_EXTRUDE                       _UxGT("Extrude")
67
-//#define MSG_RETRACT                       _UxGT("Retract")
68
-#define MSG_MOVE_AXIS                       _UxGT("Miči os")
69
-#define MSG_BED_LEVELING                    _UxGT("Niveliraj bed")
70
-#define MSG_LEVEL_BED                       _UxGT("Niveliraj bed")
71
-#define MSG_MOVE_X                          _UxGT("Miči X")
72
-#define MSG_MOVE_Y                          _UxGT("Miči Y")
73
-#define MSG_MOVE_Z                          _UxGT("Miči Z")
74
-//#define MSG_MOVE_E                        _UxGT("Extruder")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Miči %smm")
76
-#define MSG_MOVE_01MM                       _UxGT("Miči 0.1mm")
77
-#define MSG_MOVE_1MM                        _UxGT("Miči 1mm")
78
-#define MSG_MOVE_10MM                       _UxGT("Miči 10mm")
79
-#define MSG_SPEED                           _UxGT("Brzina")
80
-#define MSG_BED_Z                           _UxGT("Bed Z")
81
-#define MSG_NOZZLE                          _UxGT("Dizna")
82
-#define MSG_BED                             _UxGT("Bed")
83
-#define MSG_FAN_SPEED                       _UxGT("Brzina ventilatora")
84
-//#define MSG_FLOW                          _UxGT("Flow")
85
-//#define MSG_CONTROL                       _UxGT("Control")
86
-//#define MSG_MIN                           _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
87
-//#define MSG_MAX                           _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
88
-//#define MSG_FACTOR                        _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
89
-//#define MSG_AUTOTEMP                      _UxGT("Autotemp")
90
-//#define MSG_LCD_ON                        _UxGT("On")
91
-//#define MSG_LCD_OFF                       _UxGT("Off")
92
-//#define MSG_PID_P                         _UxGT("PID-P")
93
-//#define MSG_PID_I                         _UxGT("PID-I")
94
-//#define MSG_PID_D                         _UxGT("PID-D")
95
-//#define MSG_PID_C                         _UxGT("PID-C")
96
-#define MSG_SELECT                          _UxGT("Odaberi")
97
-//#define MSG_ACC                           _UxGT("Accel")
98
-//#define MSG_JERK                          _UxGT("Jerk")
99
-//#if IS_KINEMATIC
100
-//  #define MSG_VA_JERK                     _UxGT("Va-jerk")
101
-//  #define MSG_VB_JERK                     _UxGT("Vb-jerk")
102
-//  #define MSG_VC_JERK                     _UxGT("Vc-jerk")
103
-//#else
104
-//  #define MSG_VA_JERK                     _UxGT("Vx-jerk")
105
-//  #define MSG_VB_JERK                     _UxGT("Vy-jerk")
106
-//  #define MSG_VC_JERK                     _UxGT("Vz-jerk")
107
-//#endif
108
-//#define MSG_VE_JERK                       _UxGT("Ve-jerk")
109
-//#define MSG_VMAX                          _UxGT("Vmax ")
110
-//#define MSG_VMIN                          _UxGT("Vmin")
111
-//#define MSG_VTRAV_MIN                     _UxGT("VTrav min")
112
-//#define MSG_AMAX                          _UxGT("Amax ")
113
-//#define MSG_A_RETRACT                     _UxGT("A-retract")
114
-//#define MSG_A_TRAVEL                      _UxGT("A-travel")
115
-//#define MSG_STEPS_PER_MM                  _UxGT("Steps/mm")
116
-//#if IS_KINEMATIC
117
-//  #define MSG_ASTEPS                      _UxGT("Asteps/mm")
118
-//  #define MSG_BSTEPS                      _UxGT("Bsteps/mm")
119
-//  #define MSG_CSTEPS                      _UxGT("Csteps/mm")
120
-//#else
121
-//  #define MSG_ASTEPS                      _UxGT("Xsteps/mm")
122
-//  #define MSG_BSTEPS                      _UxGT("Ysteps/mm")
123
-//  #define MSG_CSTEPS                      _UxGT("Zsteps/mm")
124
-//#endif
125
-//#define MSG_ESTEPS                        _UxGT("Esteps/mm")
126
-//#define MSG_E0_STEPS                      _UxGT("E1steps/mm")
127
-//#define MSG_E1_STEPS                      _UxGT("E2steps/mm")
128
-//#define MSG_E2_STEPS                      _UxGT("E3steps/mm")
129
-//#define MSG_E3_STEPS                      _UxGT("E4steps/mm")
130
-//#define MSG_E4_STEPS                      _UxGT("E5steps/mm")
131
-//#define MSG_E5_STEPS                      _UxGT("E6steps/mm")
132
-#define MSG_TEMPERATURE                     _UxGT("Temperature")
133
-#define MSG_MOTION                          _UxGT("Gibanje")
134
-//#define MSG_FILAMENT                      _UxGT("Filament")
135
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm3")
136
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Dia.")
137
-#define MSG_CONTRAST                        _UxGT("Kontrast LCD-a")
138
-#define MSG_STORE_EEPROM                    _UxGT("Pohrani u memoriju")
139
-#define MSG_LOAD_EEPROM                     _UxGT("Učitaj memoriju")
140
-#define MSG_RESTORE_FAILSAFE                _UxGT("Učitaj failsafe")
141
-#define MSG_REFRESH                         _UxGT("Osvježi")
142
-#define MSG_WATCH                           _UxGT("Info screen")
143
-#define MSG_PREPARE                         _UxGT("Pripremi")
144
-//#define MSG_TUNE                          _UxGT("Tune")
145
-#define MSG_PAUSE_PRINT                     _UxGT("Pauziraj print")
146
-#define MSG_RESUME_PRINT                    _UxGT("Nastavi print")
147
-#define MSG_STOP_PRINT                      _UxGT("Zaustavi print")
148
-#define MSG_MEDIA_MENU                      _UxGT("Printaj s SD kartice")
149
-#define MSG_NO_MEDIA                        _UxGT("Nema SD kartice")
150
-//#define MSG_DWELL                         _UxGT("Sleep...")
151
-#define MSG_USERWAIT                        _UxGT("Čekaj korisnika...")
152
-#define MSG_PRINT_ABORTED                   _UxGT("Print otkazan")
153
-//#define MSG_NO_MOVE                       _UxGT("No move.")
154
-//#define MSG_KILLED                        _UxGT("KILLED. ")
155
-#define MSG_STOPPED                         _UxGT("ZAUSTAVLJEN. ")
156
-//#define MSG_CONTROL_RETRACT               _UxGT("Retract mm")
157
-//#define MSG_CONTROL_RETRACT_SWAP          _UxGT("Swap Re.mm")
158
-//#define MSG_CONTROL_RETRACTF              _UxGT("Retract  V")
159
-//#define MSG_CONTROL_RETRACT_ZHOP          _UxGT("Hop mm")
160
-//#define MSG_CONTROL_RETRACT_RECOVER       _UxGT("UnRet mm")
161
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAP  _UxGT("S UnRet mm")
162
-//#define MSG_CONTROL_RETRACT_RECOVERF      _UxGT("UnRet  V")
163
-//#define MSG_AUTORETRACT                   _UxGT("AutoRetr.")
164
-#define MSG_FILAMENTCHANGE                  _UxGT("Promijeni filament")
165
-#define MSG_INIT_MEDIA                      _UxGT("Init. SD karticu")
166
-#define MSG_CHANGE_MEDIA                    _UxGT("Promijeni SD karticu")
167
-//#define MSG_ZPROBE_OUT                    _UxGT("Z probe out. bed")
168
-//#define MSG_BLTOUCH_SELFTEST              _UxGT("BLTouch Self-Test")
169
-//#define MSG_BLTOUCH_RESET                 _UxGT("Reset BLTouch")
170
-//#define MSG_HOME_FIRST                    _UxGT("Home %s%s%s first")
171
-//#define MSG_ZPROBE_ZOFFSET                _UxGT("Z Offset")
172
-//#define MSG_BABYSTEP_X                    _UxGT("Babystep X")
173
-//#define MSG_BABYSTEP_Y                    _UxGT("Babystep Y")
174
-//#define MSG_BABYSTEP_Z                    _UxGT("Babystep Z")
175
-//#define MSG_ENDSTOP_ABORT                 _UxGT("Endstop abort")
176
-#define MSG_HEATING_FAILED_LCD              _UxGT("Grijanje neuspješno")
177
-//#define MSG_ERR_REDUNDANT_TEMP            _UxGT("Err: REDUNDANT TEMP")
178
-//#define MSG_THERMAL_RUNAWAY               _UxGT("THERMAL RUNAWAY")
179
-//#define MSG_ERR_MAXTEMP                   _UxGT("Err: MAXTEMP")
180
-//#define MSG_ERR_MINTEMP                   _UxGT("Err: MINTEMP")
181
-//#define MSG_ERR_MAXTEMP_BED               _UxGT("Err: MAXTEMP BED")
182
-//#define MSG_ERR_MINTEMP_BED               _UxGT("Err: MINTEMP BED")
183
-//#define MSG_ERR_Z_HOMING                  _UxGT("Home XY first")
184
-//#define MSG_HALTED                        _UxGT("PRINTER HALTED")
185
-//#define MSG_PLEASE_RESET                  _UxGT("Please reset")
186
-//#define MSG_SHORT_DAY                     _UxGT("d") // One character only
187
-//#define MSG_SHORT_HOUR                    _UxGT("h") // One character only
188
-//#define MSG_SHORT_MINUTE                  _UxGT("m") // One character only
189
-#define MSG_HEATING                         _UxGT("Grijanje...")
190
-#define MSG_BED_HEATING                     _UxGT("Grijanje Bed-a...")
191
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibracija")
192
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibriraj X")
193
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibriraj Y")
194
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibriraj Z")
195
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibriraj Središte")
196
-#define MSG_INFO_MENU                       _UxGT("O printeru")
197
-#define MSG_INFO_PRINTER_MENU               _UxGT("Podaci o printeru")
198
-#define MSG_INFO_STATS_MENU                 _UxGT("Statistika printera")
199
-#define MSG_INFO_BOARD_MENU                 _UxGT("Podaci o elektronici")
200
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistori")
201
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extruderi")
202
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")
203
-#define MSG_INFO_PROTOCOL                   _UxGT("Protokol")
204
-#define MSG_CASE_LIGHT                      _UxGT("Osvjetljenje")
34
+namespace Language_hr {
35
+  using namespace Language_en; // Inherit undefined strings from English
205 36
 
206
-#define MSG_EXPECTED_PRINTER                _UxGT("Neispravan pisač")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Croatian");
207 39
 
208
-#if LCD_WIDTH >= 20
209
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Broj printova")
210
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Završeni")
211
-  #define MSG_INFO_PRINT_TIME               _UxGT("Ukupno printanja")
212
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Najduži print")
213
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extrudirano ukupno")
214
-#else
215
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Printovi")
216
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Završeni")
217
-  #define MSG_INFO_PRINT_TIME               _UxGT("Ukupno")
218
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Najduži")
219
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extrudirano")
220
-#endif
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" spreman.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("SD kartica umetnuta");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("SD kartica uklonjena");
43
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Endstops"); // Max length 8 characters
44
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Main");
45
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Auto pokretanje");
46
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Ugasi steppere");
47
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Automatski homing");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Home-aj X");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Home-aj Y");
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Home-aj Z");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Home-aj XYZ");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Klikni za početak");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Sljedeća točka");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Niveliranje gotovo!");
55
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Postavi home offsete");
56
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets postavljeni");
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_H0                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N0;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N1;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N2;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N3;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N4;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N5;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
74
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
75
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Predgrij ") PREHEAT_2_LABEL;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N0;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N1;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N2;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N3;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N4;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N5;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna");
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N0;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N1;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N2;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N3;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N4;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N5;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Sve");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Bed");
91
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" conf");
92
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Hlađenje");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Uključi napajanje");
94
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Isključi napajanje");
95
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Miči os");
96
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Niveliraj bed");
97
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Niveliraj bed");
98
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Miči X");
99
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Miči Y");
100
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Miči %smm");
101
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Miči 0.1mm");
102
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Miči 1mm");
103
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Miči 10mm");
104
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Brzina");
105
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Bed Z");
106
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Dizna");
107
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Dizna ") LCD_STR_N0;
108
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Dizna ") LCD_STR_N1;
109
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Dizna ") LCD_STR_N2;
110
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Dizna ") LCD_STR_N3;
111
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Dizna ") LCD_STR_N4;
112
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Dizna ") LCD_STR_N5;
113
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Bed");
114
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Brzina ventilatora");
115
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Brzina ventilatora 1");
116
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Brzina ventilatora 2");
117
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Brzina ventilatora 3");
118
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Odaberi");
119
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Odaberi ") LCD_STR_E0;
120
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Odaberi ") LCD_STR_E1;
121
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Odaberi ") LCD_STR_E2;
122
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Odaberi ") LCD_STR_E3;
123
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Odaberi ") LCD_STR_E4;
124
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Odaberi ") LCD_STR_E5;
125
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperature");
126
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Gibanje");
127
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm3");
128
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Fil. Dia.");
129
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Fil. Dia. ") LCD_STR_E0;
130
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Fil. Dia. ") LCD_STR_E1;
131
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Fil. Dia. ") LCD_STR_E2;
132
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Fil. Dia. ") LCD_STR_E3;
133
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Fil. Dia. ") LCD_STR_E4;
134
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Fil. Dia. ") LCD_STR_E5;
135
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Kontrast LCD-a");
136
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Pohrani u memoriju");
137
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Učitaj memoriju");
138
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Učitaj failsafe");
139
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Osvježi");
140
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Info screen");
141
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Pripremi");
142
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pauziraj print");
143
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Nastavi print");
144
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Zaustavi print");
145
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Printaj s SD kartice");
146
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Nema SD kartice");
147
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Čekaj korisnika...");
148
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Print otkazan");
149
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ZAUSTAVLJEN. ");
150
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Promijeni filament");
151
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Promijeni filament ") LCD_STR_E0;
152
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Promijeni filament ") LCD_STR_E1;
153
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Promijeni filament ") LCD_STR_E2;
154
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Promijeni filament ") LCD_STR_E3;
155
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Promijeni filament ") LCD_STR_E4;
156
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Promijeni filament ") LCD_STR_E5;
157
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Init. SD karticu");
158
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Promijeni SD karticu");
159
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Grijanje neuspješno");
160
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Grijanje...");
161
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Grijanje Bed-a...");
162
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Kalibracija");
163
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibriraj X");
164
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibriraj Y");
165
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibriraj Z");
166
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibriraj Središte");
167
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("O printeru");
168
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Podaci o printeru");
169
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Statistika printera");
170
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Podaci o elektronici");
171
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistori");
172
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extruderi");
173
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baud");
174
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protokol");
175
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Osvjetljenje");
221 176
 
222
-//#define MSG_INFO_MIN_TEMP                 _UxGT("Min Temp")
223
-//#define MSG_INFO_MAX_TEMP                 _UxGT("Max Temp")
224
-#define MSG_INFO_PSU                        _UxGT("Napajanje")
225
-//#define MSG_DRIVE_STRENGTH                _UxGT("Drive Strength")
226
-//#define MSG_DAC_PERCENT                   _UxGT("Driver %")
227
-//#define MSG_DAC_EEPROM_WRITE              _UxGT("DAC EEPROM Write")
177
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Neispravan pisač");
228 178
 
229
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Nastavi print")
179
+  #if LCD_WIDTH >= 20
180
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Broj printova");
181
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Završeni");
182
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Ukupno printanja");
183
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Najduži print");
184
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extrudirano ukupno");
185
+  #else
186
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Printovi");
187
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Završeni");
188
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Ukupno");
189
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Najduži");
190
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extrudirano");
191
+  #endif
230 192
 
231
-#if LCD_HEIGHT >= 4
232
-  // Up to 3 lines allowed
233
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Čekaj početak")
234
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("filamenta")
235
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("promijeni")
236
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Čekaj")
237
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("filament unload")
238
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Umetni filament")
239
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("i pritisni tipku")
240
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("za nastavak...")
241
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Pričekaj")
242
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("filament load")
243
-  //#define MSG_FILAMENT_CHANGE_RESUME_1    _UxGT("Wait for print")
244
-  //#define MSG_FILAMENT_CHANGE_RESUME_2    _UxGT("to resume")
245
-#else // LCD_HEIGHT < 4
246
-  // Up to 2 lines allowed
247
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Pričekaj...")
248
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_1    _UxGT("Ejecting...")
249
-  //#define MSG_FILAMENT_CHANGE_INSERT_1    _UxGT("Insert and Click")
250
-  //#define MSG_FILAMENT_CHANGE_LOAD_1      _UxGT("Loading...")
251
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Nastavljam...")
252
-#endif // LCD_HEIGHT < 4
193
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Napajanje");
194
+
195
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Nastavi print");
196
+
197
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD          = _UxGT(MSG_2_LINE("Čekaj", "filament unload"));
198
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD            = _UxGT(MSG_2_LINE("Pričekaj", "filament load"));
199
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME          = _UxGT(MSG_1_LINE("Nastavljam..."));
200
+
201
+  #if LCD_HEIGHT >= 4
202
+    // Up to 3 lines allowed
203
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni"));
204
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak..."));
205
+  #else
206
+    // Up to 2 lines allowed
207
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT("Pričekaj...");
208
+    //PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT      = _UxGT(MSG_2_LINE("?", "?"));
209
+  #endif
210
+}

+ 624
- 531
Marlin/src/lcd/language/language_it.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 274
- 214
Marlin/src/lcd/language/language_jp_kana.h Zobrazit soubor

@@ -31,224 +31,284 @@
31 31
  */
32 32
 
33 33
 //#define DISPLAY_CHARSET_ISO10646_KANA
34
-#define CHARSIZE 3
35 34
 
36
-// This just to show the potential benefit of unicode.
37
-// This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF.
35
+namespace Language_jp_kana {
36
+  using namespace Language_en; // Inherit undefined strings from English
38 37
 
39
-// 片仮名表示定義
40
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" ジュンビカンリョウ")
41
-#define MSG_MEDIA_INSERTED                  _UxGT("メディアガソウニュウサレマシタ")        // "Card inserted"
42
-#define MSG_MEDIA_REMOVED                   _UxGT("メディアガアリマセン")               // "Card removed"
43
-#define MSG_RELEASE_MEDIA                   _UxGT("メディアノトリダシ")
44
-#define MSG_MEDIA_RELEASED                  _UxGT("メディアガアリマセン")
45
-#define MSG_LCD_ENDSTOPS                    _UxGT("エンドストップ")                  // "Endstops" // Max length 8 characters
46
-#define MSG_MAIN                            _UxGT("メイン")                       // "Main"
47
-#define MSG_AUTOSTART                       _UxGT("ジドウカイシ")                   // "Autostart"
48
-#define MSG_DISABLE_STEPPERS                _UxGT("モーターデンゲン オフ")            // "Disable steppers"
49
-#define MSG_DEBUG_MENU                      _UxGT("デバッグメニュー")                // "Debug Menu"
50
-#define MSG_PROGRESS_BAR_TEST               _UxGT("プログレスバー テスト")            // "Progress Bar Test"
51
-#define MSG_AUTO_HOME                       _UxGT("ゲンテンフッキ")                  // "Auto home"
52
-#define MSG_AUTO_HOME_X                     _UxGT("Xジク ゲンテンフッキ")             // "Home X"
53
-#define MSG_AUTO_HOME_Y                     _UxGT("Yジク ゲンテンフッキ")             // "Home Y"
54
-#define MSG_AUTO_HOME_Z                     _UxGT("Zジク ゲンテンフッキ")             // "Home Z"
55
-#define MSG_LEVEL_BED_HOMING                _UxGT("ゲンテンフッキチュウ")              // "Homing XYZ"
56
-#define MSG_LEVEL_BED_WAITING               _UxGT("レベリングカイシ")                // "Click to Begin"
57
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("ツギノソクテイテンヘ")             // "Next Point"
58
-#define MSG_LEVEL_BED_DONE                  _UxGT("レベリングカンリョウ")              // "Leveling Done!"
59
-#define MSG_SET_HOME_OFFSETS                _UxGT("キジュンオフセットセッテイ")         // "Set home offsets"
60
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("オフセットガテキヨウサレマシタ")       // "Offsets applied"
61
-#define MSG_SET_ORIGIN                      _UxGT("キジュンセット")                 // "Set origin"
62
-#define MSG_PREHEAT_1                       _UxGT(PREHEAT_1_LABEL " ヨネツ")       // "Preheat " PREHEAT_1_LABEL
63
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
64
-#define MSG_PREHEAT_1_ALL                   _UxGT(PREHEAT_1_LABEL " スベテヨネツ")  // " All"
65
-#define MSG_PREHEAT_1_BEDONLY               _UxGT(PREHEAT_1_LABEL " ベッドヨネツ")  // " Bed"
66
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT("セッテイ")       // " conf"
67
-#define MSG_PREHEAT_2                       _UxGT(PREHEAT_2_LABEL " ヨネツ")      // "Preheat " PREHEAT_2_LABEL
68
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
69
-#define MSG_PREHEAT_2_ALL                   _UxGT(PREHEAT_2_LABEL " スベテヨネツ")  // " All"
70
-#define MSG_PREHEAT_2_BEDONLY               _UxGT(PREHEAT_2_LABEL " ベッドヨネツ")  // " Bed"
71
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT("セッテイ")       // " conf"
72
-#define MSG_COOLDOWN                        _UxGT("カネツテイシ")                  // "Cooldown"
73
-#define MSG_SWITCH_PS_ON                    _UxGT("デンゲン オン")                 // "Switch power on"
74
-#define MSG_SWITCH_PS_OFF                   _UxGT("デンゲン オフ")                 // "Switch power off"
75
-#define MSG_EXTRUDE                         _UxGT("オシダシ")                     // "Extrude"
76
-#define MSG_RETRACT                         _UxGT("ヒキコミセッテイ")                // "Retract"
77
-#define MSG_MOVE_AXIS                       _UxGT("ジクイドウ")                    // "Move axis"
78
-#define MSG_BED_LEVELING                    _UxGT("ベッドレベリング")                // "Bed leveling"
79
-#define MSG_LEVEL_BED                       _UxGT("ベッドレベリング")                // "Level bed"
38
+  constexpr uint8_t    CHARSIZE                            = 3;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Japanese");
80 40
 
81
-#define MSG_MOVING                          _UxGT("イドウチュウ")                   // "Moving..."
82
-#define MSG_FREE_XY                         _UxGT("XYジク カイホウ")                // "Free XY"
83
-#define MSG_MOVE_X                          _UxGT("Xジク イドウ")                  // "Move X"
84
-#define MSG_MOVE_Y                          _UxGT("Yジク イドウ")                  // "Move Y"
85
-#define MSG_MOVE_Z                          _UxGT("Zジク イドウ")                  // "Move Z"
86
-#define MSG_MOVE_E                          _UxGT("エクストルーダー")                // "Extruder"
87
-#define MSG_MOVE_Z_DIST                     _UxGT("%smm イドウ")                  // "Move 0.025mm"
88
-#define MSG_MOVE_01MM                       _UxGT("0.1mm イドウ")                 // "Move 0.1mm"
89
-#define MSG_MOVE_1MM                        _UxGT("  1mm イドウ")                 // "Move 1mm"
90
-#define MSG_MOVE_10MM                       _UxGT(" 10mm イドウ")                 // "Move 10mm"
91
-#define MSG_SPEED                           _UxGT("ソクド")                       // "Speed"
92
-#define MSG_BED_Z                           _UxGT("Zオフセット")                   // "Bed Z"
93
-#define MSG_NOZZLE                          _UxGT("ノズル")                       // "Nozzle"
94
-#define MSG_BED                             _UxGT("ベッド")                       // "Bed"
95
-#define MSG_FAN_SPEED                       _UxGT("ファンソクド")                    // "Fan speed"
96
-#define MSG_FLOW                            _UxGT("トシュツリョウ")                   // "Flow"
97
-#define MSG_CONTROL                         _UxGT("セイギョ")                      // "Control"
98
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" サイテイ") // " Min"
99
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" サイコウ") // " Max"
100
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" ファクター") // " Fact"
101
-#define MSG_AUTOTEMP                        _UxGT("ジドウオンドセイギョ")               // "Autotemp"
102
-#define MSG_LCD_ON                          _UxGT("オン")                         // "On"
103
-#define MSG_LCD_OFF                         _UxGT("オフ")                         // "Off"
104
-#define MSG_PID_P                           _UxGT("PID-P")
105
-#define MSG_PID_I                           _UxGT("PID-I")
106
-#define MSG_PID_D                           _UxGT("PID-D")
107
-#define MSG_PID_C                           _UxGT("PID-C")
108
-#define MSG_SELECT                          _UxGT("センタク")                     // "Select"
109
-#define MSG_ACC                             _UxGT("カソクド mm/s²")               // "Accel"
110
-#define MSG_JERK                            _UxGT("ヤクドウ mm/s")                  // "Jerk"
111
-#if IS_KINEMATIC
112
-  #define MSG_VA_JERK                       _UxGT("Aジク ヤクドウ mm/s")             // "Va-jerk"
113
-  #define MSG_VB_JERK                       _UxGT("Bジク ヤクドウ mm/s")             // "Vb-jerk"
114
-  #define MSG_VC_JERK                       _UxGT("Cジク ヤクドウ mm/s")             // "Vc-jerk"
115
-  #define MSG_ASTEPS                        _UxGT("Aステップ/mm")
116
-  #define MSG_BSTEPS                        _UxGT("Bステップ/mm")
117
-  #define MSG_CSTEPS                        _UxGT("Cステップ/mm")
118
-#else
119
-  #define MSG_VA_JERK                       _UxGT("Xジク ヤクドウ mm/s")             // "Vx-jerk"
120
-  #define MSG_VB_JERK                       _UxGT("Yジク ヤクドウ mm/s")             // "Vy-jerk"
121
-  #define MSG_VC_JERK                       _UxGT("Zジク ヤクドウ mm/s")             // "Vz-jerk"
122
-  #define MSG_ASTEPS                        _UxGT("Xステップ/mm")
123
-  #define MSG_BSTEPS                        _UxGT("Yステップ/mm")
124
-  #define MSG_CSTEPS                        _UxGT("Zステップ/mm")
125
-#endif
126
-#define MSG_VE_JERK                         _UxGT("エクストルーダー ヤクド")          // "Ve-jerk"
127
-#define MSG_VMAX                            _UxGT("サイダイオクリソクド ")            // "Vmax "
128
-#define MSG_VMIN                            _UxGT("サイショウオクリソクド")           // "Vmin"
129
-#define MSG_VTRAV_MIN                       _UxGT("サイショウイドウソクド")           // "VTrav min"
130
-#define MSG_ACCELERATION                    MSG_ACC
131
-#define MSG_AMAX                            _UxGT("サイダイカソクド ")              // "Amax "
132
-#define MSG_A_RETRACT                       _UxGT("ヒキコミカソクド")               // "A-retract"
133
-#define MSG_A_TRAVEL                        _UxGT("イドウカソクド")                // "A-travel"
134
-#define MSG_TEMPERATURE                     _UxGT("オンド")                      // "Temperature"
135
-#define MSG_MOTION                          _UxGT("ウゴキセッテイ")                // "Motion"
136
-#define MSG_FILAMENT                        _UxGT("フィラメント")                   // "Filament"
137
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm³")
138
-#define MSG_FILAMENT_DIAM                   _UxGT("フィラメントチョッケイ")            // "Fil. Dia."
139
-#define MSG_CONTRAST                        _UxGT("LCDコントラスト")               // "LCD contrast"
140
-#define MSG_STORE_EEPROM                    _UxGT("EEPROMヘホゾン")               // "Store memory"
141
-#define MSG_LOAD_EEPROM                     _UxGT("EEPROMカラヨミコミ")               // "Load memory"
142
-#define MSG_RESTORE_FAILSAFE                _UxGT("セッテイリセット")               // "Restore failsafe"
143
-#define MSG_REFRESH                         _UxGT("リフレッシュ")                  // "Refresh"
144
-#define MSG_WATCH                           _UxGT("ジョウホウガメン")               // "Info screen"
145
-#define MSG_PREPARE                         _UxGT("ジュンビセッテイ")               // "Prepare"
146
-#define MSG_TUNE                            _UxGT("チョウセイ")                    // "Tune"
147
-#define MSG_PAUSE_PRINT                     _UxGT("イチジテイシ")                  // "Pause print"
148
-#define MSG_RESUME_PRINT                    _UxGT("プリントサイカイ")                // "Resume print"
149
-#define MSG_STOP_PRINT                      _UxGT("プリントテイシ")                 // "Stop print"
150
-#define MSG_MEDIA_MENU                      _UxGT("メディアカラプリント")            // "Print from SD"
151
-#define MSG_NO_MEDIA                        _UxGT("メディアガアリマセン")            // "No SD card"
152
-#define MSG_DWELL                           _UxGT("キュウシ")                     // "Sleep..."
153
-#define MSG_USERWAIT                        _UxGT("シバラクオマチクダサイ")           // "Wait for user..."
154
-//#define MSG_USERWAIT                      _UxGT("ツヅケルニハクリックシテクダサイ")
155
-#define MSG_PRINT_ABORTED                   _UxGT("プリントガチュウシサレマシタ")       // "Print aborted"
156
-#define MSG_NO_MOVE                         _UxGT("ウゴキマセン")                  // "No move."
157
-#define MSG_KILLED                          _UxGT("ヒジョウテイシ")                  // "KILLED. "
158
-#define MSG_STOPPED                         _UxGT("テイシシマシタ")                  // "STOPPED. "
159
-#define MSG_CONTROL_RETRACT                 _UxGT("ヒキコミリョウ mm")                // "Retract mm"
160
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("ヒキコミリョウS mm")               // "Swap Re.mm"
161
-#define MSG_CONTROL_RETRACTF                _UxGT("ヒキコミソクド mm/s")             // "Retract  V"
162
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("ノズルタイヒ mm")                // "Hop mm"
163
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("ホショウリョウ mm")               // "UnRet mm"
164
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("ホショウリョウS mm")              // "S UnRet mm"
165
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("ホショウソクド mm/s")            // "UnRet  V"
166
-#define MSG_AUTORETRACT                     _UxGT("ジドウヒキコミ")                 // "AutoRetr."
167
-#define MSG_FILAMENTCHANGE                  _UxGT("フィラメントコウカン")              // "Change filament"
168
-#define MSG_INIT_MEDIA                      _UxGT("メディアサイヨミコミ")             // "Init. SD card"
169
-#define MSG_CHANGE_MEDIA                    _UxGT("メディアコウカン")               // "Change SD card"
170
-#define MSG_ZPROBE_OUT                      _UxGT("Zプローブ ベッドガイ")            // "Z probe out. bed"
171
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch ジコシンダン")          // "BLTouch Self-Test"
172
-#define MSG_BLTOUCH_RESET                   _UxGT("BLTouch リセット")             // "Reset BLTouch"
173
-#define MSG_HOME_FIRST                      _UxGT("サキニ %s%s%s ヲフッキサセテクダサイ") // "Home ... first"
174
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Zオフセット")                   // "Z Offset"
175
-#define MSG_BABYSTEP_X                      _UxGT("Xジク ビドウ")                  // "Babystep X"
176
-#define MSG_BABYSTEP_Y                      _UxGT("Yジク ビドウ")                  // "Babystep Y"
177
-#define MSG_BABYSTEP_Z                      _UxGT("Zジク ビドウ")                  // "Babystep Z"
178
-#define MSG_ENDSTOP_ABORT                   _UxGT("イドウゲンカイケンチキノウ")         // "Endstop abort"
179
-#define MSG_HEATING_FAILED_LCD              _UxGT("カネツシッパイ")                 // "Heating failed"
180
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("エラー:ジョウチョウサーミスターキノウ")  // "Err: REDUNDANT TEMP"
181
-#define MSG_THERMAL_RUNAWAY                 _UxGT("ネツボウソウ")                   // "THERMAL RUNAWAY"
182
-#define MSG_ERR_MAXTEMP                     _UxGT("エラー:サイコウオンチョウカ")         // "Err: MAXTEMP"
183
-#define MSG_ERR_MINTEMP                     _UxGT("エラー:サイテイオンミマン")          // "Err: MINTEMP"
184
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("エラー:ベッド サイコウオンチョウカ")    // "Err: MAXTEMP BED"
185
-#define MSG_ERR_MINTEMP_BED                 _UxGT("エラー:ベッド サイテイオンミマン")     // "Err: MINTEMP BED"
186
-#define MSG_ERR_Z_HOMING                    _UxGT("サキニ XY ヲフッキサセテクダサイ")     // "Home XY first"
187
-#define MSG_HALTED                          _UxGT("プリンターハテイシシマシタ")         // "PRINTER HALTED"
188
-#define MSG_PLEASE_RESET                    _UxGT("リセットシテクダサイ")              // "Please reset"
189
-#define MSG_SHORT_DAY                       _UxGT("d")                          // One character only
190
-#define MSG_SHORT_HOUR                      _UxGT("h")                          // One character only
191
-#define MSG_SHORT_MINUTE                    _UxGT("m")                          // One character only
192
-#define MSG_HEATING                         _UxGT("カネツチュウ")                   // "Heating..."
193
-#define MSG_BED_HEATING                     _UxGT("ベッド カネツチュウ")              // "Bed Heating..."
194
-#define MSG_DELTA_CALIBRATE                 _UxGT("デルタ コウセイ")                // "Delta Calibration"
195
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Xジク コウセイ")                 // "Calibrate X"
196
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Yジク コウセイ")                 // "Calibrate Y"
197
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Zジク コウセイ")                 // "Calibrate Z"
198
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("チュウシン コウセイ")              // "Calibrate Center"
199
-#define MSG_INFO_MENU                       _UxGT("コノプリンターニツイテ")             // "About Printer"
200
-#define MSG_INFO_PRINTER_MENU               _UxGT("プリンタージョウホウ")              // "Printer Info"
201
-#define MSG_INFO_STATS_MENU                 _UxGT("プリントジョウキョウ")              // "Printer Stats"
202
-#define MSG_INFO_BOARD_MENU                 _UxGT("セイギョケイジョウホウ")            // "Board Info"
203
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("サーミスター")                   // "Thermistors"
204
-#define MSG_INFO_EXTRUDERS                  _UxGT("エクストルーダースウ")             // "Extruders"
205
-#define MSG_INFO_BAUDRATE                   _UxGT("ボーレート")                    // "Baud"
206
-#define MSG_INFO_PROTOCOL                   _UxGT("プロトコル")                    // "Protocol"
207
-#define MSG_CASE_LIGHT                      _UxGT("キョウタイナイショウメイ")       // "Case light"
208
-#define MSG_INFO_PRINT_COUNT                _UxGT("プリントスウ ")                  // "Print Count"
209
-#define MSG_INFO_COMPLETED_PRINTS           _UxGT("カンリョウスウ")                  // "Completed"
210
-#define MSG_INFO_PRINT_TIME                 _UxGT("プリントジカンルイケイ")            // "Total print time"
211
-#define MSG_INFO_PRINT_LONGEST              _UxGT("サイチョウプリントジカン")           // "Longest job time"
212
-#define MSG_INFO_PRINT_FILAMENT             _UxGT("フィラメントシヨウリョウルイケイ")       // "Extruded total"
213
-#define MSG_INFO_MIN_TEMP                   _UxGT("セッテイサイテイオン")              // "Min Temp"
214
-#define MSG_INFO_MAX_TEMP                   _UxGT("セッテイサイコウオン")              // "Max Temp"
215
-#define MSG_INFO_PSU                        _UxGT("デンゲンシュベツ")                // "Power Supply"
216
-#define MSG_DRIVE_STRENGTH                  _UxGT("モータークドウリョク")              // "Drive Strength"
217
-#define MSG_DAC_PERCENT                     _UxGT("DACシュツリョク %")               // "Driver %"
218
-#define MSG_DAC_EEPROM_WRITE                MSG_STORE_EEPROM                    // "DAC EEPROM Write"
219
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("イチジテイシ")
220
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("プリントサイカイ")                // "Resume print"
221
-#define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("コウカンヲカイシシマス")            // "Wait for start"
222
-#define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("シバラクオマチクダサイ")            // "of the filament"
223
-#define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("フィラメントヌキダシチュウ")          // "Wait for"
224
-#define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("シバラクオマチクダサイ")            // "filament unload"
225
-#define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("フィラメントヲソウニュウシ,")         // "Insert filament"
226
-#define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("クリックスルトゾッコウシマス")         // "and press button"
227
-#define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("フィラメントソウテンチュウ")          // "Wait for"
228
-#define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("シバラクオマチクダサイ")            // "filament load"
229
-#define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("プリントヲサイカイシマス")           // "Wait for print"
230
-#define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("シバラクオマチクダサイ")            // "to resume"
41
+  // This is just to show the potential benefit of Unicode.
42
+  // This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF.
231 43
 
232
-#define MSG_EXPECTED_PRINTER                _UxGT("マチガッタプリンター")               // "Wrong printer"
44
+  // 片仮名表示定義
45
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" ジュンビカンリョウ");
46
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("メディアガソウニュウサレマシタ");        // "Card inserted"
47
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("メディアガアリマセン");               // "Card removed"
48
+  PROGMEM Language_Str MSG_RELEASE_MEDIA                   = _UxGT("メディアノトリダシ");
49
+  PROGMEM Language_Str MSG_MEDIA_RELEASED                  = _UxGT("メディアガアリマセン");               // "Card removed"
50
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("エンドストップ");                  // "Endstops" // Max length 8 characters
51
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("メイン");                       // "Main"
52
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("ジドウカイシ");                   // "Autostart"
53
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("モーターデンゲン オフ");            // "Disable steppers"
54
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("デバッグメニュー");                // "Debug Menu"
55
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("プログレスバー テスト");            // "Progress Bar Test"
56
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("ゲンテンフッキ");                  // "Auto home"
57
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Xジク ゲンテンフッキ");             // "Home X"
58
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Yジク ゲンテンフッキ");             // "Home Y"
59
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Zジク ゲンテンフッキ");             // "Home Z"
60
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("ゲンテンフッキチュウ");              // "Homing XYZ"
61
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("レベリングカイシ");                // "Click to Begin"
62
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("ツギノソクテイテンヘ");             // "Next Point"
63
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("レベリングカンリョウ");              // "Leveling Done!"
64
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("キジュンオフセットセッテイ");         // "Set home offsets"
65
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("オフセットガテキヨウサレマシタ");       // "Offsets applied"
66
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("キジュンセット");                 // "Set origin"
67
+  PROGMEM Language_Str MSG_PREHEAT_1                       = PREHEAT_1_LABEL _UxGT(" ヨネツ");       // "Preheat " PREHEAT_1_LABEL
68
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N0;       // "Preheat " PREHEAT_1_LABEL
69
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N1;       // "Preheat " PREHEAT_1_LABEL
70
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N2;       // "Preheat " PREHEAT_1_LABEL
71
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N3;       // "Preheat " PREHEAT_1_LABEL
72
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N4;       // "Preheat " PREHEAT_1_LABEL
73
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N5;       // "Preheat " PREHEAT_1_LABEL
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = PREHEAT_1_LABEL _UxGT(" ヨネツノズル");  // " Nozzle"
75
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N0;  // " Nozzle"
76
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N1;  // " Nozzle"
77
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N2;  // " Nozzle"
78
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N3;  // " Nozzle"
79
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N4;  // " Nozzle"
80
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N5;  // " Nozzle"
81
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = PREHEAT_1_LABEL _UxGT(" スベテヨネツ");  // " All"
82
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ");  // " Bed"
83
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ");  // " conf"
84
+  PROGMEM Language_Str MSG_PREHEAT_2                       = PREHEAT_2_LABEL _UxGT(" ヨネツ");       // "Preheat " PREHEAT_1_LABEL
85
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N0;       // "Preheat " PREHEAT_1_LABEL
86
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N1;       // "Preheat " PREHEAT_1_LABEL
87
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N2;       // "Preheat " PREHEAT_1_LABEL
88
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N3;       // "Preheat " PREHEAT_1_LABEL
89
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N4;       // "Preheat " PREHEAT_1_LABEL
90
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N5;       // "Preheat " PREHEAT_1_LABEL
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = PREHEAT_2_LABEL _UxGT(" ヨネツノズル");  // " Nozzle"
92
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N0;  // " Nozzle"
93
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N1;  // " Nozzle"
94
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N2;  // " Nozzle"
95
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N3;  // " Nozzle"
96
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N4;  // " Nozzle"
97
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N5;  // " Nozzle"
98
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = PREHEAT_2_LABEL _UxGT(" スベテヨネツ");  // " All"
99
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = PREHEAT_2_LABEL _UxGT(" ベッドヨネツ");  // " Bed"
100
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = PREHEAT_2_LABEL _UxGT(" ヨネツセッテイ");  // " conf"
101
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("カネツテイシ");                  // "Cooldown"
102
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("デンゲン オン");                 // "Switch power on"
103
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("デンゲン オフ");                 // "Switch power off"
104
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("オシダシ");                     // "Extrude"
105
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("ヒキコミセッテイ");                // "Retract"
106
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("ジクイドウ");                    // "Move axis"
107
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("ベッドレベリング");                // "Bed leveling"
108
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("ベッドレベリング");                // "Level bed"
233 109
 
234
-#define MSG_CONFIGURATION                   _UxGT("セッテイカンリ")
235
-#define MSG_ADVANCED_SETTINGS               _UxGT("ショウサイセッテイ")
236
-#define MSG_OUTAGE_RECOVERY                 _UxGT("コショカイフク")
237
-#define MSG_INIT_EEPROM                     _UxGT("EEPROMショキカ")
110
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("イドウチュウ");                   // "Moving..."
111
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("XYジク カイホウ");                // "Free XY"
112
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Xジク イドウ");                  // "Move X"
113
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Yジク イドウ");                  // "Move Y"
114
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Zジク イドウ");                  // "Move Z"
115
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("エクストルーダー");                // "Extruder"
116
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("%smm イドウ");                  // "Move 0.025mm"
117
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("0.1mm イドウ");                 // "Move 0.1mm"
118
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("  1mm イドウ");                 // "Move 1mm"
119
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT(" 10mm イドウ");                 // "Move 10mm"
120
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("ソクド");                       // "Speed"
121
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Zオフセット");                   // "Bed Z"
122
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("ノズル");                       // "Nozzle"
123
+  PROGMEM Language_Str MSG_BED                             = _UxGT("ベッド");                       // "Bed"
124
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("ファンソクド");                    // "Fan speed"
125
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("トシュツリョウ");                   // "Flow"
126
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("セイギョ");                      // "Control"
127
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" サイテイ"); // " Min"
128
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" サイコウ"); // " Max"
129
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" ファクター"); // " Fact"
130
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("ジドウオンドセイギョ");               // "Autotemp"
131
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("オン");                         // "On"
132
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("オフ");                         // "Off"
133
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");
134
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
135
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
136
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
137
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
138
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
139
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
140
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");
141
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
142
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
143
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
144
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
145
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
146
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
147
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");
148
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
149
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
150
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
151
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
152
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
153
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
154
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");
155
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
156
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
157
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
158
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
159
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
160
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
161
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("センタク");                     // "Select"
162
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("センタク ") LCD_STR_E0;
163
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("センタク ") LCD_STR_E1;
164
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("センタク ") LCD_STR_E2;
165
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("センタク ") LCD_STR_E3;
166
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("センタク ") LCD_STR_E4;
167
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("センタク ") LCD_STR_E5;
168
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("カソクド mm/s²");               // "Accel"
169
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("ヤクドウ mm/s");                  // "Jerk"
170
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("ジク ヤクドウ mm/s") LCD_STR_A;             // "Va-jerk"
171
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("ジク ヤクドウ mm/s") LCD_STR_B;             // "Vb-jerk"
172
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("ジク ヤクドウ mm/s") LCD_STR_C;             // "Vc-jerk"
173
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("ステップ/mm");
174
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("ステップ/mm");
175
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("ステップ/mm");
176
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("エクストルーダー ヤクド");          // "Ve-jerk"
177
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("サイダイオクリソクド ") LCD_STR_A;  // "Vmax A"
178
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("サイダイオクリソクド ") LCD_STR_A;  // "Vmax B"
179
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("サイダイオクリソクド ") LCD_STR_A;  // "Vmax C"
180
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("サイダイオクリソクド ") LCD_STR_A;  // "Vmax E"
181
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("サイダイオクリソクド ") LCD_STR_E0;  // "Vmax E1"
182
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("サイダイオクリソクド ") LCD_STR_E1;  // "Vmax E2"
183
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("サイダイオクリソクド ") LCD_STR_E2;  // "Vmax E3"
184
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("サイダイオクリソクド ") LCD_STR_E3;  // "Vmax E4"
185
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("サイダイオクリソクド ") LCD_STR_E4;  // "Vmax E5"
186
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("サイダイオクリソクド ") LCD_STR_E5;  // "Vmax E6"
187
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("サイショウオクリソクド");           // "Vmin"
188
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("サイショウイドウソクド");           // "VTrav min"
189
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("カソクド mm/s²");               // "Accel"
190
+  PROGMEM Language_Str MSG_AMAX                            = _UxGT("サイダイカソクド ");              // "Amax "
191
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("ヒキコミカソクド");               // "A-retract"
192
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("イドウカソクド");                // "A-travel"
193
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("オンド");                      // "Temperature"
194
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("ウゴキセッテイ");                // "Motion"
195
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("フィラメント");                   // "Filament"
196
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm³");
197
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("フィラメントチョッケイ");            // "Fil. Dia."
198
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("フィラメントチョッケイ ") LCD_STR_E0;
199
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("フィラメントチョッケイ ") LCD_STR_E1;
200
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("フィラメントチョッケイ ") LCD_STR_E2;
201
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("フィラメントチョッケイ ") LCD_STR_E3;
202
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("フィラメントチョッケイ ") LCD_STR_E4;
203
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("フィラメントチョッケイ ") LCD_STR_E5;
204
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCDコントラスト");               // "LCD contrast"
205
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("EEPROMヘホゾン");               // "Store memory"
206
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("EEPROMカラヨミコミ");               // "Load memory"
207
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("セッテイリセット");               // "Restore failsafe"
208
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("リフレッシュ");                  // "Refresh"
209
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("ジョウホウガメン");               // "Info screen"
210
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("ジュンビセッテイ");               // "Prepare"
211
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("チョウセイ");                    // "Tune"
212
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("イチジテイシ");                  // "Pause print"
213
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("プリントサイカイ");                // "Resume print"
214
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("プリントテイシ");                 // "Stop print"
215
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("メディアカラプリント");            // "Print from SD"
216
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("メディアガアリマセン");               // "Card removed"
217
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("キュウシ");                     // "Sleep..."
218
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("ツヅケルニハクリックシテクダサイ");  // "Wait for user..."
219
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("プリントガチュウシサレマシタ");       // "Print aborted"
220
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("ウゴキマセン");                  // "No move."
221
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("ヒジョウテイシ");                  // "KILLED. "
222
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("テイシシマシタ");                  // "STOPPED. "
223
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("ヒキコミリョウ mm");                // "Retract mm"
224
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("ヒキコミリョウS mm");               // "Swap Re.mm"
225
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("ヒキコミソクド mm/s");             // "Retract  V"
226
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("ノズルタイヒ mm");                // "Hop mm"
227
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("ホショウリョウ mm");               // "UnRet mm"
228
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("ホショウリョウS mm");              // "S UnRet mm"
229
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("ホショウソクド mm/s");            // "UnRet  V"
230
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("ジドウヒキコミ");                 // "AutoRetr."
231
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("フィラメントコウカン");              // "Change filament"
232
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("メディアサイヨミコミ");             // "Init. SD card"
233
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("メディアコウカン");               // "Change SD card"
234
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Zプローブ ベッドガイ");            // "Z probe out. bed"
235
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch ジコシンダン");          // "BLTouch Self-Test"
236
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("BLTouch リセット");             // "Reset BLTouch"
237
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("サキニ %s%s%s ヲフッキサセテクダサイ"); // "Home ... first"
238
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Zオフセット");                   // "Z Offset"
239
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Xジク ビドウ");                  // "Babystep X"
240
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Yジク ビドウ");                  // "Babystep Y"
241
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Zジク ビドウ");                  // "Babystep Z"
242
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("イドウゲンカイケンチキノウ");         // "Endstop abort"
243
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("カネツシッパイ");                 // "Heating failed"
244
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("エラー:ジョウチョウサーミスターキノウ");  // "Err: REDUNDANT TEMP"
245
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("ネツボウソウ");                   // "THERMAL RUNAWAY"
246
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("エラー:サイコウオンチョウカ");         // "Err: MAXTEMP"
247
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("エラー:サイテイオンミマン");          // "Err: MINTEMP"
248
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("エラー:ベッド サイコウオンチョウカ");    // "Err: MAXTEMP BED"
249
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("エラー:ベッド サイテイオンミマン");     // "Err: MINTEMP BED"
250
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("サキニ XY ヲフッキサセテクダサイ");     // "Home XY first"
251
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("プリンターハテイシシマシタ");         // "PRINTER HALTED"
252
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("リセットシテクダサイ");              // "Please reset"
253
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d");                          // One character only
254
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h");                          // One character only
255
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m");                          // One character only
256
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("カネツチュウ");                   // "Heating..."
257
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("ベッド カネツチュウ");              // "Bed Heating..."
258
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("デルタ コウセイ");                // "Delta Calibration"
259
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Xジク コウセイ");                 // "Calibrate X"
260
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Yジク コウセイ");                 // "Calibrate Y"
261
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Zジク コウセイ");                 // "Calibrate Z"
262
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("チュウシン コウセイ");              // "Calibrate Center"
263
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("コノプリンターニツイテ");             // "About Printer"
264
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("プリンタージョウホウ");              // "Printer Info"
265
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("プリントジョウキョウ");              // "Printer Stats"
266
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("セイギョケイジョウホウ");            // "Board Info"
267
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("サーミスター");                   // "Thermistors"
268
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("エクストルーダースウ");             // "Extruders"
269
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("ボーレート");                    // "Baud"
270
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("プロトコル");                    // "Protocol"
271
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("キョウタイナイショウメイ");       // "Case light"
272
+  PROGMEM Language_Str MSG_INFO_PRINT_COUNT                = _UxGT("プリントスウ ");                  // "Print Count"
273
+  PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS           = _UxGT("カンリョウスウ");                  // "Completed"
274
+  PROGMEM Language_Str MSG_INFO_PRINT_TIME                 = _UxGT("プリントジカンルイケイ");            // "Total print time"
275
+  PROGMEM Language_Str MSG_INFO_PRINT_LONGEST              = _UxGT("サイチョウプリントジカン");           // "Longest job time"
276
+  PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT             = _UxGT("フィラメントシヨウリョウルイケイ");       // "Extruded total"
277
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("セッテイサイテイオン");              // "Min Temp"
278
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("セッテイサイコウオン");              // "Max Temp"
279
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("デンゲンシュベツ");                // "Power Supply"
280
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("モータークドウリョク");              // "Drive Strength"
281
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("DACシュツリョク %");               // "Driver %"
282
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("EEPROMヘホゾン");               // "Store memory"
283
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("イチジテイシ");
284
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("プリントサイカイ");                // "Resume print"
285
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT            = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ"));   // "Wait for start of the filament"
286
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD          = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ"));   // "Wait for filament unload"
287
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT          = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス"));   // "Insert filament and press button"
288
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD            = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ"));   // "Wait for filament load"
289
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME          = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ"));   // "Wait for print to resume"
238 290
 
239
-#define MSG_BUTTON_NEXT                     _UxGT("ツギヘ")
240
-#define MSG_BUTTON_INIT                     _UxGT("ショキカ")
241
-#define MSG_BUTTON_STOP                     _UxGT("ストップ")
242
-#define MSG_BUTTON_PRINT                    _UxGT("プリント")
243
-#define MSG_BUTTON_RESET                    _UxGT("リセット")
244
-#define MSG_BUTTON_CANCEL                   _UxGT("キャンセル")
245
-#define MSG_BUTTON_DONE                     _UxGT("カンリョウ")
291
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("マチガッタプリンター");               // "Wrong printer"
246 292
 
247
-#define MSG_YES                             _UxGT("ハイ")
248
-#define MSG_NO                              _UxGT("イイエ")
249
-#define MSG_BACK                            _UxGT("モドリ")
250
-#define MSG_VELOCITY                        _UxGT("ソクド")
251
-#define MSG_STEPS_PER_MM                    _UxGT("ステップ/mm")
252
-#define MSG_USER_MENU                       _UxGT("ユーザーコマンド")
253
-#define MSG_PRINT_PAUSED                    _UxGT("プリントガイチジテイシサレマシタ")
254
-#define MSG_PRINTING                        _UxGT("プリントチュウ...")
293
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("セッテイカンリ");
294
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("ショウサイセッテイ");
295
+  PROGMEM Language_Str MSG_OUTAGE_RECOVERY                 = _UxGT("コショカイフク");
296
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("EEPROMショキカ");
297
+
298
+  PROGMEM Language_Str MSG_BUTTON_NEXT                     = _UxGT("ツギヘ");
299
+  PROGMEM Language_Str MSG_BUTTON_INIT                     = _UxGT("ショキカ");
300
+  PROGMEM Language_Str MSG_BUTTON_STOP                     = _UxGT("ストップ");
301
+  PROGMEM Language_Str MSG_BUTTON_PRINT                    = _UxGT("プリント");
302
+  PROGMEM Language_Str MSG_BUTTON_RESET                    = _UxGT("リセット");
303
+  PROGMEM Language_Str MSG_BUTTON_CANCEL                   = _UxGT("キャンセル");
304
+  PROGMEM Language_Str MSG_BUTTON_DONE                     = _UxGT("カンリョウ");
305
+
306
+  PROGMEM Language_Str MSG_YES                             = _UxGT("ハイ");
307
+  PROGMEM Language_Str MSG_NO                              = _UxGT("イイエ");
308
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("モドリ");
309
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("ソクド");
310
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("ステップ/mm");
311
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("ユーザーコマンド");
312
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("プリントガイチジテイシサレマシタ");
313
+  PROGMEM Language_Str MSG_PRINTING                        = _UxGT("プリントチュウ...");
314
+}

+ 101
- 381
Marlin/src/lcd/language/language_ko_KR.h Zobrazit soubor

@@ -28,386 +28,106 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+namespace Language_ko_KR {
32
+  using namespace Language_en; // Inherit undefined strings from English
31 33
 
32
-#define CHARSIZE 1
34
+  constexpr uint8_t    CHARSIZE                            = 1;
35
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Korean");
33 36
 
34
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" 준비.")
35
-#define MSG_BACK                            _UxGT("뒤로")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("카드 삽입됨")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("카드 제거됨")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("엔드스탑")
39
-#define MSG_LCD_SOFT_ENDSTOPS               _UxGT("소프트 엔드스탑")
40
-#define MSG_MAIN                            _UxGT("뒤로")
41
-#define MSG_ADVANCED_SETTINGS               _UxGT("고급 설정")
42
-#define MSG_CONFIGURATION                   _UxGT("설정")
43
-#define MSG_AUTOSTART                       _UxGT("자동 시작")
44
-#define MSG_DISABLE_STEPPERS                _UxGT("모터 정지")
45
-#define MSG_DEBUG_MENU                      _UxGT("디버깅 메뉴")
46
-#define MSG_PROGRESS_BAR_TEST               _UxGT("프로그레스바 테스트")
47
-#define MSG_AUTO_HOME                       _UxGT("오토홈")
48
-#define MSG_AUTO_HOME_X                     _UxGT("X 홈으로")
49
-#define MSG_AUTO_HOME_Y                     _UxGT("Y 홈으로")
50
-#define MSG_AUTO_HOME_Z                     _UxGT("Z 홈으로")
51
-#define MSG_LEVEL_BED_HOMING                _UxGT("XYZ 홈으로")
52
-#define MSG_LEVEL_BED_WAITING               _UxGT("누르면 시작합니다")
53
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("다음 Point")
54
-#define MSG_LEVEL_BED_DONE                  _UxGT("레벨링 완료!")
55
-//#define MSG_Z_FADE_HEIGHT                 _UxGT("Fade Height")
56
-//#define MSG_SET_HOME_OFFSETS              _UxGT("Set home offsets")
57
-//#define MSG_HOME_OFFSETS_APPLIED          _UxGT("Offsets applied")
58
-//#define MSG_SET_ORIGIN                    _UxGT("Set origin")
59
-#define MSG_PREHEAT_1                       _UxGT("예열하기 - " PREHEAT_1_LABEL)
60
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
61
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" 모두")
62
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" 노즐만")
63
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" 베드만")
64
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" conf")
65
-#define MSG_PREHEAT_2                       _UxGT("예열하기 - " PREHEAT_2_LABEL)
66
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
67
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" 모두")
68
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" 노즐만")
69
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" 베드만")
70
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" conf")
71
-#define MSG_PREHEAT_CUSTOM                  _UxGT("Custom 예열")
72
-#define MSG_COOLDOWN                        _UxGT("식히기")
73
-#define MSG_SWITCH_PS_ON                    _UxGT("스위치 전원 켜기")
74
-#define MSG_SWITCH_PS_OFF                   _UxGT("스위치 전원 끄기")
75
-#define MSG_EXTRUDE                         _UxGT("밀어내기")
76
-#define MSG_RETRACT                         _UxGT("당기기")
77
-#define MSG_MOVE_AXIS                       _UxGT("축 이동")
78
-#define MSG_BED_LEVELING                    _UxGT("베드 레벨링")
79
-//#define MSG_LEVEL_BED                     _UxGT("Level bed")
80
-//#define MSG_LEVEL_CORNERS                 _UxGT("Level corners")
81
-//#define MSG_NEXT_CORNER                   _UxGT("Next corner")
82
-//#define MSG_EDIT_MESH                     _UxGT("Edit Mesh")
83
-//#define MSG_EDITING_STOPPED               _UxGT("Mesh Editing Stopped")
84
-//#define MSG_USER_MENU                     _UxGT("Custom User Commands")
85
-//#define MSG_IDEX_MENU                     _UxGT("IDEX Mode")
86
-//#define MSG_IDEX_MODE_AUTOPARK            _UxGT("Auto-Park")
87
-//#define MSG_IDEX_MODE_DUPLICATE           _UxGT("Duplication")
88
-#define MSG_IDEX_MODE_MIRRORED_COPY         _UxGT("미러 사본")
89
-//#define MSG_IDEX_MODE_FULL_CTRL           _UxGT("Full control")
90
-//#define MSG_X_OFFSET                      _UxGT("2nd nozzle X")
91
-//#define MSG_Y_OFFSET                      _UxGT("2nd nozzle Y")
92
-//#define MSG_Z_OFFSET                      _UxGT("2nd nozzle Z")
93
-#define MSG_UBL_DOING_G29                   _UxGT("오토레벨링 하기")
94
-//#define MSG_UBL_TOOLS                     _UxGT("UBL Tools")
95
-//#define MSG_UBL_LEVEL_BED                 _UxGT("Unified Bed Leveling")
96
-//#define MSG_UBL_MANUAL_MESH               _UxGT("Manually Build Mesh")
97
-//#define MSG_UBL_BC_INSERT                 _UxGT("Place shim & measure")
98
-//#define MSG_UBL_BC_INSERT2                _UxGT("Measure")
99
-//#define MSG_UBL_BC_REMOVE                 _UxGT("Remove & measure bed")
100
-//#define MSG_UBL_MOVING_TO_NEXT            _UxGT("Moving to next")
101
-//#define MSG_UBL_ACTIVATE_MESH             _UxGT("Activate UBL")
102
-//#define MSG_UBL_DEACTIVATE_MESH           _UxGT("Deactivate UBL")
103
-//#define MSG_UBL_SET_TEMP_BED              _UxGT("Bed Temp")
104
-//#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
105
-//#define MSG_UBL_SET_TEMP_HOTEND           _UxGT("Hotend Temp")
106
-//#define MSG_UBL_HOTEND_TEMP_CUSTOM        MSG_UBL_SET_TEMP_HOTEND
107
-//#define MSG_UBL_MESH_EDIT                 _UxGT("Mesh Edit")
108
-//#define MSG_UBL_EDIT_CUSTOM_MESH          _UxGT("Edit Custom Mesh")
109
-//#define MSG_UBL_FINE_TUNE_MESH            _UxGT("Fine Tuning Mesh")
110
-//#define MSG_UBL_DONE_EDITING_MESH         _UxGT("Done Editing Mesh")
111
-//#define MSG_UBL_BUILD_CUSTOM_MESH         _UxGT("Build Custom Mesh")
112
-//#define MSG_UBL_BUILD_MESH_MENU           _UxGT("Build Mesh")
113
-//#define MSG_UBL_BUILD_MESH_M1             _UxGT("Build Mesh (" PREHEAT_1_LABEL ")")
114
-//#define MSG_UBL_BUILD_MESH_M2             _UxGT("Build Mesh (" PREHEAT_2_LABEL ")")
115
-//#define MSG_UBL_BUILD_COLD_MESH           _UxGT("Build Cold Mesh")
116
-//#define MSG_UBL_MESH_HEIGHT_ADJUST        _UxGT("Adjust Mesh Height")
117
-//#define MSG_UBL_MESH_HEIGHT_AMOUNT        _UxGT("Height Amount")
118
-//#define MSG_UBL_VALIDATE_MESH_MENU        _UxGT("Validate Mesh")
119
-//#define MSG_UBL_VALIDATE_MESH_M1          _UxGT("Validate " PREHEAT_1_LABEL " Mesh")
120
-//#define MSG_UBL_VALIDATE_MESH_M2          _UxGT("Validate Mesh (" PREHEAT_2_LABEL ")")
121
-//#define MSG_UBL_VALIDATE_CUSTOM_MESH      _UxGT("Validate Custom Mesh")
122
-//#define MSG_UBL_CONTINUE_MESH             _UxGT("Continue Bed Mesh")
123
-//#define MSG_UBL_MESH_LEVELING             _UxGT("Mesh Leveling")
124
-//#define MSG_UBL_3POINT_MESH_LEVELING      _UxGT("3-Point Leveling")
125
-//#define MSG_UBL_GRID_MESH_LEVELING        _UxGT("Grid Mesh Leveling")
126
-//#define MSG_UBL_MESH_LEVEL                _UxGT("Level Mesh")
127
-//#define MSG_UBL_SIDE_POINTS               _UxGT("Side Points")
128
-//#define MSG_UBL_MAP_TYPE                  _UxGT("Map Type")
129
-//#define MSG_UBL_OUTPUT_MAP                _UxGT("Output Mesh Map")
130
-//#define MSG_UBL_OUTPUT_MAP_HOST           _UxGT("Output for Host")
131
-//#define MSG_UBL_OUTPUT_MAP_CSV            _UxGT("Output for CSV")
132
-//#define MSG_UBL_OUTPUT_MAP_BACKUP         _UxGT("Off Printer Backup")
133
-//#define MSG_UBL_INFO_UBL                  _UxGT("Output UBL Info")
134
-//#define MSG_UBL_FILLIN_AMOUNT             _UxGT("Fill-in Amount")
135
-//#define MSG_UBL_MANUAL_FILLIN             _UxGT("Manual Fill-in")
136
-//#define MSG_UBL_SMART_FILLIN              _UxGT("Smart Fill-in")
137
-//#define MSG_UBL_FILLIN_MESH               _UxGT("Fill-in Mesh")
138
-//#define MSG_UBL_INVALIDATE_ALL            _UxGT("Invalidate All")
139
-//#define MSG_UBL_INVALIDATE_CLOSEST        _UxGT("Invalidate Closest")
140
-//#define MSG_UBL_FINE_TUNE_ALL             _UxGT("Fine Tune All")
141
-//#define MSG_UBL_FINE_TUNE_CLOSEST         _UxGT("Fine Tune Closest")
142
-//#define MSG_UBL_STORAGE_MESH_MENU         _UxGT("Mesh Storage")
143
-//#define MSG_UBL_STORAGE_SLOT              _UxGT("Memory Slot")
144
-//#define MSG_UBL_LOAD_MESH                 _UxGT("Load Bed Mesh")
145
-//#define MSG_UBL_SAVE_MESH                 _UxGT("Save Bed Mesh")
146
-//#define MSG_MESH_LOADED                   _UxGT("Mesh %i loaded")
147
-//#define MSG_MESH_SAVED                    _UxGT("Mesh %i saved")
148
-//#define MSG_UBL_NO_STORAGE                _UxGT("No storage")
149
-//#define MSG_UBL_SAVE_ERROR                _UxGT("Err: UBL Save")
150
-//#define MSG_UBL_RESTORE_ERROR             _UxGT("Err: UBL Restore")
151
-//#define MSG_UBL_Z_OFFSET_STOPPED          _UxGT("Z-Offset Stopped")
152
-//#define MSG_UBL_STEP_BY_STEP_MENU         _UxGT("Step-By-Step UBL")
153
-
154
-//#define MSG_LED_CONTROL                   _UxGT("LED Control")
155
-//#define MSG_LEDS                          _UxGT("Lights")
156
-//#define MSG_LED_PRESETS                   _UxGT("Light Presets")
157
-//#define MSG_SET_LEDS_RED                  _UxGT("Red")
158
-//#define MSG_SET_LEDS_ORANGE               _UxGT("Orange")
159
-//#define MSG_SET_LEDS_YELLOW               _UxGT("Yellow")
160
-//#define MSG_SET_LEDS_GREEN                _UxGT("Green")
161
-//#define MSG_SET_LEDS_BLUE                 _UxGT("Blue")
162
-//#define MSG_SET_LEDS_INDIGO               _UxGT("Indigo")
163
-//#define MSG_SET_LEDS_VIOLET               _UxGT("Violet")
164
-//#define MSG_SET_LEDS_WHITE                _UxGT("White")
165
-//#define MSG_SET_LEDS_DEFAULT              _UxGT("Default")
166
-//#define MSG_CUSTOM_LEDS                   _UxGT("Custom Lights")
167
-//#define MSG_INTENSITY_R                   _UxGT("Red Intensity")
168
-//#define MSG_INTENSITY_G                   _UxGT("Green Intensity")
169
-//#define MSG_INTENSITY_B                   _UxGT("Blue Intensity")
170
-//#define MSG_INTENSITY_W                   _UxGT("White Intensity")
171
-//#define MSG_LED_BRIGHTNESS                _UxGT("Brightness")
172
-
173
-//#define MSG_MOVING                        _UxGT("Moving...")
174
-//#define MSG_FREE_XY                       _UxGT("Free XY")
175
-//#define MSG_MOVE_X                        _UxGT("Move X")
176
-//#define MSG_MOVE_Y                        _UxGT("Move Y")
177
-//#define MSG_MOVE_Z                        _UxGT("Move Z")
178
-//#define MSG_MOVE_E                        _UxGT("Extruder")
179
-//#define MSG_MOVE_Z_DIST                   _UxGT("Move %smm")
180
-//#define MSG_MOVE_01MM                     _UxGT("Move 0.1mm")
181
-//#define MSG_MOVE_1MM                      _UxGT("Move 1mm")
182
-//#define MSG_MOVE_10MM                     _UxGT("Move 10mm")
183
-//#define MSG_SPEED                         _UxGT("Speed")
184
-//#define MSG_BED_Z                         _UxGT("Bed Z")
185
-#define MSG_NOZZLE                          _UxGT("노즐")
186
-#define MSG_BED                             _UxGT("베드")
187
-#define MSG_FAN_SPEED                       _UxGT("펜 속도")
188
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("엑스트라 펜 속도")
189
-//#define MSG_FLOW                          _UxGT("Flow")
190
-//#define MSG_CONTROL                       _UxGT("Control")
191
-//#define MSG_MIN                           _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
192
-//#define MSG_MAX                           _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
193
-//#define MSG_FACTOR                        _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
194
-//#define MSG_AUTOTEMP                      _UxGT("Autotemp")
195
-//#define MSG_LCD_ON                        _UxGT("On")
196
-//#define MSG_LCD_OFF                       _UxGT("Off")
197
-//#define MSG_PID_P                         _UxGT("PID-P")
198
-//#define MSG_PID_I                         _UxGT("PID-I")
199
-//#define MSG_PID_D                         _UxGT("PID-D")
200
-//#define MSG_PID_C                         _UxGT("PID-C")
201
-//#define MSG_SELECT                        _UxGT("Select")
202
-//#define MSG_ACC                           _UxGT("Accel")
203
-//#define MSG_JERK                          _UxGT("Jerk")
204
-#if IS_KINEMATIC
205
-  //#define MSG_VA_JERK                     _UxGT("Va-jerk")
206
-  //#define MSG_VB_JERK                     _UxGT("Vb-jerk")
207
-  //#define MSG_VC_JERK                     _UxGT("Vc-jerk")
208
-#else
209
-  //#define MSG_VA_JERK                     _UxGT("Vx-jerk")
210
-  //#define MSG_VB_JERK                     _UxGT("Vy-jerk")
211
-  //#define MSG_VC_JERK                     _UxGT("Vz-jerk")
212
-#endif
213
-//#define MSG_VE_JERK                       _UxGT("Ve-jerk")
214
-//#define MSG_JUNCTION_DEVIATION            _UxGT("Junction Dev")
215
-//#define MSG_VELOCITY                      _UxGT("Velocity")
216
-//#define MSG_VMAX                          _UxGT("Vmax ")
217
-//#define MSG_VMIN                          _UxGT("Vmin")
218
-//#define MSG_VTRAV_MIN                     _UxGT("VTrav min")
219
-//#define MSG_ACCELERATION                  _UxGT("Acceleration")
220
-//#define MSG_AMAX                          _UxGT("Amax ")
221
-//#define MSG_A_RETRACT                     _UxGT("A-retract")
222
-//#define MSG_A_TRAVEL                      _UxGT("A-travel")
223
-//#define MSG_STEPS_PER_MM                  _UxGT("Steps/mm")
224
-#if IS_KINEMATIC
225
-  //#define MSG_ASTEPS                      _UxGT("Asteps/mm")
226
-  //#define MSG_BSTEPS                      _UxGT("Bsteps/mm")
227
-  //#define MSG_CSTEPS                      _UxGT("Csteps/mm")
228
-#else
229
-  //#define MSG_ASTEPS                      _UxGT("Xsteps/mm")
230
-  //#define MSG_BSTEPS                      _UxGT("Ysteps/mm")
231
-  //#define MSG_CSTEPS                      _UxGT("Zsteps/mm")
232
-#endif
233
-//#define MSG_ESTEPS                        _UxGT("Esteps/mm")
234
-//#define MSG_E0_STEPS                      _UxGT("E1steps/mm")
235
-//#define MSG_E1_STEPS                      _UxGT("E2steps/mm")
236
-//#define MSG_E2_STEPS                      _UxGT("E3steps/mm")
237
-//#define MSG_E3_STEPS                      _UxGT("E4steps/mm")
238
-//#define MSG_E4_STEPS                      _UxGT("E5steps/mm")
239
-//#define MSG_E5_STEPS                      _UxGT("E6steps/mm")
240
-#define MSG_TEMPERATURE                     _UxGT("온도")
241
-#define MSG_MOTION                          _UxGT("동작")
242
-//#define MSG_FILAMENT                      _UxGT("Filament")
243
-//#define MSG_VOLUMETRIC_ENABLED            _UxGT("E in mm3")
244
-//#define MSG_FILAMENT_DIAM                 _UxGT("Fil. Dia.")
245
-//#define MSG_FILAMENT_UNLOAD               _UxGT("Unload mm")
246
-//#define MSG_FILAMENT_LOAD                 _UxGT("Load mm")
247
-//#define MSG_ADVANCE_K                     _UxGT("Advance K")
248
-//#define MSG_CONTRAST                      _UxGT("LCD contrast")
249
-#define MSG_STORE_EEPROM                    _UxGT("설정 저장하기")
250
-#define MSG_LOAD_EEPROM                     _UxGT("설정 읽어오기")
251
-#define MSG_RESTORE_FAILSAFE                _UxGT("설정 되돌리기")
252
-#define MSG_INIT_EEPROM                     _UxGT("EEPROM 초기화")
253
-#define MSG_REFRESH                         _UxGT("새로고침")
254
-#define MSG_WATCH                           _UxGT("처음으로")
255
-#define MSG_PREPARE                         _UxGT("준비하기")
256
-//#define MSG_TUNE                          _UxGT("Tune")
257
-#define MSG_PAUSE_PRINT                     _UxGT("일시정지")
258
-#define MSG_RESUME_PRINT                    _UxGT("재시작")
259
-#define MSG_STOP_PRINT                      _UxGT("출력중지")
260
-//#define MSG_OUTAGE_RECOVERY               _UxGT("Outage Recovery")
261
-#define MSG_MEDIA_MENU                      _UxGT("SD 카드출력")
262
-#define MSG_NO_MEDIA                        _UxGT("SD 카드없음")
263
-#define MSG_DWELL                           _UxGT("슬립모드...")
264
-//#define MSG_USERWAIT                      _UxGT("Click to resume...")
265
-#define MSG_PRINT_PAUSED                    _UxGT("일시 정지됨")
266
-#define MSG_PRINTING                        _UxGT("출력중...")
267
-#define MSG_PRINT_ABORTED                   _UxGT("취소됨")
268
-//#define MSG_NO_MOVE                       _UxGT("No move.")
269
-#define MSG_KILLED                          _UxGT("죽음. ")
270
-#define MSG_STOPPED                         _UxGT("멈춤. ")
271
-//#define MSG_CONTROL_RETRACT               _UxGT("Retract mm")
272
-//#define MSG_CONTROL_RETRACT_SWAP          _UxGT("Swap Re.mm")
273
-//#define MSG_CONTROL_RETRACTF              _UxGT("Retract  V")
274
-//#define MSG_CONTROL_RETRACT_ZHOP          _UxGT("Hop mm")
275
-//#define MSG_CONTROL_RETRACT_RECOVER       _UxGT("UnRet mm")
276
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAP  _UxGT("S UnRet mm")
277
-//#define MSG_CONTROL_RETRACT_RECOVERF      _UxGT("UnRet V")
278
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
279
-//#define MSG_AUTORETRACT                   _UxGT("AutoRetr.")
280
-//#define MSG_FILAMENTCHANGE                _UxGT("Change filament")
281
-//#define MSG_FILAMENTLOAD                  _UxGT("Load filament")
282
-//#define MSG_FILAMENTUNLOAD                _UxGT("Unload filament")
283
-//#define MSG_FILAMENTUNLOAD_ALL            _UxGT("Unload All")
284
-//#define MSG_INIT_MEDIA                    _UxGT("Init. SD card")
285
-//#define MSG_CHANGE_MEDIA                  _UxGT("Change SD card")
286
-//#define MSG_ZPROBE_OUT                    _UxGT("Z Probe past bed")
287
-//#define MSG_SKEW_FACTOR                   _UxGT("Skew Factor")
288
-//#define MSG_BLTOUCH                       _UxGT("BLTouch")
289
-//#define MSG_BLTOUCH_SELFTEST              _UxGT("BLTouch Self-Test")
290
-//#define MSG_BLTOUCH_RESET                 _UxGT("Reset BLTouch")
291
-//#define MSG_BLTOUCH_DEPLOY                _UxGT("Deploy BLTouch")
292
-//#define MSG_BLTOUCH_STOW                  _UxGT("Stow BLTouch")
293
-//#define MSG_MANUAL_DEPLOY                 _UxGT("Deploy Z-Probe")
294
-//#define MSG_MANUAL_STOW                   _UxGT("Stow Z-Probe")
295
-//#define MSG_HOME_FIRST                    _UxGT("Home %s%s%s first")
296
-//#define MSG_ZPROBE_ZOFFSET                _UxGT("Probe Z Offset")
297
-//#define MSG_BABYSTEP_X                    _UxGT("Babystep X")
298
-//#define MSG_BABYSTEP_Y                    _UxGT("Babystep Y")
299
-//#define MSG_BABYSTEP_Z                    _UxGT("Babystep Z")
300
-//#define MSG_ENDSTOP_ABORT                 _UxGT("Endstop abort")
301
-//#define MSG_HEATING_FAILED_LCD            _UxGT("Heating failed")
302
-//#define MSG_HEATING_FAILED_LCD_BED        _UxGT("Bed heating failed")
303
-//#define MSG_ERR_REDUNDANT_TEMP            _UxGT("Err: REDUNDANT TEMP")
304
-//#define MSG_THERMAL_RUNAWAY               _UxGT("THERMAL RUNAWAY")
305
-//#define MSG_THERMAL_RUNAWAY_BED           _UxGT("BED THERMAL RUNAWAY")
306
-//#define MSG_ERR_MAXTEMP                   _UxGT("Err: MAXTEMP")
307
-//#define MSG_ERR_MINTEMP                   _UxGT("Err: MINTEMP")
308
-//#define MSG_ERR_MAXTEMP_BED               _UxGT("Err: MAXTEMP BED")
309
-//#define MSG_ERR_MINTEMP_BED               _UxGT("Err: MINTEMP BED")
310
-//#define MSG_ERR_Z_HOMING                  _UxGT("Home XY first")
311
-//#define MSG_HALTED                        _UxGT("PRINTER HALTED")
312
-//#define MSG_PLEASE_RESET                  _UxGT("Please reset")
313
-//#define MSG_SHORT_DAY                     _UxGT("d") // One character only
314
-//#define MSG_SHORT_HOUR                    _UxGT("h") // One character only
315
-//#define MSG_SHORT_MINUTE                  _UxGT("m") // One character only
316
-//#define MSG_HEATING                       _UxGT("Heating...")
317
-//#define MSG_COOLING                       _UxGT("Cooling...")
318
-//#define MSG_BED_HEATING                   _UxGT("Bed heating...")
319
-//#define MSG_BED_COOLING                   _UxGT("Bed cooling...")
320
-//#define MSG_DELTA_CALIBRATE               _UxGT("Delta Calibration")
321
-//#define MSG_DELTA_CALIBRATE_X             _UxGT("Calibrate X")
322
-//#define MSG_DELTA_CALIBRATE_Y             _UxGT("Calibrate Y")
323
-//#define MSG_DELTA_CALIBRATE_Z             _UxGT("Calibrate Z")
324
-//#define MSG_DELTA_CALIBRATE_CENTER        _UxGT("Calibrate Center")
325
-//#define MSG_DELTA_SETTINGS                _UxGT("Delta Settings")
326
-//#define MSG_DELTA_AUTO_CALIBRATE          _UxGT("Auto Calibration")
327
-//#define MSG_DELTA_HEIGHT_CALIBRATE        _UxGT("Set Delta Height")
328
-//#define MSG_DELTA_Z_OFFSET_CALIBRATE      _UxGT("Probe Z-offset")
329
-//#define MSG_DELTA_DIAG_ROD                _UxGT("Diag Rod")
330
-//#define MSG_DELTA_HEIGHT                  _UxGT("Height")
331
-//#define MSG_DELTA_RADIUS                  _UxGT("Radius")
332
-//#define MSG_INFO_MENU                     _UxGT("About Printer")
333
-//#define MSG_INFO_PRINTER_MENU             _UxGT("Printer Info")
334
-//#define MSG_3POINT_LEVELING               _UxGT("3-Point Leveling")
335
-//#define MSG_LINEAR_LEVELING               _UxGT("Linear Leveling")
336
-//#define MSG_BILINEAR_LEVELING             _UxGT("Bilinear Leveling")
337
-//#define MSG_UBL_LEVELING                  _UxGT("Unified Bed Leveling")
338
-//#define MSG_MESH_LEVELING                 _UxGT("Mesh Leveling")
339
-//#define MSG_INFO_STATS_MENU               _UxGT("Printer Stats")
340
-//#define MSG_INFO_BOARD_MENU               _UxGT("Board Info")
341
-//#define MSG_INFO_THERMISTOR_MENU          _UxGT("Thermistors")
342
-//#define MSG_INFO_EXTRUDERS                _UxGT("Extruders")
343
-//#define MSG_INFO_BAUDRATE                 _UxGT("Baud")
344
-//#define MSG_INFO_PROTOCOL                 _UxGT("Protocol")
345
-//#define MSG_CASE_LIGHT                    _UxGT("Case light")
346
-//#define MSG_CASE_LIGHT_BRIGHTNESS         _UxGT("Light Brightness")
347
-
348
-#define MSG_EXPECTED_PRINTER                _UxGT("잘못된 프린터")
349
-
350
-#if LCD_WIDTH >= 20
351
-  //#define MSG_INFO_PRINT_COUNT            _UxGT("Print Count")
352
-  //#define MSG_INFO_COMPLETED_PRINTS       _UxGT("Completed")
353
-  //#define MSG_INFO_PRINT_TIME             _UxGT("Total print time")
354
-  //#define MSG_INFO_PRINT_LONGEST          _UxGT("Longest job time")
355
-  //#define MSG_INFO_PRINT_FILAMENT         _UxGT("Extruded total")
356
-#else
357
-  //#define MSG_INFO_PRINT_COUNT            _UxGT("Prints")
358
-  //#define MSG_INFO_COMPLETED_PRINTS       _UxGT("Completed")
359
-  //#define MSG_INFO_PRINT_TIME             _UxGT("Total")
360
-  //#define MSG_INFO_PRINT_LONGEST          _UxGT("Longest")
361
-  //#define MSG_INFO_PRINT_FILAMENT         _UxGT("Extruded")
362
-#endif
363
-//#define MSG_INFO_MIN_TEMP                 _UxGT("Min Temp")
364
-//#define MSG_INFO_MAX_TEMP                 _UxGT("Max Temp")
365
-//#define MSG_INFO_PSU                      _UxGT("PSU")
366
-//#define MSG_DRIVE_STRENGTH                _UxGT("Drive Strength")
367
-//#define MSG_DAC_PERCENT                   _UxGT("Driver %")
368
-//#define MSG_DAC_EEPROM_WRITE              _UxGT("DAC EEPROM Write")
369
-//#define MSG_FILAMENT_CHANGE_HEADER_PAUSE  _UxGT("PRINT PAUSED")
370
-//#define MSG_FILAMENT_CHANGE_HEADER_LOAD   _UxGT("LOAD FILAMENT")
371
-//#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("UNLOAD FILAMENT")
372
-//#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
373
-//#define MSG_FILAMENT_CHANGE_OPTION_PURGE  _UxGT("Purge more")
374
-//#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continue")
375
-//#define MSG_FILAMENT_CHANGE_NOZZLE        _UxGT("  Nozzle: ")
376
-//#define MSG_RUNOUT_SENSOR                 _UxGT("Runout Sensor")
377
-//#define MSG_ERR_HOMING_FAILED             _UxGT("Homing failed")
378
-//#define MSG_ERR_PROBING_FAILED            _UxGT("Probing failed")
379
-//#define MSG_M600_TOO_COLD                 _UxGT("M600: Too cold")
380
-
381
-//
382
-// Filament Change screens show up to 3 lines on a 4-line display
383
-//                        ...or up to 2 lines on a 3-line display
384
-//
385
-#if LCD_HEIGHT >= 4
386
-  //#define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Wait for start")
387
-  //#define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("of the filament")
388
-  //#define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("change")
389
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Wait for")
390
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("filament unload")
391
-  //#define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Insert filament")
392
-  //#define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("and press button")
393
-  //#define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("to continue...")
394
-  //#define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Press button to")
395
-  //#define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("heat nozzle.")
396
-  //#define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Heating nozzle")
397
-  //#define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Please wait...")
398
-  //#define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Wait for")
399
-  //#define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("filament load")
400
-  //#define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Wait for")
401
-  //#define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("filament purge")
402
-  //#define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Wait for print")
403
-  //#define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("to resume")
404
-#else // LCD_HEIGHT < 4
405
-  //#define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Please wait...")
406
-  //#define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Ejecting...")
407
-  //#define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Insert and Click")
408
-  //#define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Click to heat")
409
-  //#define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Heating...")
410
-  //#define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Loading...")
411
-  //#define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Purging...")
412
-  //#define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Resuming...")
413
-#endif // LCD_HEIGHT < 4
37
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" 준비.");
38
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("뒤로");
39
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("카드 삽입됨");
40
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("카드 제거됨");
41
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("엔드스탑");
42
+  PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS               = _UxGT("소프트 엔드스탑");
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("뒤로");
44
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("고급 설정");
45
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("설정");
46
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("자동 시작");
47
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("모터 정지");
48
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("디버깅 메뉴");
49
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("프로그레스바 테스트");
50
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("오토홈");
51
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("X 홈으로");
52
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Y 홈으로");
53
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Z 홈으로");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("XYZ 홈으로");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("누르면 시작합니다");
56
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("다음 Point");
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_H0                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N0;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N1;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N2;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N3;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N4;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N5;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("예열하기 - ") PREHEAT_2_LABEL;
73
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N0;
74
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N1;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N2;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N3;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N4;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N5;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐");
80
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N0;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N1;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N2;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N3;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N4;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N5;
86
+  PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Custom 예열");
87
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("식히기");
88
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("스위치 전원 켜기");
89
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("스위치 전원 끄기");
90
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("밀어내기");
91
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("당기기");
92
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("축 이동");
93
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("베드 레벨링");
94
+  PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY         = _UxGT("미러 사본");
95
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("오토레벨링 하기");
96
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("노즐");
97
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("노즐 ") LCD_STR_N0;
98
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("노즐 ") LCD_STR_N1;
99
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("노즐 ") LCD_STR_N2;
100
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("노즐 ") LCD_STR_N3;
101
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("노즐 ") LCD_STR_N4;
102
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("노즐 ") LCD_STR_N5;
103
+  PROGMEM Language_Str MSG_BED                             = _UxGT("베드");
104
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("펜 속도");
105
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("펜 속도 1");
106
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("펜 속도 2");
107
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("펜 속도 3");
108
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("엑스트라 펜 속도");
109
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("엑스트라 펜 속도 1");
110
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("엑스트라 펜 속도 2");
111
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("엑스트라 펜 속도 3");
112
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("온도");
113
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("동작");
114
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("설정 저장하기");
115
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("설정 읽어오기");
116
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("설정 되돌리기");
117
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("EEPROM 초기화");
118
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("새로고침");
119
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("처음으로");
120
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("준비하기");
121
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("일시정지");
122
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("재시작");
123
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("출력중지");
124
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("SD 카드출력");
125
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("SD 카드없음");
126
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("슬립모드...");
127
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("일시 정지됨");
128
+  PROGMEM Language_Str MSG_PRINTING                        = _UxGT("출력중...");
129
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("취소됨");
130
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("죽음. ");
131
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("멈춤. ");
132
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("잘못된 프린터");
133
+}

+ 261
- 243
Marlin/src/lcd/language/language_nl.h Zobrazit soubor

@@ -32,252 +32,270 @@
32 32
 #define DISPLAY_CHARSET_ISO10646_1
33 33
 #define NOT_EXTENDED_ISO10646_1_5X7
34 34
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" gereed.")
36
-#define MSG_BACK                            _UxGT("Terug")
37
-#define MSG_MEDIA_INSERTED                  _UxGT("Kaart ingestoken")
38
-#define MSG_MEDIA_REMOVED                   _UxGT("Kaart verwijderd")
39
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstops") // Max length 8 characters
40
-#define MSG_MAIN                            _UxGT("Hoofdmenu")
41
-#define MSG_AUTOSTART                       _UxGT("Autostart")
42
-#define MSG_DISABLE_STEPPERS                _UxGT("Motoren uit")
43
-#define MSG_DEBUG_MENU                      _UxGT("Debug Menu") //accepted English terms
44
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Vooruitgang Test")
45
-#define MSG_AUTO_HOME                       _UxGT("Auto home")
46
-#define MSG_AUTO_HOME_X                     _UxGT("Home X")
47
-#define MSG_AUTO_HOME_Y                     _UxGT("Home Y")
48
-#define MSG_AUTO_HOME_Z                     _UxGT("Home Z")
49
-#define MSG_LEVEL_BED_HOMING                _UxGT("Homing XYZ")
50
-#define MSG_LEVEL_BED_WAITING               _UxGT("Klik voor begin")
51
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Volgende Plaats")
52
-#define MSG_LEVEL_BED_DONE                  _UxGT("Bed level kompl.")
53
-#define MSG_SET_HOME_OFFSETS                _UxGT("Zet home offsets")
54
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("H offset toegep.")
55
-#define MSG_SET_ORIGIN                      _UxGT("Nulpunt instellen")
56
-#define MSG_PREHEAT_1                       _UxGT(PREHEAT_1_LABEL " voorverwarmen")
57
-#define MSG_PREHEAT_1_N                     _UxGT(PREHEAT_1_LABEL " voorverw. ")
58
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1_N _UxGT("aan")
59
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" Einde")
60
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1_N _UxGT("Bed")
61
-#define MSG_PREHEAT_1_SETTINGS              _UxGT(PREHEAT_1_LABEL " verw. conf")
62
-#define MSG_PREHEAT_2                       _UxGT(PREHEAT_2_LABEL " voorverwarmen")
63
-#define MSG_PREHEAT_2_N                     _UxGT(PREHEAT_2_LABEL " voorverw. ")
64
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2_N _UxGT("aan")
65
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" Einde")
66
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2_N _UxGT("Bed")
67
-#define MSG_PREHEAT_2_SETTINGS              _UxGT(PREHEAT_2_LABEL " verw. conf")
68
-#define MSG_COOLDOWN                        _UxGT("Afkoelen")
69
-#define MSG_SWITCH_PS_ON                    _UxGT("Stroom aan")
70
-#define MSG_SWITCH_PS_OFF                   _UxGT("Stroom uit")
71
-#define MSG_EXTRUDE                         _UxGT("Extrude")
72
-#define MSG_RETRACT                         _UxGT("Retract")
73
-#define MSG_MOVE_AXIS                       _UxGT("As verplaatsen")
74
-#define MSG_BED_LEVELING                    _UxGT("Bed Leveling")
75
-#define MSG_LEVEL_BED                       _UxGT("Level bed")
35
+namespace Language_nl {
36
+  using namespace Language_en; // Inherit undefined strings from English
76 37
 
77
-#define MSG_MOVING                          _UxGT("Verplaatsen...")
78
-#define MSG_FREE_XY                         _UxGT("Vrij XY")
79
-#define MSG_MOVE_X                          _UxGT("Verplaats X")
80
-#define MSG_MOVE_Y                          _UxGT("Verplaats Y")
81
-#define MSG_MOVE_Z                          _UxGT("Verplaats Z")
82
-#define MSG_MOVE_E                          _UxGT("Extruder")
83
-#define MSG_MOVE_Z_DIST                     _UxGT("Verplaats %smm")
84
-#define MSG_MOVE_01MM                       _UxGT("Verplaats 0.1mm")
85
-#define MSG_MOVE_1MM                        _UxGT("Verplaats 1mm")
86
-#define MSG_MOVE_10MM                       _UxGT("Verplaats 10mm")
87
-#define MSG_SPEED                           _UxGT("Snelheid")
88
-#define MSG_BED_Z                           _UxGT("Bed Z")
89
-#define MSG_NOZZLE                          _UxGT("Nozzle")
90
-#define MSG_BED                             _UxGT("Bed")
91
-#define MSG_FAN_SPEED                       _UxGT("Fan snelheid")
92
-#define MSG_FLOW                            _UxGT("Flow")
93
-#define MSG_CONTROL                         _UxGT("Control")
94
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
95
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
96
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
97
-#define MSG_AUTOTEMP                        _UxGT("Autotemp")
98
-#define MSG_LCD_ON                          _UxGT("Aan")
99
-#define MSG_LCD_OFF                         _UxGT("Uit")
100
-#define MSG_PID_P                           _UxGT("PID-P")
101
-#define MSG_PID_I                           _UxGT("PID-I")
102
-#define MSG_PID_D                           _UxGT("PID-D")
103
-#define MSG_PID_C                           _UxGT("PID-C")
104
-#define MSG_SELECT                          _UxGT("Selecteer")
105
-#define MSG_ACC                             _UxGT("Versn")
106
-#define MSG_JERK                            _UxGT("Jerk")
107
-#if IS_KINEMATIC
108
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
109
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
110
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
111
-#else
112
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
113
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
114
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
115
-#endif
116
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
117
-#define MSG_VMAX                            _UxGT("Vmax ")
118
-#define MSG_VMIN                            _UxGT("Vmin")
119
-#define MSG_VTRAV_MIN                       _UxGT("VTrav min")
120
-#define MSG_AMAX                            _UxGT("Amax ")
121
-#define MSG_A_RETRACT                       _UxGT("A-retract")
122
-#define MSG_A_TRAVEL                        _UxGT("A-travel")
123
-#define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
124
-#if IS_KINEMATIC
125
-  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
126
-  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
127
-  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
128
-#else
129
-  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
130
-  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
131
-  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
132
-#endif
133
-#define MSG_ESTEPS                          _UxGT("Esteps/mm")
134
-#define MSG_E0_STEPS                        _UxGT("E1steps/mm")
135
-#define MSG_E1_STEPS                        _UxGT("E2steps/mm")
136
-#define MSG_E2_STEPS                        _UxGT("E3steps/mm")
137
-#define MSG_E3_STEPS                        _UxGT("E4steps/mm")
138
-#define MSG_E4_STEPS                        _UxGT("E5steps/mm")
139
-#define MSG_E5_STEPS                        _UxGT("E6steps/mm")
140
-#define MSG_TEMPERATURE                     _UxGT("Temperatuur")
141
-#define MSG_MOTION                          _UxGT("Beweging")
142
-#define MSG_FILAMENT                        _UxGT("Filament")
143
-#define MSG_ADVANCE_K                       _UxGT("Advance K") //accepted english dutch
144
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E in mm3")
145
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Dia.")
146
-#define MSG_CONTRAST                        _UxGT("LCD contrast")
147
-#define MSG_STORE_EEPROM                    _UxGT("Geheugen opslaan")
148
-#define MSG_LOAD_EEPROM                     _UxGT("Geheugen laden")
149
-#define MSG_RESTORE_FAILSAFE                _UxGT("Noodstop reset")
150
-#define MSG_REFRESH                         _UxGT("Ververs")
151
-#define MSG_WATCH                           _UxGT("Info scherm")
152
-#define MSG_PREPARE                         _UxGT("Voorbereiden")
153
-#define MSG_TUNE                            _UxGT("Afstellen")
154
-#define MSG_PAUSE_PRINT                     _UxGT("Print pauzeren")
155
-#define MSG_RESUME_PRINT                    _UxGT("Print hervatten")
156
-#define MSG_STOP_PRINT                      _UxGT("Print stoppen")
157
-#define MSG_MEDIA_MENU                      _UxGT("Print van SD")
158
-#define MSG_NO_MEDIA                        _UxGT("Geen SD kaart")
159
-#define MSG_DWELL                           _UxGT("Slapen...")
160
-#define MSG_USERWAIT                        _UxGT("Wachten...")
161
-#define MSG_PRINT_ABORTED                   _UxGT("Print afgebroken")
162
-#define MSG_NO_MOVE                         _UxGT("Geen beweging.")
163
-#define MSG_KILLED                          _UxGT("Afgebroken. ")
164
-#define MSG_STOPPED                         _UxGT("Gestopt. ")
165
-#define MSG_CONTROL_RETRACT                 _UxGT("Retract mm")  //accepted English term in Dutch
166
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Ruil Retract mm")
167
-#define MSG_CONTROL_RETRACTF                _UxGT("Retract  F")
168
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Hop mm")
169
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
170
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Ruil UnRet mm")
171
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  F")
172
-#define MSG_AUTORETRACT                     _UxGT("AutoRetr.")
173
-#define MSG_FILAMENTCHANGE                  _UxGT("Verv. Filament")
174
-#define MSG_INIT_MEDIA                      _UxGT("Init. SD kaart")
175
-#define MSG_CHANGE_MEDIA                    _UxGT("Verv. SD Kaart")
176
-#define MSG_ZPROBE_OUT                      _UxGT("Z probe uit. bed")
177
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Zelf-Test")
178
-#define MSG_BLTOUCH_RESET                   _UxGT("Reset BLTouch")
179
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s Eerst")
180
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Offset")  //accepted English term in Dutch
181
-#define MSG_BABYSTEP_X                      _UxGT("Babystap X")
182
-#define MSG_BABYSTEP_Y                      _UxGT("Babystap Y")
183
-#define MSG_BABYSTEP_Z                      _UxGT("Babystap Z")
184
-#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop afbr.")
185
-#define MSG_HEATING_FAILED_LCD              _UxGT("Voorverw. fout")
186
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Redun. temp fout")
187
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Therm. wegloop")
188
-#define MSG_ERR_MAXTEMP                     _UxGT("Err: Max. temp")
189
-#define MSG_ERR_MINTEMP                     _UxGT("Err: Min. temp")
190
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Err: Max.tmp bed")
191
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Err: Min.tmp bed")
192
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY Eerst")
193
-#define MSG_HALTED                          _UxGT("PRINTER GESTOPT")
194
-#define MSG_PLEASE_RESET                    _UxGT("Reset A.U.B.")
195
-#define MSG_SHORT_DAY                       _UxGT("d") //  One character only. Keep English standard
196
-#define MSG_SHORT_HOUR                      _UxGT("h") //  One character only
197
-#define MSG_SHORT_MINUTE                    _UxGT("m") //  One character only
198
-#define MSG_HEATING                         _UxGT("Voorwarmen...")
199
-#define MSG_BED_HEATING                     _UxGT("Bed voorverw...")
200
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Calibratie")
201
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibreer X")
202
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibreer Y")
203
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibreer Z")
204
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibreer Midden")
205
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Auto Calibratie")
206
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Zet Delta Hoogte")
38
+  constexpr uint8_t    CHARSIZE                            = 1;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Dutch");
207 40
 
208
-#define MSG_INFO_STATS_MENU                 _UxGT("Printer Stats")
209
-#define MSG_INFO_BOARD_MENU                 _UxGT("Board Info") //accepted English term in Dutch
210
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistors")
211
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extruders")
212
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")
213
-#define MSG_INFO_MENU                       _UxGT("Over Printer")
214
-#define MSG_INFO_PRINTER_MENU               _UxGT("Printer Info")
215
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocol")
216
-#define MSG_CASE_LIGHT                      _UxGT("Case licht")
41
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" gereed.");
42
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Terug");
43
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Kaart ingestoken");
44
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Kaart verwijderd");
45
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Endstops"); // Max length 8 characters
46
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Hoofdmenu");
47
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Autostart");
48
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Motoren uit");
49
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Debug Menu"); //accepted English terms
50
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Vooruitgang Test");
51
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Auto home");
52
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Home X");
53
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Home Y");
54
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Home Z");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Homing XYZ");
56
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Klik voor begin");
57
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Volgende Plaats");
58
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Bed level kompl.");
59
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Zet home offsets");
60
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("H offset toegep.");
61
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Nulpunt instellen");
62
+  PROGMEM Language_Str MSG_PREHEAT_1                       = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N0;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N1;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N2;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N3;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N4;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N5;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N0;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N1;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N2;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N3;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N4;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N5;
76
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
77
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
78
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = PREHEAT_1_LABEL _UxGT(" verw. conf");
79
+  PROGMEM Language_Str MSG_PREHEAT_2                       = PREHEAT_2_LABEL _UxGT(" voorverwarmen");
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N0;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N1;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N2;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N3;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N4;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N5;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = PREHEAT_2_LABEL _UxGT(" voorverw. Einde");
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N0;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N1;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N2;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N3;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N4;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N5;
93
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = PREHEAT_2_LABEL _UxGT(" voorverw. aan");
94
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = PREHEAT_2_LABEL _UxGT(" voorverw. Bed");
95
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = PREHEAT_2_LABEL _UxGT(" verw. conf");
96
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Afkoelen");
97
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Stroom aan");
98
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Stroom uit");
99
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrude");
100
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retract");
101
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("As verplaatsen");
102
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Bed Leveling");
103
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Level bed");
217 104
 
218
-#define MSG_EXPECTED_PRINTER                _UxGT("Onjuiste printer")
105
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Verplaatsen...");
106
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Vrij XY");
107
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Verplaats X");
108
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Verplaats Y");
109
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Verplaats Z");
110
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Extruder");
111
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Extruder ") LCD_STR_E0;
112
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Extruder ") LCD_STR_E1;
113
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Extruder ") LCD_STR_E2;
114
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Extruder ") LCD_STR_E3;
115
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Extruder ") LCD_STR_E4;
116
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Extruder ") LCD_STR_E5;
117
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Verplaats %smm");
118
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Verplaats 0.1mm");
119
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Verplaats 1mm");
120
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Verplaats 10mm");
121
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Snelheid");
122
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Bed Z");
123
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Nozzle");
124
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Nozzle ") LCD_STR_N0;
125
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Nozzle ") LCD_STR_N1;
126
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Nozzle ") LCD_STR_N2;
127
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Nozzle ") LCD_STR_N3;
128
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Nozzle ") LCD_STR_N4;
129
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Nozzle ") LCD_STR_N5;
130
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Bed");
131
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Fan snelheid");
132
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Fan snelheid 1");
133
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Fan snelheid 2");
134
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Fan snelheid 3");
135
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Flow");
136
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Flow ") LCD_STR_N0;
137
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Flow ") LCD_STR_N1;
138
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Flow ") LCD_STR_N2;
139
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Flow ") LCD_STR_N3;
140
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Flow ") LCD_STR_N4;
141
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Flow ") LCD_STR_N5;
142
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Control");
143
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
144
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
145
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fact");
146
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Autotemp");
147
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Aan");
148
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Uit");
149
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Selecteer");
150
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Selecteer ") LCD_STR_E0;
151
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Selecteer ") LCD_STR_E1;
152
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Selecteer ") LCD_STR_E2;
153
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Selecteer ") LCD_STR_E3;
154
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Selecteer ") LCD_STR_E4;
155
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Selecteer ") LCD_STR_E5;
156
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Versn");
157
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatuur");
158
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Beweging");
159
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filament");
160
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("Advance K");        //accepted english dutch
161
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("Advance K ") LCD_STR_E0; //accepted english dutch
162
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("Advance K ") LCD_STR_E1; //accepted english dutch
163
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("Advance K ") LCD_STR_E2; //accepted english dutch
164
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("Advance K ") LCD_STR_E3; //accepted english dutch
165
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("Advance K ") LCD_STR_E4; //accepted english dutch
166
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("Advance K ") LCD_STR_E5; //accepted english dutch
167
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E in mm3");
168
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Fil. Dia.");
169
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Fil. Dia. ") LCD_STR_E0;
170
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Fil. Dia. ") LCD_STR_E1;
171
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Fil. Dia. ") LCD_STR_E2;
172
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Fil. Dia. ") LCD_STR_E3;
173
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Fil. Dia. ") LCD_STR_E4;
174
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Fil. Dia. ") LCD_STR_E5;
175
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD contrast");
176
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Geheugen opslaan");
177
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Geheugen laden");
178
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Noodstop reset");
179
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Ververs");
180
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Info scherm");
181
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Voorbereiden");
182
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Afstellen");
183
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Print pauzeren");
184
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Print hervatten");
185
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Print stoppen");
186
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Print van SD");
187
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Geen SD kaart");
188
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Slapen...");
189
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Wachten...");
190
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Print afgebroken");
191
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Geen beweging.");
192
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("Afgebroken. ");
193
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("Gestopt. ");
194
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Retract mm");  //accepted English term in Dutch
195
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Ruil Retract mm");
196
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Retract  F");
197
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Hop mm");
198
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
199
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Ruil UnRet mm");
200
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  F");
201
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("AutoRetr.");
202
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Verv. Filament");
203
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Verv. Filament ") LCD_STR_E0;
204
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Verv. Filament ") LCD_STR_E1;
205
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Verv. Filament ") LCD_STR_E2;
206
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Verv. Filament ") LCD_STR_E3;
207
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Verv. Filament ") LCD_STR_E4;
208
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Verv. Filament ") LCD_STR_E5;
209
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Init. SD kaart");
210
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Verv. SD Kaart");
211
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z probe uit. bed");
212
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch Zelf-Test");
213
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Reset BLTouch");
214
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Home %s%s%s Eerst");
215
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Z Offset");  //accepted English term in Dutch
216
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Babystap X");
217
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Babystap Y");
218
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Babystap Z");
219
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Endstop afbr.");
220
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Voorverw. fout");
221
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Redun. temp fout");
222
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Therm. wegloop");
223
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Err: Max. temp");
224
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Err: Min. temp");
225
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Err: Max.tmp bed");
226
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Err: Min.tmp bed");
227
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY Eerst");
228
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("PRINTER GESTOPT");
229
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Reset A.U.B.");
230
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d"); //  One character only. Keep English standard
231
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h"); //  One character only
232
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m"); //  One character only
233
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Voorwarmen...");
234
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Bed voorverw...");
235
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Calibratie");
236
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibreer X");
237
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibreer Y");
238
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibreer Z");
239
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibreer Midden");
240
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Auto Calibratie");
241
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Zet Delta Hoogte");
219 242
 
220
-#if LCD_WIDTH >= 20
221
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Printed Aantal")
222
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Totaal Voltooid")
223
-  #define MSG_INFO_PRINT_TIME               _UxGT("Totale Printtijd")
224
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Langste Printtijd")
225
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Totaal Extrudeert")
226
-#else
227
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Aantal")
228
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Voltooid")
229
-  #define MSG_INFO_PRINT_TIME               _UxGT("Printtijd ")
230
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Langste")
231
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extrud.")
232
-#endif
243
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Printer Stats");
244
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Board Info"); //accepted English term in Dutch
245
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Thermistors");
246
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extruders");
247
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baud");
248
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Over Printer");
249
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Printer Info");
250
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protocol");
251
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Case licht");
233 252
 
234
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
235
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Temp")
236
-#define MSG_INFO_PSU                        _UxGT("PSU")  //accepted English term in Dutch
253
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Onjuiste printer");
237 254
 
238
-#define MSG_DRIVE_STRENGTH                  _UxGT("Motorstroom")
239
-#define MSG_DAC_PERCENT                     _UxGT("Driver %")  //accepted English term in Dutch
240
-#define MSG_DAC_EEPROM_WRITE                _UxGT("DAC Opslaan")
241
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Hervat print")
242
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT(" Nozzle: ") //accepeted English term
243
-//
244
-// Filament Change screens show up to 3 lines on a 4-line display
245
-//                        ...or up to 2 lines on a 3-line display
246
-//
247
-#if LCD_HEIGHT >= 4
248
-  // Up to 3 lines
249
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Wacht voor start")
250
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("filament te")
251
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("verwisselen")
252
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Wacht voor")
253
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("filament uit")
254
-  #define MSG_FILAMENT_CHANGE_UNLOAD_3        _UxGT("te laden")
255
-  #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Klik knop om...")
256
-  #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("verw. nozzle.") //nozzle accepted English term
257
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Nozzle verw.")
258
-  #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Wacht a.u.b.")
259
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Laad filament")
260
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("en druk knop")
261
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("om verder...")
262
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wacht voor")
263
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament te")
264
-  #define MSG_FILAMENT_CHANGE_LOAD_3          _UxGT("laden")
265
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wacht voor print")
266
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("om verder")
267
-  #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("te gaan")
268
-#else // LCD_HEIGHT < 4
269
-  // Up to 2 lines
270
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Wacht voor")
271
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("start...")
272
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Wacht voor")
273
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("uitladen...")
274
-  #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Klik knop om...")
275
-  #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("verw. nozzle.") //nozzle accepted English term
276
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Verwarmen...")
277
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Laad filament")
278
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("en druk knop")
279
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wacht voor")
280
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("inladen...")
281
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wacht voor")
282
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("printing...")
283
-#endif // LCD_HEIGHT < 4
255
+  #if LCD_WIDTH >= 20
256
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Printed Aantal");
257
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Totaal Voltooid");
258
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Totale Printtijd");
259
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Langste Printtijd");
260
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Totaal Extrudeert");
261
+  #else
262
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Aantal");
263
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Voltooid");
264
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Printtijd ");
265
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Langste");
266
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Extrud.");
267
+  #endif
268
+
269
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Min Temp");
270
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Max Temp");
271
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("PSU");  //accepted English term in Dutch
272
+
273
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Motorstroom");
274
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Driver %");  //accepted English term in Dutch
275
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("DAC Opslaan");
276
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Hervat print");
277
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT(" Nozzle: "); //accepeted English term
278
+  //
279
+  // Filament Change screens show up to 3 lines on a 4-line display
280
+  //                        ...or up to 2 lines on a 3-line display
281
+  //
282
+  #if LCD_HEIGHT >= 4
283
+    // Up to 3 lines
284
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Wacht voor start", "filament te", "verwisselen"));
285
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_3_LINE("Wacht voor", "filament uit", "te laden"));
286
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term
287
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Nozzle verw.", "Wacht a.u.b."));
288
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Laad filament", "en druk knop", "om verder..."));
289
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_3_LINE("Wacht voor", "filament te", "laden"));
290
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_3_LINE("Wacht voor print", "om verder", "te gaan"));
291
+  #else
292
+    // Up to 2 lines
293
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_2_LINE("Wacht voor", "start..."));
294
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Wacht voor", "uitladen..."));
295
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term
296
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Verwarmen..."));
297
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_2_LINE("Laad filament", "en druk knop"));
298
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Wacht voor", "inladen..."));
299
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Wacht voor", "printing..."));
300
+  #endif
301
+}

+ 252
- 217
Marlin/src/lcd/language/language_pl.h Zobrazit soubor

@@ -27,228 +27,263 @@
27 27
 
28 28
 #define DISPLAY_CHARSET_ISO10646_PL
29 29
 
30
-#define CHARSIZE 2
30
+namespace Language_pl {
31
+  using namespace Language_en; // Inherit undefined strings from English
31 32
 
32
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" gotowy.")
33
-#define MSG_MEDIA_INSERTED                  _UxGT("Karta włożona")
34
-#define MSG_MEDIA_REMOVED                   _UxGT("Karta usunięta")
35
-#define MSG_LCD_ENDSTOPS                    _UxGT("Kranców.") // Max length 8 characters
36
-#define MSG_MAIN                            _UxGT("Menu główne")
37
-#define MSG_AUTOSTART                       _UxGT("Autostart")
38
-#define MSG_DISABLE_STEPPERS                _UxGT("Wyłącz silniki")
39
-#define MSG_AUTO_HOME                       _UxGT("Pozycja zerowa")
40
-#define MSG_AUTO_HOME_X                     _UxGT("Zeruj X")
41
-#define MSG_AUTO_HOME_Y                     _UxGT("Zeruj Y")
42
-#define MSG_AUTO_HOME_Z                     _UxGT("Zeruj Z")
43
-#define MSG_LEVEL_BED                       _UxGT("Poziom. stołu")
44
-#define MSG_LEVEL_BED_HOMING                _UxGT("Pozycja zerowa")
45
-#define MSG_LEVEL_BED_WAITING               _UxGT("Kliknij by rozp.")
46
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Następny punkt")
47
-#define MSG_LEVEL_BED_DONE                  _UxGT("Wypoziomowano!")
48
-#define MSG_USER_MENU                       _UxGT("Własne Polecenia")
49
-#define MSG_SET_HOME_OFFSETS                _UxGT("Ust. poz. zer.")
50
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Poz. zerowa ust.")
51
-#define MSG_SET_ORIGIN                      _UxGT("Ustaw punkt zero")
52
-#define MSG_PREHEAT_1                       _UxGT("Rozgrzej " PREHEAT_1_LABEL)
53
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
54
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" wsz.")
55
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Rozgrzej stół " PREHEAT_1_LABEL)
56
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Ustaw. rozg. " PREHEAT_1_LABEL)
57
-#define MSG_PREHEAT_2                       _UxGT("Rozgrzej " PREHEAT_2_LABEL)
58
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
59
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" wsz.")
60
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Rozgrzej stół " PREHEAT_2_LABEL)
61
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Ustaw. rozg. " PREHEAT_2_LABEL)
62
-#define MSG_COOLDOWN                        _UxGT("Chłodzenie")
63
-#define MSG_SWITCH_PS_ON                    _UxGT("Włącz zasilacz")
64
-#define MSG_SWITCH_PS_OFF                   _UxGT("Wyłącz zasilacz")
65
-#define MSG_EXTRUDE                         _UxGT("Ekstruzja")
66
-#define MSG_RETRACT                         _UxGT("Wycofanie")
67
-#define MSG_MOVE_AXIS                       _UxGT("Ruch osi")
68
-#define MSG_BED_LEVELING                    _UxGT("Poziom. stołu")
69
-#define MSG_MOVE_X                          _UxGT("Przesuń w X")
70
-#define MSG_MOVE_Y                          _UxGT("Przesuń w Y")
71
-#define MSG_MOVE_Z                          _UxGT("Przesuń w Z")
72
-#define MSG_MOVE_E                          _UxGT("Ekstruzja (os E)")
73
-#define MSG_MOVE_Z_DIST                     _UxGT("Przesuń co %smm")
74
-#define MSG_MOVE_01MM                       _UxGT("Przesuń co .1mm")
75
-#define MSG_MOVE_1MM                        _UxGT("Przesuń co 1mm")
76
-#define MSG_MOVE_10MM                       _UxGT("Przesuń co 10mm")
77
-#define MSG_SPEED                           _UxGT("Predkość")
78
-#define MSG_BED_Z                           _UxGT("Stół Z")
79
-#define MSG_NOZZLE                          _UxGT("Dysza")
80
-#define MSG_BED                             _UxGT("Stół")
81
-#define MSG_FAN_SPEED                       _UxGT("Obroty wiatraka")
82
-#define MSG_FLOW                            _UxGT("Przepływ")
83
-#define MSG_CONTROL                         _UxGT("Ustawienia")
84
-#define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" Min")
85
-#define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" Max")
86
-#define MSG_FACTOR                          LCD_STR_THERMOMETER _UxGT(" Mnożnik")
87
-#define MSG_AUTOTEMP                        _UxGT("Auto. temperatura")
88
-#define MSG_LCD_ON                          _UxGT("Wł.")
89
-#define MSG_LCD_OFF                         _UxGT("Wył.")
90
-#define MSG_PID_P                           _UxGT("PID-P")
91
-#define MSG_PID_I                           _UxGT("PID-I")
92
-#define MSG_PID_D                           _UxGT("PID-D")
93
-#define MSG_PID_C                           _UxGT("PID-C")
94
-#define MSG_SELECT                          _UxGT("Select")
95
-#define MSG_ACC                             _UxGT("Przyśpieszenie")
96
-#define MSG_JERK                            _UxGT("Zryw")
97
-#if IS_KINEMATIC
98
-  #define MSG_VA_JERK                       _UxGT("Zryw Va")
99
-  #define MSG_VB_JERK                       _UxGT("Zryw Vb")
100
-  #define MSG_VC_JERK                       _UxGT("Zryw Vc")
101
-#else
102
-  #define MSG_VA_JERK                       _UxGT("Zryw Vx")
103
-  #define MSG_VB_JERK                       _UxGT("Zryw Vy")
104
-  #define MSG_VC_JERK                       _UxGT("Zryw Vz")
105
-#endif
106
-#define MSG_VE_JERK                         _UxGT("Zryw Ve")
107
-#define MSG_VMAX                            _UxGT("Vmax ")
108
-#define MSG_VMIN                            _UxGT("Vmin")
109
-#define MSG_VTRAV_MIN                       _UxGT("Vskok min")
110
-#define MSG_ACCELERATION                    MSG_ACC
111
-#define MSG_AMAX                            _UxGT("Amax")
112
-#define MSG_A_RETRACT                       _UxGT("A-wycofanie")
113
-#define MSG_A_TRAVEL                        _UxGT("A-przesuń.")
114
-#define MSG_STEPS_PER_MM                    _UxGT("kroki/mm")
115
-#if IS_KINEMATIC
116
-  #define MSG_ASTEPS                        _UxGT("krokiA/mm")
117
-  #define MSG_BSTEPS                        _UxGT("krokiB/mm")
118
-  #define MSG_CSTEPS                        _UxGT("krokiC/mm")
119
-#else
120
-  #define MSG_ASTEPS                        _UxGT("krokiX/mm")
121
-  #define MSG_BSTEPS                        _UxGT("krokiY/mm")
122
-  #define MSG_CSTEPS                        _UxGT("krokiZ/mm")
123
-#endif
124
-#define MSG_ESTEPS                          _UxGT("krokiE/mm")
125
-#define MSG_E0_STEPS                        _UxGT("krokiE1/mm")
126
-#define MSG_E1_STEPS                        _UxGT("krokiE2/mm")
127
-#define MSG_E2_STEPS                        _UxGT("krokiE3/mm")
128
-#define MSG_E3_STEPS                        _UxGT("krokiE4/mm")
129
-#define MSG_E4_STEPS                        _UxGT("krokiE5/mm")
130
-#define MSG_E5_STEPS                        _UxGT("krokiE6/mm")
131
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
132
-#define MSG_MOTION                          _UxGT("Ruch")
133
-#define MSG_FILAMENT                        _UxGT("Filament")
134
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E w mm3")
135
-#define MSG_FILAMENT_DIAM                   _UxGT("Śr. fil.")
136
-#define MSG_CONTRAST                        _UxGT("Kontrast LCD")
137
-#define MSG_STORE_EEPROM                    _UxGT("Zapisz w pamięci")
138
-#define MSG_LOAD_EEPROM                     _UxGT("Wczytaj z pamięci")
139
-#define MSG_RESTORE_FAILSAFE                _UxGT("Ustaw. fabryczne")
140
-#define MSG_REFRESH                         _UxGT("Odswież")
141
-#define MSG_WATCH                           _UxGT("Ekran główny")
142
-#define MSG_PREPARE                         _UxGT("Przygotuj")
143
-#define MSG_TUNE                            _UxGT("Strojenie")
144
-#define MSG_PAUSE_PRINT                     _UxGT("Pauza")
145
-#define MSG_RESUME_PRINT                    _UxGT("Wznowienie")
146
-#define MSG_STOP_PRINT                      _UxGT("Stop")
147
-#define MSG_MEDIA_MENU                      _UxGT("Karta SD")
148
-#define MSG_NO_MEDIA                        _UxGT("Brak karty")
149
-#define MSG_DWELL                           _UxGT("Uśpij...")
150
-#define MSG_USERWAIT                        _UxGT("Oczekiwanie...")
151
-#define MSG_PRINT_ABORTED                   _UxGT("Druk przerwany")
152
-#define MSG_NO_MOVE                         _UxGT("Brak ruchu")
153
-#define MSG_KILLED                          _UxGT("Ubity. ")
154
-#define MSG_STOPPED                         _UxGT("Zatrzymany. ")
155
-#define MSG_CONTROL_RETRACT                 _UxGT("Wycofaj mm")
156
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Z Wycof. mm")
157
-#define MSG_CONTROL_RETRACTF                _UxGT("Wycofaj  V")
158
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Skok Z mm")
159
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Cof. wycof. mm")
160
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Z Cof. wyc. mm")
161
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Cof. wycof.  V")
162
-#define MSG_AUTORETRACT                     _UxGT("Auto. wycofanie")
163
-#define MSG_FILAMENTCHANGE                  _UxGT("Zmień filament")
164
-#define MSG_INIT_MEDIA                      _UxGT("Inicjal. karty SD")
165
-#define MSG_CHANGE_MEDIA                    _UxGT("Zmiana karty SD")
166
-#define MSG_ZPROBE_OUT                      _UxGT("Sonda Z za stołem")
167
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Self-Test")
168
-#define MSG_BLTOUCH_RESET                   _UxGT("Reset BLTouch")
169
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s first")
170
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Offset Z")
171
-#define MSG_BABYSTEP_X                      _UxGT("Babystep X")
172
-#define MSG_BABYSTEP_Y                      _UxGT("Babystep Y")
173
-#define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
174
-#define MSG_ENDSTOP_ABORT                   _UxGT("Błąd krańcówki")
175
-#define MSG_HEATING_FAILED_LCD              _UxGT("Rozgrz. nieudane")
176
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Błąd temperatury")
177
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Zanik temp.")
178
-#define MSG_ERR_MAXTEMP                     _UxGT("Err max temp")
179
-#define MSG_ERR_MINTEMP                     _UxGT("Err min temp")
180
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Err max temp stołu")
181
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Err min temp stołu")
182
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY first")
183
-#define MSG_HALTED                          _UxGT("Drukarka zatrzym.")
184
-#define MSG_PLEASE_RESET                    _UxGT("Proszę zresetować")
185
-#define MSG_SHORT_DAY                       _UxGT("d") // One character only
186
-#define MSG_SHORT_HOUR                      _UxGT("g") // One character only
187
-#define MSG_SHORT_MINUTE                    _UxGT("m") // One character only
188
-#define MSG_HEATING                         _UxGT("Rozgrzewanie...")
189
-#define MSG_BED_HEATING                     _UxGT("Rozgrzewanie stołu...")
190
-#define MSG_DELTA_CALIBRATE                 _UxGT("Kalibrowanie Delty")
191
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibruj X")
192
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibruj Y")
193
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibruj Z")
194
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibruj środek")
33
+  constexpr uint8_t    CHARSIZE                            = 2;
34
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Polish");
195 35
 
196
-#define MSG_INFO_MENU                       _UxGT("O drukarce")
197
-#define MSG_INFO_PRINTER_MENU               _UxGT("Info drukarki")
198
-#define MSG_INFO_STATS_MENU                 _UxGT("Statystyki")
199
-#define MSG_INFO_BOARD_MENU                 _UxGT("Board Info")
200
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistory")
201
-#define MSG_INFO_EXTRUDERS                  _UxGT("Ekstrudery")
202
-#define MSG_INFO_BAUDRATE                   _UxGT("Predkość USB")
203
-#define MSG_INFO_PROTOCOL                   _UxGT("Protokół")
204
-#define MSG_CASE_LIGHT                      _UxGT("Oświetlenie")
36
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" gotowy.");
37
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Karta włożona");
38
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Karta usunięta");
39
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Kranców."); // Max length 8 characters
40
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu główne");
41
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Autostart");
42
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Wyłącz silniki");
43
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Pozycja zerowa");
44
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Zeruj X");
45
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Zeruj Y");
46
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Zeruj Z");
47
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Poziom. stołu");
48
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Pozycja zerowa");
49
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Kliknij by rozp.");
50
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Następny punkt");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Wypoziomowano!");
52
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("Własne Polecenia");
53
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Ust. poz. zer.");
54
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Poz. zerowa ust.");
55
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ustaw punkt zero");
56
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
57
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N0;
58
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N1;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N2;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N3;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N4;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N5;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
64
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N0;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N1;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N2;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N3;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N4;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N5;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
71
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Rozgrzej stół ") PREHEAT_1_LABEL;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Ustaw. rozg. ") PREHEAT_1_LABEL;
73
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Rozgrzej ") PREHEAT_2_LABEL;
74
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N0;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N1;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N2;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N3;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N4;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N5;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza");
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N0;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N1;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N2;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N3;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N4;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N5;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" wsz.");
88
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Rozgrzej stół ") PREHEAT_2_LABEL;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Ustaw. rozg. ") PREHEAT_2_LABEL;
90
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Chłodzenie");
91
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Włącz zasilacz");
92
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Wyłącz zasilacz");
93
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Ekstruzja");
94
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Wycofanie");
95
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Ruch osi");
96
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Poziom. stołu");
97
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Przesuń w X");
98
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Przesuń w Y");
99
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Przesuń w Z");
100
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Ekstruzja (os E)");
101
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E0;
102
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E1;
103
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E2;
104
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E3;
105
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E4;
106
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Ekstruzja (os E) ") LCD_STR_E5;
107
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Przesuń co %smm");
108
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Przesuń co .1mm");
109
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Przesuń co 1mm");
110
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Przesuń co 10mm");
111
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Predkość");
112
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Stół Z");
113
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Dysza");
114
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Dysza ") LCD_STR_N0;
115
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Dysza ") LCD_STR_N1;
116
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Dysza ") LCD_STR_N2;
117
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Dysza ") LCD_STR_N3;
118
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Dysza ") LCD_STR_N4;
119
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Dysza ") LCD_STR_N5;
120
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Stół");
121
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Obroty wiatraka");
122
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Obroty wiatraka 1");
123
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Obroty wiatraka 2");
124
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Obroty wiatraka 3");
125
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Przepływ");
126
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Przepływ ") LCD_STR_N0;
127
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Przepływ ") LCD_STR_N1;
128
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Przepływ ") LCD_STR_N2;
129
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Przepływ ") LCD_STR_N3;
130
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Przepływ ") LCD_STR_N4;
131
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Przepływ ") LCD_STR_N5;
132
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Ustawienia");
133
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
134
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
135
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik");
136
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Auto. temperatura");
137
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Wł.");
138
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Wył.");
139
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Przyśpieszenie");
140
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Zryw");
141
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("Zryw V") LCD_STR_A;
142
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("Zryw V") LCD_STR_B;
143
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("Zryw V") LCD_STR_C;
144
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Zryw Ve");
145
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vskok min");
146
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-wycofanie");
147
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-przesuń.");
148
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("kroki/mm");
149
+  PROGMEM Language_Str MSG_A_STEPS                         = _UxGT("kroki") LCD_MSG_A _UxGT("/mm");
150
+  PROGMEM Language_Str MSG_B_STEPS                         = _UxGT("kroki") LCD_MSG_B _UxGT("/mm");
151
+  PROGMEM Language_Str MSG_C_STEPS                         = _UxGT("kroki") LCD_MSG_C _UxGT("/mm");
152
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("krokiE/mm");
153
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("kroki ") LCD_STR_E0 _UxGT("/mm");
154
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("kroki ") LCD_STR_E1 _UxGT("/mm");
155
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("kroki ") LCD_STR_E2 _UxGT("/mm");
156
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("kroki ") LCD_STR_E3 _UxGT("/mm");
157
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("kroki ") LCD_STR_E4 _UxGT("/mm");
158
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("kroki ") LCD_STR_E5 _UxGT("/mm");
159
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
160
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Ruch");
161
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filament");
162
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E w mm3");
163
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Śr. fil.");
164
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Śr. fil. ") LCD_STR_E0;
165
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Śr. fil. ") LCD_STR_E1;
166
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Śr. fil. ") LCD_STR_E2;
167
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Śr. fil. ") LCD_STR_E3;
168
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Śr. fil. ") LCD_STR_E4;
169
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Śr. fil. ") LCD_STR_E5;
170
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Kontrast LCD");
171
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Zapisz w pamięci");
172
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Wczytaj z pamięci");
173
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Ustaw. fabryczne");
174
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Odswież");
175
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Ekran główny");
176
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Przygotuj");
177
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Strojenie");
178
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pauza");
179
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Wznowienie");
180
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Stop");
181
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Karta SD");
182
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Brak karty");
183
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Uśpij...");
184
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Oczekiwanie...");
185
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Druk przerwany");
186
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Brak ruchu");
187
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("Ubity. ");
188
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("Zatrzymany. ");
189
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Wycofaj mm");
190
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Z Wycof. mm");
191
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Wycofaj  V");
192
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Skok Z mm");
193
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Cof. wycof. mm");
194
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Z Cof. wyc. mm");
195
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Cof. wycof.  V");
196
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Auto. wycofanie");
197
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Zmień filament");
198
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Zmień filament ") LCD_STR_E0;
199
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Zmień filament ") LCD_STR_E1;
200
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Zmień filament ") LCD_STR_E2;
201
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Zmień filament ") LCD_STR_E3;
202
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Zmień filament ") LCD_STR_E4;
203
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Zmień filament ") LCD_STR_E5;
204
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Inicjal. karty SD");
205
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Zmiana karty SD");
206
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sonda Z za stołem");
207
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch Self-Test");
208
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Reset BLTouch");
209
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Home %s%s%s first");
210
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Offset Z");
211
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Babystep X");
212
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Babystep Y");
213
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Babystep Z");
214
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Błąd krańcówki");
215
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Rozgrz. nieudane");
216
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Błąd temperatury");
217
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Zanik temp.");
218
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Err max temp");
219
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Err min temp");
220
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Err max temp stołu");
221
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Err min temp stołu");
222
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY first");
223
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("Drukarka zatrzym.");
224
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Proszę zresetować");
225
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d"); // One character only
226
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("g"); // One character only
227
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m"); // One character only
228
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Rozgrzewanie...");
229
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Rozgrzewanie stołu...");
230
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Kalibrowanie Delty");
231
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Kalibruj X");
232
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Kalibruj Y");
233
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Kalibruj Z");
234
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Kalibruj środek");
205 235
 
206
-#define MSG_EXPECTED_PRINTER                _UxGT("Niepoprawna drukarka")
236
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("O drukarce");
237
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Info drukarki");
238
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Statystyki");
239
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Board Info");
240
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Thermistory");
241
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Ekstrudery");
242
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Predkość USB");
243
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protokół");
244
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Oświetlenie");
207 245
 
208
-#if LCD_WIDTH >= 20
209
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Wydrukowano")
210
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Ukończono")
211
-  #define MSG_INFO_PRINT_TIME               _UxGT("Czas druku")
212
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Najdł. druk")
213
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Użyty fil.")
214
-#else
215
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Wydrukowano")
216
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Ukończono")
217
-  #define MSG_INFO_PRINT_TIME               _UxGT("Razem")
218
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Najdł. druk")
219
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Użyty fil.")
220
-#endif
246
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Niepoprawna drukarka");
221 247
 
222
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
223
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Temp")
224
-#define MSG_INFO_PSU                        _UxGT("Zasilacz")
248
+  #if LCD_WIDTH >= 20
249
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Wydrukowano");
250
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Ukończono");
251
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Czas druku");
252
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Najdł. druk");
253
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Użyty fil.");
254
+  #else
255
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Wydrukowano");
256
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Ukończono");
257
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Razem");
258
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Najdł. druk");
259
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Użyty fil.");
260
+  #endif
225 261
 
226
-#define MSG_DRIVE_STRENGTH                  _UxGT("Siła silnika")
227
-#define MSG_DAC_PERCENT                     _UxGT("Siła %")
228
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Zapisz DAC EEPROM")
262
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Min Temp");
263
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Max Temp");
264
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Zasilacz");
229 265
 
230
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("ZMIEŃ FILAMENT")
231
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("ZMIEŃ OPCJE:")
232
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Wznów drukowanie")
266
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Siła silnika");
267
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Siła %");
268
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Zapisz DAC EEPROM");
233 269
 
234
-#if LCD_HEIGHT >= 4
235
-  // Up to 3 lines allowed
236
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Czekam na ")
237
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("zmianę filamentu")
238
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Czekam na")
239
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("wyjęcie filamentu")
240
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Włóz filament")
241
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("i naciśnij przycisk")
242
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("aby kontynuować...")
243
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Czekam na")
244
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("włożenie filamentu")
245
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Czekam na")
246
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("wznowienie druku")
247
-#else // LCD_HEIGHT < 4
248
-  // Up to 2 lines allowed
249
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Proszę czekać...")
250
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Wysuwanie...")
251
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Włóż i naciśnij prz.")
252
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Ładowanie...")
253
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wznowienie...")
254
-#endif // LCD_HEIGHT < 4
270
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("ZMIEŃ FILAMENT");
271
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("ZMIEŃ OPCJE:");
272
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Wznów drukowanie");
273
+
274
+  #if LCD_HEIGHT >= 4
275
+    // Up to 3 lines allowed
276
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_2_LINE("Czekam na ", "zmianę filamentu"));
277
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu"));
278
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Włóz filament", "i naciśnij przycisk", "aby kontynuować..."));
279
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu"));
280
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Czekam na", "wznowienie druku"));
281
+  #else
282
+    // Up to 2 lines allowed
283
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Proszę czekać..."));
284
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Wysuwanie..."));
285
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Włóż i naciśnij prz."));
286
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Ładowanie..."));
287
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Wznowienie..."));
288
+  #endif
289
+}

+ 180
- 153
Marlin/src/lcd/language/language_pt.h Zobrazit soubor

@@ -30,159 +30,186 @@
30 30
  *
31 31
  */
32 32
 
33
-#define DISPLAY_CHARSET_ISO10646_1
34
-#define CHARSIZE 2
33
+ #define DISPLAY_CHARSET_ISO10646_1
35 34
 
36
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" pronta.")
37
-#define MSG_MEDIA_INSERTED                  _UxGT("Cartão inserido")
38
-#define MSG_MEDIA_REMOVED                   _UxGT("Cartão removido")
39
-#define MSG_MAIN                            _UxGT("Menu principal")
40
-#define MSG_AUTOSTART                       _UxGT("Autostart")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Desactivar motores")
42
-#define MSG_AUTO_HOME                       _UxGT("Ir para origem")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Ir para origem X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Ir para origem Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Ir para origem Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Indo para origem")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Click para iniciar")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Próximo ponto")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Pronto !")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Definir desvio")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offsets aplicados")
52
-#define MSG_SET_ORIGIN                      _UxGT("Definir origem")
53
-#define MSG_PREHEAT_1                       _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
55
-#define MSG_PREHEAT_1_ALL                   _UxGT("Pre-aq. " PREHEAT_1_LABEL " Tudo")
56
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Pre-aq. " PREHEAT_1_LABEL " ") LCD_STR_THERMOMETER _UxGT("Base")
57
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Definições " PREHEAT_1_LABEL)
58
-#define MSG_PREHEAT_2                       _UxGT("Pre-aquecer " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     _UxGT("Pre-aquecer " PREHEAT_2_LABEL " ")
60
-#define MSG_PREHEAT_2_ALL                   _UxGT("Pre-aq. " PREHEAT_2_LABEL " Tudo")
61
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Pre-aq. " PREHEAT_2_LABEL " ") LCD_STR_THERMOMETER _UxGT("Base")
62
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Definições " PREHEAT_2_LABEL)
63
-#define MSG_COOLDOWN                        _UxGT("Arrefecer")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Ligar")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Desligar")
66
-#define MSG_EXTRUDE                         _UxGT("Extrudir")
67
-#define MSG_RETRACT                         _UxGT("Retrair")
68
-#define MSG_MOVE_AXIS                       _UxGT("Mover eixo")
69
-#define MSG_MOVE_X                          _UxGT("Mover X")
70
-#define MSG_MOVE_Y                          _UxGT("Mover Y")
71
-#define MSG_MOVE_Z                          _UxGT("Mover Z")
72
-#define MSG_MOVE_E                          _UxGT("Mover Extrusor")
73
-#define MSG_MOVE_Z_DIST                     _UxGT("Mover %smm")
74
-#define MSG_MOVE_01MM                       _UxGT("Mover 0.1mm")
75
-#define MSG_MOVE_1MM                        _UxGT("Mover 1mm")
76
-#define MSG_MOVE_10MM                       _UxGT("Mover 10mm")
77
-#define MSG_SPEED                           _UxGT("Velocidade")
78
-#define MSG_BED_Z                           _UxGT("Base Z")
79
-#define MSG_NOZZLE                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Bico")
80
-#define MSG_BED                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Base")
81
-#define MSG_FAN_SPEED                       _UxGT("Vel. ventoinha")
82
-#define MSG_FLOW                            _UxGT("Fluxo")
83
-#define MSG_CONTROL                         _UxGT("Controlo")
84
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
85
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
86
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
87
-#define MSG_AUTOTEMP                        _UxGT("Temp. Automática")
88
-#define MSG_LCD_ON                          _UxGT("On")
89
-#define MSG_LCD_OFF                         _UxGT("Off")
90
-#define MSG_PID_P                           _UxGT("PID-P")
91
-#define MSG_PID_I                           _UxGT("PID-I")
92
-#define MSG_PID_D                           _UxGT("PID-D")
93
-#define MSG_PID_C                           _UxGT("PID-C")
94
-#define MSG_ACC                             _UxGT("Acc")
95
-#define MSG_JERK                            _UxGT("Jerk")
96
-#if IS_KINEMATIC
97
-  #define MSG_VA_JERK                       _UxGT("Va-jerk")
98
-  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
99
-  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
100
-#else
101
-  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
102
-  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
103
-  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
104
-#endif
105
-#define MSG_VE_JERK                         _UxGT("Ve-jerk")
106
-#define MSG_VMAX                            _UxGT(" Vmax ")
107
-#define MSG_VMIN                            _UxGT("Vmin")
108
-#define MSG_VTRAV_MIN                       _UxGT("VTrav min")
109
-#define MSG_AMAX                            _UxGT("Amax ")
110
-#define MSG_A_RETRACT                       _UxGT("A-retracção")
111
-#define MSG_A_TRAVEL                        _UxGT("A-movimento")
112
-#define MSG_STEPS_PER_MM                    _UxGT("Passo/mm")
113
-#if IS_KINEMATIC
114
-  #define MSG_ASTEPS                        _UxGT("A passo/mm")
115
-  #define MSG_BSTEPS                        _UxGT("B passo/mm")
116
-  #define MSG_CSTEPS                        _UxGT("C passo/mm")
117
-#else
118
-  #define MSG_ASTEPS                        _UxGT("X passo/mm")
119
-  #define MSG_BSTEPS                        _UxGT("Y passo/mm")
120
-  #define MSG_CSTEPS                        _UxGT("Z passo/mm")
121
-#endif
122
-#define MSG_ESTEPS                          _UxGT("E passo/mm")
123
-#define MSG_E0_STEPS                        _UxGT("E1 passo/mm")
124
-#define MSG_E1_STEPS                        _UxGT("E2 passo/mm")
125
-#define MSG_E2_STEPS                        _UxGT("E3 passo/mm")
126
-#define MSG_E3_STEPS                        _UxGT("E4 passo/mm")
127
-#define MSG_E4_STEPS                        _UxGT("E5 passo/mm")
128
-#define MSG_E5_STEPS                        _UxGT("E6 passo/mm")
129
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
130
-#define MSG_MOTION                          _UxGT("Movimento")
131
-#define MSG_FILAMENT                        _UxGT("Filamento")
132
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E em mm3")
133
-#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Diam.")
134
-#define MSG_CONTRAST                        _UxGT("Contraste")
135
-#define MSG_STORE_EEPROM                    _UxGT("Guardar na memoria")
136
-#define MSG_LOAD_EEPROM                     _UxGT("Carregar da memoria")
137
-#define MSG_RESTORE_FAILSAFE                _UxGT("Rest. de emergen.")
138
-#define MSG_REFRESH                         LCD_STR_REFRESH _UxGT(" Recarregar")
139
-#define MSG_WATCH                           _UxGT("Monitorizar")
140
-#define MSG_PREPARE                         _UxGT("Preparar")
141
-#define MSG_TUNE                            _UxGT("Afinar")
142
-#define MSG_PAUSE_PRINT                     _UxGT("Pausar impressão")
143
-#define MSG_RESUME_PRINT                    _UxGT("Retomar impressão")
144
-#define MSG_STOP_PRINT                      _UxGT("Parar impressão")
145
-#define MSG_MEDIA_MENU                      _UxGT("Imprimir do SD")
146
-#define MSG_NO_MEDIA                        _UxGT("Sem cartão SD")
147
-#define MSG_DWELL                           _UxGT("Em espera...")
148
-#define MSG_USERWAIT                        _UxGT("Á espera de ordem")
149
-#define MSG_PRINT_ABORTED                   _UxGT("Impressão cancelada")
150
-#define MSG_NO_MOVE                         _UxGT("Sem movimento")
151
-#define MSG_KILLED                          _UxGT("EMERGÊNCIA. ")
152
-#define MSG_STOPPED                         _UxGT("PARADO. ")
153
-#define MSG_CONTROL_RETRACT                 _UxGT(" Retrair mm")
154
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Troca Retrair mm")
155
-#define MSG_CONTROL_RETRACTF                _UxGT(" Retrair  V")
156
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT(" Levantar mm")
157
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT(" DesRet mm")
158
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Troca DesRet mm")
159
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT(" DesRet  V")
160
-#define MSG_AUTORETRACT                     _UxGT(" AutoRetr.")
161
-#define MSG_FILAMENTCHANGE                  _UxGT("Trocar filamento")
162
-#define MSG_INIT_MEDIA                      _UxGT("Inici. cartão SD")
163
-#define MSG_CHANGE_MEDIA                    _UxGT("Trocar cartão SD")
164
-#define MSG_ZPROBE_OUT                      _UxGT("Sensor fora/base")
165
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s first")
166
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Desvio Z")
167
-#define MSG_BABYSTEP_X                      _UxGT("Babystep X")
168
-#define MSG_BABYSTEP_Y                      _UxGT("Babystep Y")
169
-#define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
170
-#define MSG_ENDSTOP_ABORT                   _UxGT("Fim de curso")
171
-#define MSG_HEATING_FAILED_LCD              _UxGT("Aquecimento falhou")
172
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Err: REDUNDANT TEMP")
173
-#define MSG_THERMAL_RUNAWAY                 _UxGT("THERMAL RUNAWAY")
174
-#define MSG_ERR_MAXTEMP                     _UxGT("Err: T Máxima")
175
-#define MSG_ERR_MINTEMP                     _UxGT("Err: T Mínima")
176
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Err: T Base Máxima")
177
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Err: T Base Mínima")
178
-#define MSG_HEATING                         _UxGT("Aquecendo...")
179
-#define MSG_BED_HEATING                     _UxGT("Aquecendo base...")
180
-#define MSG_DELTA_CALIBRATE                 _UxGT("Calibração Delta")
181
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Calibrar X")
182
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Calibrar Y")
183
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Calibrar Z")
184
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrar Centro")
35
+namespace Language_pt {
36
+  using namespace Language_en; // Inherit undefined strings from English
185 37
 
186
-#define MSG_LCD_ENDSTOPS                    _UxGT("Fim de curso")
38
+  constexpr uint8_t    CHARSIZE                            = 2;
39
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Portuguese");
187 40
 
188
-#define MSG_EXPECTED_PRINTER                _UxGT("Impressora Incorreta")
41
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" pronta.");
42
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Cartão inserido");
43
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Cartão removido");
44
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu principal");
45
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Desactivar motores");
46
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Ir para origem");
47
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Ir para origem X");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Ir para origem Y");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Ir para origem Z");
50
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Indo para origem");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Click para iniciar");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Próximo ponto");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Pronto !");
54
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Definir desvio");
55
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offsets aplicados");
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_H0                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N0;
59
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N1;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N2;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N3;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N4;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N5;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N0;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N1;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N2;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N3;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N4;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N5;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
72
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Definições ") PREHEAT_1_LABEL;
74
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
75
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N0;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N1;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N2;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N3;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N4;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N5;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico");
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N0;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N1;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N2;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N3;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N4;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N5;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" Tudo");
89
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Definições ") PREHEAT_2_LABEL;
91
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Arrefecer");
92
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ligar");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Desligar");
94
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrudir");
95
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retrair");
96
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Mover eixo");
97
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mover X");
98
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mover Y");
99
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mover Z");
100
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Mover Extrusor");
101
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Mover Extrusor ") LCD_STR_E0;
102
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Mover Extrusor ") LCD_STR_E1;
103
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Mover Extrusor ") LCD_STR_E2;
104
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Mover Extrusor ") LCD_STR_E3;
105
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Mover Extrusor ") LCD_STR_E4;
106
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Mover Extrusor ") LCD_STR_E5;
107
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mover %smm");
108
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mover 0.1mm");
109
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mover 1mm");
110
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mover 10mm");
111
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Velocidade");
112
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Base Z");
113
+  PROGMEM Language_Str MSG_NOZZLE                          = " " LCD_STR_THERMOMETER _UxGT(" Bico");
114
+  PROGMEM Language_Str MSG_NOZZLE_0                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N0;
115
+  PROGMEM Language_Str MSG_NOZZLE_1                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N1;
116
+  PROGMEM Language_Str MSG_NOZZLE_2                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N2;
117
+  PROGMEM Language_Str MSG_NOZZLE_3                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N3;
118
+  PROGMEM Language_Str MSG_NOZZLE_4                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N4;
119
+  PROGMEM Language_Str MSG_NOZZLE_5                        = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N5;
120
+  PROGMEM Language_Str MSG_BED                             = " " LCD_STR_THERMOMETER _UxGT(" Base");
121
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Vel. ventoinha");
122
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Vel. ventoinha 1");
123
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Vel. ventoinha 2");
124
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Vel. ventoinha 3");
125
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Fluxo");
126
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Fluxo ") LCD_STR_N0;
127
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Fluxo ") LCD_STR_N1;
128
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Fluxo ") LCD_STR_N2;
129
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Fluxo ") LCD_STR_N3;
130
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Fluxo ") LCD_STR_N4;
131
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Fluxo ") LCD_STR_N5;
132
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Controlo");
133
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
134
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
135
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fact");
136
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-retracção");
137
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-movimento");
138
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Passo/mm");
139
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT(" passo/mm");
140
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT(" passo/mm");
141
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT(" passo/mm");
142
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E passo/mm");
143
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" passo/mm");
144
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" passo/mm");
145
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" passo/mm");
146
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" passo/mm");
147
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" passo/mm");
148
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" passo/mm");
149
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
150
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Movimento");
151
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filamento");
152
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E em mm3");
153
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Fil. Diam.");
154
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Fil. Diam. ") LCD_STR_E0;
155
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Fil. Diam. ") LCD_STR_E1;
156
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Fil. Diam. ") LCD_STR_E2;
157
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Fil. Diam. ") LCD_STR_E3;
158
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Fil. Diam. ") LCD_STR_E4;
159
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Fil. Diam. ") LCD_STR_E5;
160
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Contraste");
161
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Guardar na memoria");
162
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Carregar da memoria");
163
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Rest. de emergen.");
164
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH _UxGT(" Recarregar");
165
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Monitorizar");
166
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Preparar");
167
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Afinar");
168
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausar impressão");
169
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Retomar impressão");
170
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Parar impressão");
171
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Imprimir do SD");
172
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Sem cartão SD");
173
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Em espera...");
174
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Á espera de ordem");
175
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Impressão cancelada");
176
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Sem movimento");
177
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("EMERGÊNCIA. ");
178
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("PARADO. ");
179
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT(" Retrair mm");
180
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Troca Retrair mm");
181
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT(" Retrair  V");
182
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT(" Levantar mm");
183
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT(" DesRet mm");
184
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Troca DesRet mm");
185
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT(" DesRet  V");
186
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT(" AutoRetr.");
187
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Trocar filamento");
188
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Trocar filamento ") LCD_STR_E0;
189
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Trocar filamento ") LCD_STR_E1;
190
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Trocar filamento ") LCD_STR_E2;
191
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Trocar filamento ") LCD_STR_E3;
192
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Trocar filamento ") LCD_STR_E4;
193
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Trocar filamento ") LCD_STR_E5;
194
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Inici. cartão SD");
195
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Trocar cartão SD");
196
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sensor fora/base");
197
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Desvio Z");
198
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Fim de curso");
199
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Aquecimento falhou");
200
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Err: T Máxima");
201
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Err: T Mínima");
202
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Err: T Base Máxima");
203
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Err: T Base Mínima");
204
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Aquecendo...");
205
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Aquecendo base...");
206
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Calibração Delta");
207
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Calibrar X");
208
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Calibrar Y");
209
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Calibrar Z");
210
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Calibrar Centro");
211
+
212
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Fim de curso");
213
+
214
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Impressora Incorreta");
215
+}

+ 448
- 400
Marlin/src/lcd/language/language_pt_br.h Zobrazit soubor

@@ -29,416 +29,464 @@
29 29
  * See also http://marlinfw.org/docs/development/lcd_language.html
30 30
  *
31 31
  */
32
+namespace Language_pt_br {
33
+  using namespace Language_en; // Inherit undefined strings from English
32 34
 
33
-// Put characters here that should be displayed with M117
34
-//_UxGT("áãàçÉéêíóõ")
35
+  constexpr uint8_t    CHARSIZE                            = 2;
36
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Portuguese (BR)");
35 37
 
36
-#define CHARSIZE 2
38
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" pronto.");
37 39
 
38
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" pronto.")
40
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Voltar");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Cartão inserido");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Cartão removido");
43
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Fins de curso");
44
+  PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS               = _UxGT("Soft Fins curso");
45
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Menu principal");
46
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("Config. Avançada");
47
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("Configuração");
48
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Início automático");
49
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Desabilit. motores");
50
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Menu Debug");
51
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Testar Barra Progres");
52
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Ir a origem XYZ");
53
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Ir na origem X");
54
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Ir na origem Y");
55
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Ir na origem Z");
56
+  PROGMEM Language_Str MSG_AUTO_Z_ALIGN                    = _UxGT("Auto alinhar Z");
57
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Indo para origem");
58
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Clique para Iniciar");
59
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Próximo Ponto");
60
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Fim nivelação!");
61
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("Suavizar altura");
62
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Compensar origem");
63
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Alteração aplicada");
64
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Ajustar Origem");
65
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Extrusora ") PREHEAT_1_LABEL;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N0;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N1;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N2;
76
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N3;
77
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N4;
78
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N5;
79
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
80
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
81
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Ajustar ") PREHEAT_1_LABEL;
82
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N0;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N1;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N2;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N3;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N4;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N5;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Extrusora ") PREHEAT_2_LABEL;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N0;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N1;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N2;
93
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N3;
94
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N4;
95
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N5;
96
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Pre-aq.Todo ") PREHEAT_2_LABEL;
97
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Pre-aq.Mesa ") PREHEAT_2_LABEL;
98
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Ajustar ") PREHEAT_2_LABEL;
99
+  PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Customizar Pre-aq.");
100
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Esfriar");
101
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Ligar");
102
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Desligar");
103
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Extrusar");
104
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Retrair");
105
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Mover eixo");
106
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Nivelação Mesa");
107
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Nivelar Mesa");
108
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("Nivelar Cantos");
109
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("Próximo Canto");
110
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("Editar Malha");
111
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("Fim da Edição");
112
+  PROGMEM Language_Str MSG_MESH_X                          = _UxGT("Índice X");
113
+  PROGMEM Language_Str MSG_MESH_Y                          = _UxGT("Índice Y");
114
+  PROGMEM Language_Str MSG_MESH_EDIT_Z                     = _UxGT("Valor Z");
115
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("Comando customizado");
39 116
 
40
-#define MSG_BACK                            _UxGT("Voltar")
41
-#define MSG_MEDIA_INSERTED                  _UxGT("Cartão inserido")
42
-#define MSG_MEDIA_REMOVED                   _UxGT("Cartão removido")
43
-#define MSG_LCD_ENDSTOPS                    _UxGT("Fins de curso")
44
-#define MSG_LCD_SOFT_ENDSTOPS               _UxGT("Soft Fins curso")
45
-#define MSG_MAIN                            _UxGT("Menu principal")
46
-#define MSG_ADVANCED_SETTINGS               _UxGT("Config. Avançada")
47
-#define MSG_CONFIGURATION                   _UxGT("Configuração")
48
-#define MSG_AUTOSTART                       _UxGT("Início automático")
49
-#define MSG_DISABLE_STEPPERS                _UxGT("Desabilit. motores")
50
-#define MSG_DEBUG_MENU                      _UxGT("Menu Debug")
51
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Testar Barra Progres")
52
-#define MSG_AUTO_HOME                       _UxGT("Ir a origem XYZ")
53
-#define MSG_AUTO_HOME_X                     _UxGT("Ir na origem X")
54
-#define MSG_AUTO_HOME_Y                     _UxGT("Ir na origem Y")
55
-#define MSG_AUTO_HOME_Z                     _UxGT("Ir na origem Z")
56
-#define MSG_AUTO_Z_ALIGN                    _UxGT("Auto alinhar Z")
57
-#define MSG_LEVEL_BED_HOMING                _UxGT("Indo para origem")
58
-#define MSG_LEVEL_BED_WAITING               _UxGT("Clique para Iniciar")
59
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Próximo Ponto")
60
-#define MSG_LEVEL_BED_DONE                  _UxGT("Fim nivelação!")
61
-#define MSG_Z_FADE_HEIGHT                   _UxGT("Suavizar altura")
62
-#define MSG_SET_HOME_OFFSETS                _UxGT("Compensar origem")
63
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Alteração aplicada")
64
-#define MSG_SET_ORIGIN                      _UxGT("Ajustar Origem")
65
-#define MSG_PREHEAT_1                       _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
66
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
67
-#define MSG_PREHEAT_1_ALL                   _UxGT("Pre-aq.Todo " PREHEAT_1_LABEL)
68
-#define MSG_PREHEAT_1_END                   _UxGT("Extrusora " PREHEAT_1_LABEL)
69
-#define MSG_PREHEAT_1_BEDONLY               _UxGT("Pre-aq.Mesa " PREHEAT_1_LABEL)
70
-#define MSG_PREHEAT_1_SETTINGS              _UxGT("Ajustar " PREHEAT_1_LABEL)
71
-#define MSG_PREHEAT_2                       _UxGT("Pre-aquecer " PREHEAT_2_LABEL)
72
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
73
-#define MSG_PREHEAT_2_ALL                   _UxGT("Pre-aq.Todo " PREHEAT_2_LABEL)
74
-#define MSG_PREHEAT_2_END                   _UxGT("Extrusora " PREHEAT_2_LABEL)
75
-#define MSG_PREHEAT_2_BEDONLY               _UxGT("Pre-aq.Mesa " PREHEAT_2_LABEL)
76
-#define MSG_PREHEAT_2_SETTINGS              _UxGT("Ajustar " PREHEAT_2_LABEL)
77
-#define MSG_PREHEAT_CUSTOM                  _UxGT("Customizar Pre-aq.")
78
-#define MSG_COOLDOWN                        _UxGT("Esfriar")
79
-#define MSG_SWITCH_PS_ON                    _UxGT("Ligar")
80
-#define MSG_SWITCH_PS_OFF                   _UxGT("Desligar")
81
-#define MSG_EXTRUDE                         _UxGT("Extrusar")
82
-#define MSG_RETRACT                         _UxGT("Retrair")
83
-#define MSG_MOVE_AXIS                       _UxGT("Mover eixo")
84
-#define MSG_BED_LEVELING                    _UxGT("Nivelação Mesa")
85
-#define MSG_LEVEL_BED                       _UxGT("Nivelar Mesa")
86
-#define MSG_LEVEL_CORNERS                   _UxGT("Nivelar Cantos")
87
-#define MSG_NEXT_CORNER                     _UxGT("Próximo Canto")
88
-#define MSG_EDIT_MESH                       _UxGT("Editar Malha")
89
-#define MSG_EDITING_STOPPED                 _UxGT("Fim da Edição")
90
-#define MSG_MESH_X                          _UxGT("Índice X")
91
-#define MSG_MESH_Y                          _UxGT("Índice Y")
92
-#define MSG_MESH_EDIT_Z                     _UxGT("Valor Z")
93
-#define MSG_USER_MENU                       _UxGT("Comando customizado")
117
+  PROGMEM Language_Str MSG_IDEX_MENU                       = _UxGT("Modo IDEX");
118
+  PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK              = _UxGT("Auto-Estacionar");
119
+  PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE             = _UxGT("Duplicação");
120
+  PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY         = _UxGT("Cópia espelhada");
121
+  PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL             = _UxGT("Controle Total");
122
+  PROGMEM Language_Str MSG_X_OFFSET                        = _UxGT("2o bico X");
123
+  PROGMEM Language_Str MSG_Y_OFFSET                        = _UxGT("2o bico Y");
124
+  PROGMEM Language_Str MSG_Z_OFFSET                        = _UxGT("2o bico Z");
94 125
 
95
-#define MSG_IDEX_MENU                       _UxGT("Modo IDEX")
96
-#define MSG_IDEX_MODE_AUTOPARK              _UxGT("Auto-Estacionar")
97
-#define MSG_IDEX_MODE_DUPLICATE             _UxGT("Duplicação")
98
-#define MSG_IDEX_MODE_MIRRORED_COPY         _UxGT("Cópia espelhada")
99
-#define MSG_IDEX_MODE_FULL_CTRL             _UxGT("Controle Total")
100
-#define MSG_X_OFFSET                        _UxGT("2o bico X")
101
-#define MSG_Y_OFFSET                        _UxGT("2o bico Y")
102
-#define MSG_Z_OFFSET                        _UxGT("2o bico Z")
126
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("Executando G29");
127
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("Ferramentas UBL");
128
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("Nivel. Mesa Unif.");
129
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("Fazer malha manual");
130
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("Calçar e calibrar");
131
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("Medir");
132
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("Remover e calibrar");
133
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("Movendo para Próximo");
134
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("Ativar UBL");
135
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("Desativar UBL");
136
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("Temp. Mesa");
137
+  PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM             = _UxGT("Bed Temp");
138
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("Temp. Extrusora");
139
+  PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM          = _UxGT("Hotend Temp");
140
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Editar Malha");
141
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("Editar Malha Custom");
142
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("Ajuste Fino da Malha");
143
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Fim da Edição");
144
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Montar Malha Custom");
145
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Montar ");
146
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Montar ") PREHEAT_1_LABEL;
147
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Montar ") PREHEAT_2_LABEL;
148
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Montar Malha fria");
149
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Ajustar Altura");
150
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Quant. de Altura");
151
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Validar Malha");
152
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Checar ") PREHEAT_1_LABEL;
153
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Checar ") PREHEAT_2_LABEL;
154
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Validar Malha Custom");
155
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Continuar Malha");
156
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Nivelação da Malha");
157
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("Nivelação 3 pontos");
158
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("Nivelação Grid");
159
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("Nivelar Malha");
160
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("Cantos");
161
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("Tipo de Mapa");
162
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("Salvar Mapa da Malha");
163
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("Enviar Para Host");
164
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("Salvar Malha CSV");
165
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("Salvar Backup");
166
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("Informação do UBL");
167
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("Qtd de Enchimento");
168
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("Enchimento Manual");
169
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("Enchimento Smart");
170
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("Preencher malha");
171
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("Invalidar tudo");
172
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("Invalidar próximo");
173
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("Ajuste Fino de Todos");
174
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("Ajustar Mais Próximo");
175
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("Armazenamento Malha");
176
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("Slot de Memória");
177
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("Ler Malha");
178
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("Salvar Malha");
179
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 Malha %i carregada");
180
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 Malha %i salva");
181
+  PROGMEM Language_Str MSG_UBL_NO_STORAGE                  = _UxGT("Sem armazenamento");
182
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("Erro ao salvar UBL");
183
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("Erro no restauro UBL");
184
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Compensação Z parou");
185
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("UBL passo a passo");
186
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1.Montar Malha fria");
187
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2.Enchimento Smart");
188
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3.Validar Malha");
189
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4.Ajuste Fino de Todos");
190
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5.Validar Malha");
191
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6.Ajuste Fino de Todos");
192
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7.Salvar Malha");
103 193
 
104
-#define MSG_UBL_DOING_G29                   _UxGT("Executando G29")
105
-#define MSG_UBL_TOOLS                       _UxGT("Ferramentas UBL")
106
-#define MSG_UBL_LEVEL_BED                   _UxGT("Nivel. Mesa Unif.")
107
-#define MSG_UBL_MANUAL_MESH                 _UxGT("Fazer malha manual")
108
-#define MSG_UBL_BC_INSERT                   _UxGT("Calçar e calibrar")
109
-#define MSG_UBL_BC_INSERT2                  _UxGT("Medir")
110
-#define MSG_UBL_BC_REMOVE                   _UxGT("Remover e calibrar")
111
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Movendo para Próximo")
112
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("Ativar UBL")
113
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Desativar UBL")
114
-#define MSG_UBL_SET_TEMP_BED                _UxGT("Temp. Mesa")
115
-#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
116
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("Temp. Extrusora")
117
-#define MSG_UBL_HOTEND_TEMP_CUSTOM          MSG_UBL_SET_TEMP_HOTEND
118
-#define MSG_UBL_MESH_EDIT                   _UxGT("Editar Malha")
119
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Editar Malha Custom")
120
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Ajuste Fino da Malha")
121
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Fim da Edição")
122
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Montar Malha Custom")
123
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Montar ")
124
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("Montar " PREHEAT_1_LABEL)
125
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("Montar " PREHEAT_2_LABEL)
126
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Montar Malha fria")
127
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Ajustar Altura")
128
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Quant. de Altura")
129
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Validar Malha")
130
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("Checar " PREHEAT_1_LABEL)
131
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("Checar " PREHEAT_2_LABEL)
132
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Validar Malha Custom")
133
-#define MSG_UBL_CONTINUE_MESH               _UxGT("Continuar Malha")
134
-#define MSG_UBL_MESH_LEVELING               _UxGT("Nivelação da Malha")
135
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("Nivelação 3 pontos")
136
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Nivelação Grid")
137
-#define MSG_UBL_MESH_LEVEL                  _UxGT("Nivelar Malha")
138
-#define MSG_UBL_SIDE_POINTS                 _UxGT("Cantos")
139
-#define MSG_UBL_MAP_TYPE                    _UxGT("Tipo de Mapa")
140
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("Salvar Mapa da Malha")
141
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Enviar Para Host")
142
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Salvar Malha CSV")
143
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Salvar Backup")
144
-#define MSG_UBL_INFO_UBL                    _UxGT("Informação do UBL")
145
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Qtd de Enchimento")
146
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("Enchimento Manual")
147
-#define MSG_UBL_SMART_FILLIN                _UxGT("Enchimento Smart")
148
-#define MSG_UBL_FILLIN_MESH                 _UxGT("Preencher malha")
149
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("Invalidar tudo")
150
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Invalidar próximo")
151
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Ajuste Fino de Todos")
152
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Ajustar Mais Próximo")
153
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Armazenamento Malha")
154
-#define MSG_UBL_STORAGE_SLOT                _UxGT("Slot de Memória")
155
-#define MSG_UBL_LOAD_MESH                   _UxGT("Ler Malha")
156
-#define MSG_UBL_SAVE_MESH                   _UxGT("Salvar Malha")
157
-#define MSG_MESH_LOADED                     _UxGT("Malha %i carregada")
158
-#define MSG_MESH_SAVED                      _UxGT("Malha %i salva")
159
-#define MSG_UBL_NO_STORAGE                  _UxGT("Sem armazenamento")
160
-#define MSG_UBL_SAVE_ERROR                  _UxGT("Erro ao salvar UBL")
161
-#define MSG_UBL_RESTORE_ERROR               _UxGT("Erro no restauro UBL")
162
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Compensação Z parou")
163
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("UBL passo a passo")
164
-#define MSG_LED_CONTROL                     _UxGT("Controle do LED")
165
-#define MSG_LEDS                            _UxGT("Luz")
166
-#define MSG_LED_PRESETS                     _UxGT("Configuração da Luz")
167
-#define MSG_SET_LEDS_RED                    _UxGT("Luz Vermelha")
168
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Luz Laranja")
169
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Luz Amarela")
170
-#define MSG_SET_LEDS_GREEN                  _UxGT("Luz Verde")
171
-#define MSG_SET_LEDS_BLUE                   _UxGT("Luz Azul")
172
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Luz Indigo")
173
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Luz Violeta")
174
-#define MSG_SET_LEDS_WHITE                  _UxGT("Luz Branca")
175
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Luz Padrão")
176
-#define MSG_CUSTOM_LEDS                     _UxGT("Luz Customizada")
177
-#define MSG_INTENSITY_R                     _UxGT("Intensidade Vermelho")
178
-#define MSG_INTENSITY_G                     _UxGT("Intensidade Verde")
179
-#define MSG_INTENSITY_B                     _UxGT("Intensidade Azul")
180
-#define MSG_INTENSITY_W                     _UxGT("Intensidade Branco")
181
-#define MSG_LED_BRIGHTNESS                  _UxGT("Brilho")
182
-#define MSG_MOVING                          _UxGT("Movendo...")
183
-#define MSG_FREE_XY                         _UxGT("Liberar XY")
184
-#define MSG_MOVE_X                          _UxGT("Mover X")
185
-#define MSG_MOVE_Y                          _UxGT("Mover Y")
186
-#define MSG_MOVE_Z                          _UxGT("Mover Z")
187
-#define MSG_MOVE_E                          _UxGT("Mover Extrusor")
188
-#define MSG_HOTEND_TOO_COLD                 _UxGT("Extrus. mto fria")
189
-#define MSG_MOVE_Z_DIST                     _UxGT("Mover %smm")
190
-#define MSG_MOVE_01MM                       _UxGT("Mover 0.1mm")
191
-#define MSG_MOVE_1MM                        _UxGT("Mover 1mm")
192
-#define MSG_MOVE_10MM                       _UxGT("Mover 10mm")
193
-#define MSG_SPEED                           _UxGT("Velocidade")
194
-#define MSG_BED_Z                           _UxGT("Base Z")
195
-#define MSG_NOZZLE                          _UxGT("Bocal")
196
-#define MSG_BED                             _UxGT("Mesa")
197
-#define MSG_FAN_SPEED                       _UxGT("Vel. Ventoinha")
198
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("+Vel. Ventoinha")
199
-#define MSG_FLOW                            _UxGT("Vazão")
200
-#define MSG_CONTROL                         _UxGT("Controle")
201
-#define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" Min")
202
-#define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" Máx")
203
-#define MSG_FACTOR                          LCD_STR_THERMOMETER _UxGT(" Fator")
204
-#define MSG_AUTOTEMP                        _UxGT("Temp. Automática")
205
-#define MSG_LCD_ON                          _UxGT("Ligado")
206
-#define MSG_LCD_OFF                         _UxGT("Desligado")
207
-#define MSG_PID_P                           _UxGT("PID-P")
208
-#define MSG_PID_I                           _UxGT("PID-I")
209
-#define MSG_PID_D                           _UxGT("PID-D")
210
-#define MSG_PID_C                           _UxGT("PID-C")
211
-#define MSG_SELECT                          _UxGT("Selecionar")
212
-#define MSG_ACC                             _UxGT("Acel.")
213
-#define MSG_JERK                            _UxGT("Arrancada")
214
-#if IS_KINEMATIC
215
-  #define MSG_VA_JERK                       _UxGT("arrancada VA")
216
-  #define MSG_VB_JERK                       _UxGT("arrancada VB")
217
-  #define MSG_VC_JERK                       _UxGT("arrancada VC")
218
-#else
219
-  #define MSG_VA_JERK                       _UxGT("arrancada VX")
220
-  #define MSG_VB_JERK                       _UxGT("arrancada VY")
221
-  #define MSG_VC_JERK                       _UxGT("arrancada VZ")
222
-#endif
223
-#define MSG_VE_JERK                         _UxGT("arrancada VE")
224
-#define MSG_JUNCTION_DEVIATION              _UxGT("Desv. Junção")
225
-#define MSG_VELOCITY                        _UxGT("Velocidade")
226
-#define MSG_VMAX                            _UxGT("Vmax ")
227
-#define MSG_VMIN                            _UxGT("Vmin")
228
-#define MSG_VTRAV_MIN                       _UxGT("VDeslocamento min")
229
-#define MSG_ACCELERATION                    _UxGT("Aceleração")
230
-#define MSG_AMAX                            _UxGT("Amax ")
231
-#define MSG_A_RETRACT                       _UxGT("Retrair A")
232
-#define MSG_A_TRAVEL                        _UxGT("Movimento A")
233
-#define MSG_STEPS_PER_MM                    _UxGT("Passo/mm")
234
-#if IS_KINEMATIC
235
-  #define MSG_ASTEPS                        _UxGT("Passo A/mm")
236
-  #define MSG_BSTEPS                        _UxGT("Passo B/mm")
237
-  #define MSG_CSTEPS                        _UxGT("Passo C/mm")
238
-#else
239
-  #define MSG_ASTEPS                        _UxGT("Passo X/mm")
240
-  #define MSG_BSTEPS                        _UxGT("Passo Y/mm")
241
-  #define MSG_CSTEPS                        _UxGT("Passo Z/mm")
242
-#endif
243
-#define MSG_ESTEPS                          _UxGT("E/mm")
244
-#define MSG_E0_STEPS                        _UxGT("E1/mm")
245
-#define MSG_E1_STEPS                        _UxGT("E2/mm")
246
-#define MSG_E2_STEPS                        _UxGT("E3/mm")
247
-#define MSG_E3_STEPS                        _UxGT("E4/mm")
248
-#define MSG_E4_STEPS                        _UxGT("E5/mm")
249
-#define MSG_E5_STEPS                        _UxGT("E6/mm")
250
-#define MSG_TEMPERATURE                     _UxGT("Temperatura")
251
-#define MSG_MOTION                          _UxGT("Movimento")
252
-#define MSG_FILAMENT                        _UxGT("Filamento")
253
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("Extrusão em mm3")
254
-#define MSG_FILAMENT_DIAM                   _UxGT("Diâmetro Fil.")
255
-#define MSG_FILAMENT_UNLOAD                 _UxGT("Descarr. mm")
256
-#define MSG_FILAMENT_LOAD                   _UxGT("Carregar mm")
257
-#define MSG_ADVANCE_K                       _UxGT("Avanço K")
258
-#define MSG_CONTRAST                        _UxGT("Contraste")
259
-#define MSG_STORE_EEPROM                    _UxGT("Salvar Configuração")
260
-#define MSG_LOAD_EEPROM                     _UxGT("Ler Configuração")
261
-#define MSG_RESTORE_FAILSAFE                _UxGT("Restauro seguro")
262
-#define MSG_INIT_EEPROM                     _UxGT("Iniciar EEPROM")
263
-#define MSG_MEDIA_UPDATE                    _UxGT("Atualiz. SD")
264
-#define MSG_RESET_PRINTER                   _UxGT("Resetar Impressora")
265
-#define MSG_REFRESH                         _UxGT("Atualização")
266
-#define MSG_WATCH                           _UxGT("Informações")
267
-#define MSG_PREPARE                         _UxGT("Preparar")
268
-#define MSG_TUNE                            _UxGT("Ajustar")
269
-#define MSG_PAUSE_PRINT                     _UxGT("Pausar impressão")
270
-#define MSG_RESUME_PRINT                    _UxGT("Resumir impressão")
271
-#define MSG_STOP_PRINT                      _UxGT("Parar impressão")
272
-#define MSG_OUTAGE_RECOVERY                 _UxGT("Recuperar Impressão")
273
-#define MSG_MEDIA_MENU                      _UxGT("Imprimir do SD")
274
-#define MSG_NO_MEDIA                        _UxGT("Sem cartão SD")
275
-#define MSG_DWELL                           _UxGT("Dormindo...")
276
-#define MSG_USERWAIT                        _UxGT("Clique para retomar")
277
-#define MSG_PRINT_PAUSED                    _UxGT("Impressão Pausada")
278
-#define MSG_PRINTING                        _UxGT("Imprimindo...")
279
-#define MSG_PRINT_ABORTED                   _UxGT("Impressão Abortada")
280
-#define MSG_NO_MOVE                         _UxGT("Sem movimento")
281
-#define MSG_KILLED                          _UxGT("PARADA DE EMERGÊNCIA")
282
-#define MSG_STOPPED                         _UxGT("PAROU. ")
283
-#define MSG_CONTROL_RETRACT                 _UxGT("Retrair mm")
284
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Retrair Troca mm")
285
-#define MSG_CONTROL_RETRACTF                _UxGT("Retrair V")
286
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Saltar mm")
287
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Des-Retrair mm")
288
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Des-RetTroca mm")
289
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Des-Retrair  V")
290
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("Des-RetTroca V")
291
-#define MSG_AUTORETRACT                     _UxGT("Retração Automática")
292
-#define MSG_FILAMENT_SWAP_LENGTH            _UxGT("Distancia Retração")
293
-#define MSG_TOOL_CHANGE                     _UxGT("Mudar Ferramenta")
294
-#define MSG_TOOL_CHANGE_ZLIFT               _UxGT("Levantar Z")
295
-#define MSG_SINGLENOZZLE_PRIME_SPD          _UxGT("Preparar Veloc.")
296
-#define MSG_SINGLENOZZLE_RETRACT_SPD        _UxGT("Veloc. Retração")
297
-#define MSG_FILAMENTCHANGE                  _UxGT("Trocar Filamento")
298
-#define MSG_FILAMENTLOAD                    _UxGT("Carregar Filamento")
299
-#define MSG_FILAMENTUNLOAD                  _UxGT("Descarreg. Filamento")
300
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("Descarregar Todos")
301
-#define MSG_INIT_MEDIA                      _UxGT("Iniciar SD")
302
-#define MSG_CHANGE_MEDIA                    _UxGT("Trocar SD")
303
-#define MSG_ZPROBE_OUT                      _UxGT("Sonda fora da mesa")
304
-#define MSG_SKEW_FACTOR                     _UxGT("Fator de Cisalho")
305
-#define MSG_BLTOUCH                         _UxGT("BLTouch")
306
-#define MSG_BLTOUCH_SELFTEST                _UxGT("Testar BLTouch")
307
-#define MSG_BLTOUCH_RESET                   _UxGT("Reiniciar BLTouch")
308
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("Estender BLTouch")
309
-#define MSG_BLTOUCH_STOW                    _UxGT("Recolher BLTouch")
310
-#define MSG_MANUAL_DEPLOY                   _UxGT("Estender Sonda-Z")
311
-#define MSG_MANUAL_STOW                     _UxGT("Recolher Sonda-Z")
194
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("Controle do LED");
195
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("Luz");
196
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("Configuração da Luz");
197
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("Luz Vermelha");
198
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("Luz Laranja");
199
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("Luz Amarela");
200
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("Luz Verde");
201
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("Luz Azul");
202
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("Luz Indigo");
203
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("Luz Violeta");
204
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("Luz Branca");
205
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("Luz Padrão");
206
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("Luz Customizada");
207
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("Intensidade Vermelho");
208
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("Intensidade Verde");
209
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("Intensidade Azul");
210
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("Intensidade Branco");
211
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("Brilho");
212
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Movendo...");
213
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Liberar XY");
214
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Mover X");
215
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Mover Y");
216
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Mover Z");
217
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Mover Extrusor");
218
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Mover Extrusor ") LCD_STR_E0;
219
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Mover Extrusor ") LCD_STR_E1;
220
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Mover Extrusor ") LCD_STR_E2;
221
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Mover Extrusor ") LCD_STR_E3;
222
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Mover Extrusor ") LCD_STR_E4;
223
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Mover Extrusor ") LCD_STR_E5;
224
+  PROGMEM Language_Str MSG_HOTEND_TOO_COLD                 = _UxGT("Extrus. mto fria");
225
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Mover %smm");
226
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Mover 0.1mm");
227
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Mover 1mm");
228
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Mover 10mm");
229
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Velocidade");
230
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Base Z");
231
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Bocal");
232
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Bocal ") LCD_STR_N0;
233
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Bocal ") LCD_STR_N1;
234
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Bocal ") LCD_STR_N2;
235
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Bocal ") LCD_STR_N3;
236
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Bocal ") LCD_STR_N4;
237
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Bocal ") LCD_STR_N5;
238
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Mesa");
239
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Vel. Ventoinha");
240
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Vel. Ventoinha 1");
241
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Vel. Ventoinha 2");
242
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Vel. Ventoinha 3");
243
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("+Vel. Ventoinha");
244
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("+Vel. Ventoinha 1");
245
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("+Vel. Ventoinha 2");
246
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("+Vel. Ventoinha 3");
247
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Vazão");
248
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Vazão ") LCD_STR_N0;
249
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Vazão ") LCD_STR_N1;
250
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Vazão ") LCD_STR_N2;
251
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Vazão ") LCD_STR_N3;
252
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Vazão ") LCD_STR_N4;
253
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Vazão ") LCD_STR_N5;
254
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Controle");
255
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
256
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Máx");
257
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Fator");
258
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Temp. Automática");
259
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Ligado");
260
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Desligado");
261
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Selecionar");
262
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Selecionar ") LCD_STR_E0;
263
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Selecionar ") LCD_STR_E1;
264
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Selecionar ") LCD_STR_E2;
265
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Selecionar ") LCD_STR_E3;
266
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Selecionar ") LCD_STR_E4;
267
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Selecionar ") LCD_STR_E5;
268
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Acel.");
269
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Arrancada");
270
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("arrancada V") LCD_STR_A;
271
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("arrancada V") LCD_STR_B;
272
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("arrancada V") LCD_STR_C;
273
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("arrancada VE");
274
+  PROGMEM Language_Str MSG_JUNCTION_DEVIATION              = _UxGT("Desv. Junção");
275
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("Velocidade");
276
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("VDeslocamento min");
277
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Aceleração");
278
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Retrair A");
279
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Movimento A");
280
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Passo/mm");
281
+  PROGMEM Language_Str MSG_A_STEPS                         = _UxGT("Passo ") LCD_STR_A _UxGT("/mm");
282
+  PROGMEM Language_Str MSG_B_STEPS                         = _UxGT("Passo ") LCD_STR_B _UxGT("/mm");
283
+  PROGMEM Language_Str MSG_C_STEPS                         = _UxGT("Passo ") LCD_STR_C _UxGT("/mm");
284
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E/mm");
285
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT("/mm");
286
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT("/mm");
287
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT("/mm");
288
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT("/mm");
289
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT("/mm");
290
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT("/mm");
291
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Temperatura");
292
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Movimento");
293
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filamento");
294
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("Extrusão em mm3");
295
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Diâmetro Fil.");
296
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Diâmetro Fil. ") LCD_STR_E0;
297
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Diâmetro Fil. ") LCD_STR_E1;
298
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Diâmetro Fil. ") LCD_STR_E2;
299
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Diâmetro Fil. ") LCD_STR_E3;
300
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Diâmetro Fil. ") LCD_STR_E4;
301
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Diâmetro Fil. ") LCD_STR_E5;
302
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("Descarr. mm");
303
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("Carregar mm");
304
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("Avanço K");
305
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("Avanço K ") LCD_STR_E0;
306
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("Avanço K ") LCD_STR_E1;
307
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("Avanço K ") LCD_STR_E2;
308
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("Avanço K ") LCD_STR_E3;
309
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("Avanço K ") LCD_STR_E4;
310
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("Avanço K ") LCD_STR_E5;
311
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Contraste");
312
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Salvar Configuração");
313
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Ler Configuração");
314
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Restauro seguro");
315
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("Iniciar EEPROM");
316
+  PROGMEM Language_Str MSG_MEDIA_UPDATE                    = _UxGT("Atualiz. SD");
317
+  PROGMEM Language_Str MSG_RESET_PRINTER                   = _UxGT("Resetar Impressora");
318
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Atualização");
319
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Informações");
320
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Preparar");
321
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Ajustar");
322
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Pausar impressão");
323
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Resumir impressão");
324
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Parar impressão");
325
+  PROGMEM Language_Str MSG_OUTAGE_RECOVERY                 = _UxGT("Recuperar Impressão");
326
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Imprimir do SD");
327
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Sem cartão SD");
328
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Dormindo...");
329
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Clique para retomar");
330
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("Impressão Pausada");
331
+  PROGMEM Language_Str MSG_PRINTING                        = _UxGT("Imprimindo...");
332
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Impressão Abortada");
333
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Sem movimento");
334
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("PARADA DE EMERGÊNCIA");
335
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("PAROU. ");
336
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Retrair mm");
337
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Retrair Troca mm");
338
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Retrair V");
339
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Saltar mm");
340
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Des-Retrair mm");
341
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Des-RetTroca mm");
342
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Des-Retrair  V");
343
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("Des-RetTroca V");
344
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Retração Automática");
345
+  PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH            = _UxGT("Distancia Retração");
346
+  PROGMEM Language_Str MSG_TOOL_CHANGE                     = _UxGT("Mudar Ferramenta");
347
+  PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT               = _UxGT("Levantar Z");
348
+  PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD          = _UxGT("Preparar Veloc.");
349
+  PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD        = _UxGT("Veloc. Retração");
350
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Trocar Filamento");
351
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Trocar Filamento ") LCD_STR_E0;
352
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Trocar Filamento ") LCD_STR_E1;
353
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Trocar Filamento ") LCD_STR_E2;
354
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Trocar Filamento ") LCD_STR_E3;
355
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Trocar Filamento ") LCD_STR_E4;
356
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Trocar Filamento ") LCD_STR_E5;
357
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("Carregar Filamento ") LCD_STR_E0;
358
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("Carregar Filamento ") LCD_STR_E1;
359
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("Carregar Filamento ") LCD_STR_E2;
360
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("Carregar Filamento ") LCD_STR_E3;
361
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("Carregar Filamento ") LCD_STR_E4;
362
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("Carregar Filamento ") LCD_STR_E5;
363
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("Descarreg. Filamento ") LCD_STR_E0;
364
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("Descarreg. Filamento ") LCD_STR_E1;
365
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("Descarreg. Filamento ") LCD_STR_E2;
366
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("Descarreg. Filamento ") LCD_STR_E3;
367
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("Descarreg. Filamento ") LCD_STR_E4;
368
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("Descarreg. Filamento ") LCD_STR_E5;
369
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("Descarregar Todos");
370
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Iniciar SD");
371
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Trocar SD");
372
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Sonda fora da mesa");
373
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("Fator de Cisalho");
374
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");
375
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("Testar BLTouch");
376
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Reiniciar BLTouch");
377
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("Estender BLTouch");
378
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("Recolher BLTouch");
379
+  PROGMEM Language_Str MSG_MANUAL_DEPLOY                   = _UxGT("Estender Sonda-Z");
380
+  PROGMEM Language_Str MSG_MANUAL_STOW                     = _UxGT("Recolher Sonda-Z");
312 381
 
313
-#define MSG_HOME_FIRST                      _UxGT("Home %s%s%s Primeiro")
314
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Compensar Sonda em Z")
315
-#define MSG_BABYSTEP_X                      _UxGT("Passinho X")
316
-#define MSG_BABYSTEP_Y                      _UxGT("Passinho Y")
317
-#define MSG_BABYSTEP_Z                      _UxGT("Passinho Z")
318
-#define MSG_ENDSTOP_ABORT                   _UxGT("Abortar Fim de Curso")
319
-#define MSG_HEATING_FAILED_LCD              _UxGT("Aquecimento falhou")
320
-#define MSG_HEATING_FAILED_LCD_BED          _UxGT("Aquecer mesa falhou")
321
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Erro:Temp Redundante")
322
-#define MSG_THERMAL_RUNAWAY                 _UxGT("ESCAPE TÉRMICO")
323
-#define MSG_THERMAL_RUNAWAY_BED             _UxGT("ESCAPE TÉRMICO MESA")
324
-#define MSG_ERR_MAXTEMP                     _UxGT("Erro:Temp Máxima")
325
-#define MSG_ERR_MINTEMP                     _UxGT("Erro:Temp Mínima")
326
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Erro:Temp Mesa Máx")
327
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Erro:Temp Mesa Mín")
328
-#define MSG_ERR_Z_HOMING                    _UxGT("Home XY Primeiro")
329
-#define MSG_HALTED                          _UxGT("IMPRESSORA PAROU")
330
-#define MSG_PLEASE_RESET                    _UxGT("Favor resetar")
331
-#define MSG_SHORT_DAY                       _UxGT("d")
332
-#define MSG_SHORT_HOUR                      _UxGT("h")
333
-#define MSG_SHORT_MINUTE                    _UxGT("m")
334
-#define MSG_HEATING                         _UxGT("Aquecendo...")
335
-#define MSG_COOLING                         _UxGT("Resfriando...")
336
-#define MSG_BED_HEATING                     _UxGT("Aquecendo mesa...")
337
-#define MSG_BED_COOLING                     _UxGT("Esfriando mesa...")
338
-#define MSG_DELTA_CALIBRATE                 _UxGT("Calibrar Delta")
339
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Calibrar X")
340
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Calibrar Y")
341
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Calibrar Z")
342
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrar Centro")
382
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Home %s%s%s Primeiro");
383
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Compensar Sonda em Z");
384
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Passinho X");
385
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Passinho Y");
386
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Passinho Z");
387
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Abortar Fim de Curso");
388
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Aquecimento falhou");
389
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED          = _UxGT("Aquecer mesa falhou");
390
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Erro:Temp Redundante");
391
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("ESCAPE TÉRMICO");
392
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED             = _UxGT("ESCAPE TÉRMICO MESA");
393
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Erro:Temp Máxima");
394
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Erro:Temp Mínima");
395
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Erro:Temp Mesa Máx");
396
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Erro:Temp Mesa Mín");
397
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Home XY Primeiro");
398
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("IMPRESSORA PAROU");
399
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Favor resetar");
400
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("d");
401
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("h");
402
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("m");
403
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Aquecendo...");
404
+  PROGMEM Language_Str MSG_COOLING                         = _UxGT("Resfriando...");
405
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Aquecendo mesa...");
406
+  PROGMEM Language_Str MSG_BED_COOLING                     = _UxGT("Esfriando mesa...");
407
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Calibrar Delta");
408
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Calibrar X");
409
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Calibrar Y");
410
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Calibrar Z");
411
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Calibrar Centro");
343 412
 
344
-#define MSG_DELTA_SETTINGS                  _UxGT("Configuração Delta")
345
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Auto-Calibração")
346
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Calibrar Altura")
347
-#define MSG_DELTA_Z_OFFSET_CALIBRATE        _UxGT("Desloc. Sonda Z")
348
-#define MSG_DELTA_DIAG_ROD                  _UxGT("Haste Diagonal")
349
-#define MSG_DELTA_HEIGHT                    _UxGT("Altura")
350
-#define MSG_DELTA_RADIUS                    _UxGT("Raio")
351
-#define MSG_INFO_MENU                       _UxGT("Sobre")
352
-#define MSG_INFO_PRINTER_MENU               _UxGT("Impressora")
353
-#define MSG_3POINT_LEVELING                 _UxGT("Nivelamento 3 pontos")
354
-#define MSG_LINEAR_LEVELING                 _UxGT("Nivelamento Linear")
355
-#define MSG_BILINEAR_LEVELING               _UxGT("Nivelamento Bilinear")
356
-#define MSG_UBL_LEVELING                    _UxGT("Nivelamento UBL")
357
-#define MSG_MESH_LEVELING                   _UxGT("Nivelamento da Malha")
358
-#define MSG_INFO_STATS_MENU                 _UxGT("Estatísticas")
359
-#define MSG_INFO_BOARD_MENU                 _UxGT("Info. da Placa")
360
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistores")
361
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extrusoras")
362
-#define MSG_INFO_BAUDRATE                   _UxGT("Taxa de Transmissão")
363
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocolo")
364
-#define MSG_CASE_LIGHT                      _UxGT("Luz da Impressora")
365
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Intensidade Brilho")
413
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("Configuração Delta");
414
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Auto-Calibração");
415
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Calibrar Altura");
416
+  PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE        = _UxGT("Desloc. Sonda Z");
417
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("Haste Diagonal");
418
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("Altura");
419
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("Raio");
420
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Sobre");
421
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Impressora");
422
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("Nivelamento 3 pontos");
423
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("Nivelamento Linear");
424
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("Nivelamento Bilinear");
425
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("Nivelamento UBL");
426
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("Nivelamento da Malha");
427
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Estatísticas");
428
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Info. da Placa");
429
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistores");
430
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Extrusoras");
431
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Taxa de Transmissão");
432
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protocolo");
433
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Luz da Impressora");
434
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("Intensidade Brilho");
366 435
 
367
-#define MSG_EXPECTED_PRINTER                _UxGT("Impressora Incorreta")
436
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Impressora Incorreta");
368 437
 
369
-#if LCD_WIDTH >= 20
370
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Total de Impressões")
371
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Realizadas")
372
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tempo de Impressão")
373
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Trabalho Mais longo")
374
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Total de Extrusão")
375
-#else
376
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Qtd de Impressões")
377
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Realizadas")
378
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tempo de Impressão")
379
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Maior trabalho")
380
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("T. Extrusão")
381
-#endif
438
+  #if LCD_WIDTH >= 20
439
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Total de Impressões");
440
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Realizadas");
441
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tempo de Impressão");
442
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Trabalho Mais longo");
443
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Total de Extrusão");
444
+  #else
445
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Qtd de Impressões");
446
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Realizadas");
447
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tempo de Impressão");
448
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Maior trabalho");
449
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("T. Extrusão");
450
+  #endif
382 451
 
383
-#define MSG_INFO_MIN_TEMP                   _UxGT("Temp Mín")
384
-#define MSG_INFO_MAX_TEMP                   _UxGT("Temp Máx")
385
-#define MSG_INFO_PSU                        _UxGT("PSU")
386
-#define MSG_DRIVE_STRENGTH                  _UxGT("Força do Motor")
387
-#define MSG_DAC_PERCENT                     _UxGT("Driver %")
388
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Escrever EEPROM DAC")
452
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Temp Mín");
453
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Temp Máx");
454
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("PSU");
455
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Força do Motor");
456
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Escrever EEPROM DAC");
389 457
 
390
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("IMPRESSÃO PAUSADA")
391
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("CARREGAR FILAMENTO")
392
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("DESCARREG. FILAMENTO")
393
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("Config. de Retomada")
394
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("Purgar mais")
395
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Continuar Impressão")
396
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Bocal: ")
397
-#define MSG_RUNOUT_SENSOR                   _UxGT("Sensor filamento")
398
-#define MSG_ERR_HOMING_FAILED               _UxGT("Falha ao ir à origem")
399
-#define MSG_ERR_PROBING_FAILED              _UxGT("Falha ao sondar")
400
-#define MSG_M600_TOO_COLD                   _UxGT("M600: Muito frio")
458
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("IMPRESSÃO PAUSADA");
459
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("CARREGAR FILAMENTO");
460
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("DESCARREG. FILAMENTO");
461
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("Config. de Retomada");
462
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("Purgar mais");
463
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Continuar Impressão");
464
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  Bocal: ");
465
+  PROGMEM Language_Str MSG_RUNOUT_SENSOR                   = _UxGT("Sensor filamento");
466
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("Falha ao ir à origem");
467
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("Falha ao sondar");
468
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: Muito frio");
401 469
 
402
-#if LCD_HEIGHT >= 4
403
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Aperte o botão para")
404
-  #define MSG_ADVANCED_PAUSE_WAITING_2      _UxGT("continuar impressão")
405
-
406
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Esperando o")
407
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("inicio da")
408
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("troca de filamento")
409
-
410
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Coloque filamento")
411
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("pressione o botão")
412
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("para continuar...")
413
-
414
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Pressione o botão")
415
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("p/ aquecer o bocal")
416
-
417
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Aquecendo o bocal")
418
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Aguarde...")
419
-
420
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Esperando")
421
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("remoção de filamento")
422
-
423
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Esperando")
424
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("filamento")
425
-
426
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Espere pela")
427
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("purga de filamento")
428
-
429
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Clique para finaliz.")
430
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_2  _UxGT("purga de filamento")
431
-
432
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Esperando impressão")
433
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("continuar")
434
-#else // LCD_HEIGHT < 4
435
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Clique p. continuar")
436
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Aguarde...")
437
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Insira e Clique")
438
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Aquecendo...")
439
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Ejetando...")
440
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Carregando...")
441
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Purgando...")
442
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Clique p. finalizar")
443
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Continuando...")
444
-#endif
470
+  #if LCD_HEIGHT >= 4
471
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_2_LINE("Aperte o botão para", "continuar impressão"));
472
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Esperando o", "inicio da", "troca de filamento"));
473
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Coloque filamento", "pressione o botão", "para continuar..."));
474
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Pressione o botão", "p/ aquecer o bocal"));
475
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Aquecendo o bocal", "Aguarde..."));
476
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Esperando", "remoção de filamento"));
477
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Esperando", "filamento"));
478
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_2_LINE("Espere pela", "purga de filamento"));
479
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_2_LINE("Clique para finaliz.", "purga de filamento"));
480
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Esperando impressão", "continuar"));
481
+  #else // LCD_HEIGHT < 4
482
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_1_LINE("Clique p. continuar"));
483
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Aguarde..."));
484
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Insira e Clique"));
485
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Aquecendo..."));
486
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Ejetando..."));
487
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Carregando..."));
488
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("Purgando..."));
489
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_1_LINE("Clique p. finalizar"));
490
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Continuando..."));
491
+  #endif
492
+}

+ 518
- 408
Marlin/src/lcd/language/language_ru.h Zobrazit soubor

@@ -28,434 +28,544 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
-
32 31
 #define DISPLAY_CHARSET_ISO10646_5
33
-#define CHARSIZE 2
34 32
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" готов.")
36
-#define MSG_BACK                            _UxGT("Назад")
37
-#define MSG_MEDIA_INSERTED                  _UxGT("Карта вставлена")
38
-#define MSG_MEDIA_REMOVED                   _UxGT("Карта извлечена")
39
-#define MSG_MEDIA_RELEASED                  _UxGT("SD карта не активна")
40
-#define MSG_LCD_ENDSTOPS                    _UxGT("Эндстопы") // Max length 8 characters
41
-#define MSG_LCD_SOFT_ENDSTOPS               _UxGT("Прогр. эндстопы")
42
-#define MSG_MAIN                            _UxGT("Меню")
43
-#define MSG_ADVANCED_SETTINGS               _UxGT("Другие настройки")
44
-#define MSG_CONFIGURATION                   _UxGT("Настройки")
45
-#define MSG_AUTOSTART                       _UxGT("Автостарт")
46
-#define MSG_DISABLE_STEPPERS                _UxGT("Выкл. двигатели")
47
-#define MSG_DEBUG_MENU                      _UxGT("Меню отладки")
48
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Тест индикатора")
49
-#define MSG_AUTO_HOME                       _UxGT("Авто парковка")
50
-#define MSG_AUTO_HOME_X                     _UxGT("Парковка X")
51
-#define MSG_AUTO_HOME_Y                     _UxGT("Парковка Y")
52
-#define MSG_AUTO_HOME_Z                     _UxGT("Парковка Z")
53
-#define MSG_LEVEL_BED_HOMING                _UxGT("Нулевое положение")
54
-#define MSG_LEVEL_BED_WAITING               _UxGT("Нажмите чтобы начать")
55
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Следующая точка")
56
-#define MSG_LEVEL_BED_DONE                  _UxGT("Выравнивание готово!")
57
-#define MSG_Z_FADE_HEIGHT                   _UxGT("Высота спада")
58
-#define MSG_SET_HOME_OFFSETS                _UxGT("Запомнить парковку")
59
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Коррекции применены")
60
-#define MSG_SET_ORIGIN                      _UxGT("Запомнить ноль")
61
-#define MSG_PREHEAT_1                       _UxGT("Преднагрев " PREHEAT_1_LABEL)
62
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
63
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" всё")
64
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" сопло")
65
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" стол")
66
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" настр.")
67
-#define MSG_PREHEAT_2                       _UxGT("Преднагрев " PREHEAT_2_LABEL)
68
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
69
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" всё")
70
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" сопло")
71
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" стол")
72
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" настр.")
73
-#define MSG_COOLDOWN                        _UxGT("Охлаждение")
74
-#define MSG_SWITCH_PS_ON                    _UxGT("Включить питание")
75
-#define MSG_SWITCH_PS_OFF                   _UxGT("Выключить питание")
76
-#define MSG_EXTRUDE                         _UxGT("Экструзия")
77
-#define MSG_RETRACT                         _UxGT("Втягивание")
78
-#define MSG_MOVE_AXIS                       _UxGT("Движение по осям")
79
-#define MSG_BED_LEVELING                    _UxGT("Калибровка стола")
80
-#define MSG_LEVEL_BED                       _UxGT("Калибровать стол")
81
-#define MSG_LEVEL_CORNERS                   _UxGT("Выровнять углы")
82
-#define MSG_NEXT_CORNER                     _UxGT("Следующий угол")
83
-#define MSG_EDIT_MESH                       _UxGT("Редактировать сетку")
84
-#define MSG_EDITING_STOPPED                 _UxGT("Ред. сетки завершено")
85
-#define MSG_USER_MENU                       _UxGT("Свои команды")
33
+namespace Language_ru {
34
+  using namespace Language_en; // Inherit undefined strings from English
35
+
36
+  constexpr uint8_t    CHARSIZE                            = 2;
37
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Russian");
38
+
39
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" готов.");
40
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Назад");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Карта вставлена");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Карта извлечена");
43
+  PROGMEM Language_Str MSG_MEDIA_RELEASED                  = _UxGT("SD карта не активна");
44
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Эндстопы"); // Max length 8 characters
45
+  PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS               = _UxGT("Прогр. эндстопы");
46
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Меню");
47
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("Другие настройки");
48
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("Настройки");
49
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Автостарт");
50
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Выкл. двигатели");
51
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Меню отладки");
52
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Тест индикатора");
53
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Авто парковка");
54
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Парковка X");
55
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Парковка Y");
56
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Парковка Z");
57
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Нулевое положение");
58
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Нажмите чтобы начать");
59
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Следующая точка");
60
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Выравнивание готово!");
61
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("Высота спада");
62
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Запомнить парковку");
63
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Коррекции применены");
64
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Запомнить ноль");
65
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
66
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N0;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N1;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N2;
76
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N3;
77
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N4;
78
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N5;
79
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" всё");
80
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" стол");
81
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" настр.");
82
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Преднагрев ") PREHEAT_2_LABEL;
83
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N0;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N1;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N2;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N3;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N4;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N5;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N0;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N1;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N2;
93
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N3;
94
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N4;
95
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N5;
96
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" всё");
97
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" стол");
98
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" настр.");
99
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Охлаждение");
100
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Включить питание");
101
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Выключить питание");
102
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Экструзия");
103
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Втягивание");
104
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Движение по осям");
105
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Калибровка стола");
106
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Калибровать стол");
107
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("Выровнять углы");
108
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("Следующий угол");
109
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("Редактировать сетку");
110
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("Ред. сетки завершено");
111
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("Свои команды");
86 112
 
87
-#define MSG_M48_TEST                        _UxGT("Проверка датчика Z")
88
-#define MSG_M48_DEVIATION                   _UxGT("Отклонение")
89
-#define MSG_M48_POINT                       _UxGT("Измерение")
113
+  PROGMEM Language_Str MSG_M48_TEST                        = _UxGT("Проверка датчика Z");
114
+  PROGMEM Language_Str MSG_M48_DEVIATION                   = _UxGT("Отклонение");
115
+  PROGMEM Language_Str MSG_M48_POINT                       = _UxGT("Измерение");
90 116
 
91
-// TODO: IDEX Menu
92
-#define MSG_OFFSETS_MENU                    _UxGT("Размещение сопел")
117
+  // TODO: IDEX Menu
118
+  PROGMEM Language_Str MSG_OFFSETS_MENU                    = _UxGT("Размещение сопел");
93 119
 
94
-#define MSG_X_OFFSET                        _UxGT("2-е сопло X")
95
-#define MSG_Y_OFFSET                        _UxGT("2-е сопло Y")
96
-#define MSG_Z_OFFSET                        _UxGT("2-е сопло Z")
120
+  PROGMEM Language_Str MSG_X_OFFSET                        = _UxGT("2-е сопло X");
121
+  PROGMEM Language_Str MSG_Y_OFFSET                        = _UxGT("2-е сопло Y");
122
+  PROGMEM Language_Str MSG_Z_OFFSET                        = _UxGT("2-е сопло Z");
97 123
 
98
-#define MSG_UBL_DOING_G29                   _UxGT("Выполняем G29")
99
-#define MSG_UBL_TOOLS                       _UxGT("Утилиты UBL")
100
-#define MSG_UBL_LEVEL_BED                   _UxGT("Калибровка UBL")
101
-#define MSG_UBL_MANUAL_MESH                 _UxGT("Постр. сетку от руки")
102
-#define MSG_UBL_BC_INSERT                   _UxGT("Пост. шимм и измер.")
103
-#define MSG_UBL_BC_INSERT2                  _UxGT("Измерение")
104
-#define MSG_UBL_BC_REMOVE                   _UxGT("Удал. и измер. стол")
105
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Двигаемся дальше")
106
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("Активировать UBL")
107
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Деактивировать UBL")
108
-#define MSG_UBL_SET_TEMP_BED                _UxGT("Температура стола")
109
-#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
110
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("Температура сопла")
111
-#define MSG_UBL_HOTEND_TEMP_CUSTOM          MSG_UBL_SET_TEMP_HOTEND
112
-#define MSG_UBL_MESH_EDIT                   _UxGT("Редактор сеток")
113
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Редакт. свою сетку")
114
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Точная настр. сетки")
115
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Ред. сетки завершено")
116
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Построить свою сетку")
117
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Построить сетку")
118
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("Построить сетку " PREHEAT_1_LABEL)
119
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("Построить сетку " PREHEAT_2_LABEL)
120
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Построить хол. сетку")
121
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Устан. высоту сетки")
122
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Высота")
123
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Проверить сетку")
124
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("Проверить сетку " PREHEAT_1_LABEL)
125
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("Проверить сетку " PREHEAT_2_LABEL)
126
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Проверить свою сетку")
127
-#define MSG_UBL_CONTINUE_MESH               _UxGT("Продолжить сетку")
128
-#define MSG_UBL_MESH_LEVELING               _UxGT("Калибровка сетки")
129
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("Калибровка 3-х точек")
130
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Калибровка растера")
131
-#define MSG_UBL_MESH_LEVEL                  _UxGT("Выровнить сетку")
132
-#define MSG_UBL_SIDE_POINTS                 _UxGT("Крайние точки")
133
-#define MSG_UBL_MAP_TYPE                    _UxGT("Тип карты")
134
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("Вывести карту сетки")
135
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Вывести на хост")
136
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Вывести в CSV")
137
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Забекапить сетку")
138
-#define MSG_UBL_INFO_UBL                    _UxGT("Вывод информации UBL")
139
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Кол-во заполнителя")
140
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("Ручное заполнение")
141
-#define MSG_UBL_SMART_FILLIN                _UxGT("Умное заполнение")
142
-#define MSG_UBL_FILLIN_MESH                 _UxGT("Заполнить сетку")
143
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("Аннулировать всё")
144
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Аннулир. ближ. точку")
145
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Точная настр. всего")
146
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Настр. ближ. точки")
147
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Хранилище сетей")
148
-#define MSG_UBL_STORAGE_SLOT                _UxGT("Слот памяти")
149
-#define MSG_UBL_LOAD_MESH                   _UxGT("Загрузить сетку стола")
150
-#define MSG_UBL_SAVE_MESH                   _UxGT("Сохранить сетку стола")
151
-#define MSG_MESH_LOADED                     _UxGT("Сетка %i загружена")
152
-#define MSG_MESH_SAVED                      _UxGT("Сетка %i сохранена")
153
-#define MSG_UBL_NO_STORAGE                  _UxGT("Нет хранилища")
154
-#define MSG_UBL_SAVE_ERROR                  _UxGT("Ошибка: Сохран. UBL")
155
-#define MSG_UBL_RESTORE_ERROR               _UxGT("Ошибка: Восстан. UBL")
156
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Смещение Z останов.")
157
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("Пошаговое UBL")
124
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("Выполняем G29");
125
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("Утилиты UBL");
126
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("Калибровка UBL");
127
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("Постр. сетку от руки");
128
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("Пост. шимм и измер.");
129
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("Измерение");
130
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("Удал. и измер. стол");
131
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("Двигаемся дальше");
132
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("Активировать UBL");
133
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("Деактивировать UBL");
134
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("Температура стола");
135
+  PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM             = _UxGT("Bed Temp");
136
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("Температура сопла");
137
+  PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM          = _UxGT("Hotend Temp");
138
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Редактор сеток");
139
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("Редакт. свою сетку");
140
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("Точная настр. сетки");
141
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Ред. сетки завершено");
142
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Построить свою сетку");
143
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Построить сетку");
144
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Построить сетку ") PREHEAT_1_LABEL;
145
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Построить сетку ") PREHEAT_2_LABEL;
146
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Построить хол. сетку");
147
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Устан. высоту сетки");
148
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Высота");
149
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Проверить сетку");
150
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Проверить сетку ") PREHEAT_1_LABEL;
151
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Проверить сетку ") PREHEAT_2_LABEL;
152
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Проверить свою сетку");
153
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Продолжить сетку");
154
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Калибровка сетки");
155
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("Калибровка 3-х точек");
156
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("Калибровка растера");
157
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("Выровнить сетку");
158
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("Крайние точки");
159
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("Тип карты");
160
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("Вывести карту сетки");
161
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("Вывести на хост");
162
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("Вывести в CSV");
163
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("Забекапить сетку");
164
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("Вывод информации UBL");
165
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("Кол-во заполнителя");
166
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("Ручное заполнение");
167
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("Умное заполнение");
168
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("Заполнить сетку");
169
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("Аннулировать всё");
170
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("Аннулир. ближ. точку");
171
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("Точная настр. всего");
172
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("Настр. ближ. точки");
173
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("Хранилище сетей");
174
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("Слот памяти");
175
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("Загрузить сетку стола");
176
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("Сохранить сетку стола");
177
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 Сетка %i загружена");
178
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 Сетка %i сохранена");
179
+  PROGMEM Language_Str MSG_UBL_NO_STORAGE                  = _UxGT("Нет хранилища");
180
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("Ошибка: Сохран. UBL");
181
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("Ошибка: Восстан. UBL");
182
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Смещение Z останов.");
183
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("Пошаговое UBL");
184
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1.Построить хол. сетку");
185
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2.Умное заполнение");
186
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3.Проверить сетку");
187
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4.Точная настр. всего");
188
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5.Проверить сетку");
189
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6.Точная настр. всего");
190
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7.Сохранить сетку стола");
158 191
 
159
-#define MSG_LED_CONTROL                     _UxGT("Настройки LED")
160
-#define MSG_LEDS                            _UxGT("Подсветку")
161
-#define MSG_LED_PRESETS                     _UxGT("Предустановки света")
162
-#define MSG_SET_LEDS_RED                    _UxGT("Красный свет")
163
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Оранжевый свет")
164
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Жёлтый свет")
165
-#define MSG_SET_LEDS_GREEN                  _UxGT("Зелёный свет")
166
-#define MSG_SET_LEDS_BLUE                   _UxGT("Синий свет")
167
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Индиго свет")
168
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Фиолетовый свет")
169
-#define MSG_SET_LEDS_WHITE                  _UxGT("Белый свет")
170
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Свет по умолчанию")
171
-#define MSG_CUSTOM_LEDS                     _UxGT("Свои настр. света")
172
-#define MSG_INTENSITY_R                     _UxGT("Интенсивн. красного")
173
-#define MSG_INTENSITY_G                     _UxGT("Интенсивн. зелёного")
174
-#define MSG_INTENSITY_B                     _UxGT("Интенсивн. синего")
175
-#define MSG_INTENSITY_W                     _UxGT("Интенсивн. белого")
176
-#define MSG_LED_BRIGHTNESS                  _UxGT("Яркость")
192
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("Настройки LED");
193
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("Подсветку");
194
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("Предустановки света");
195
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("Красный свет");
196
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("Оранжевый свет");
197
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("Жёлтый свет");
198
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("Зелёный свет");
199
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("Синий свет");
200
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("Индиго свет");
201
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("Фиолетовый свет");
202
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("Белый свет");
203
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("Свет по умолчанию");
204
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("Свои настр. света");
205
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("Интенсивн. красного");
206
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("Интенсивн. зелёного");
207
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("Интенсивн. синего");
208
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("Интенсивн. белого");
209
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("Яркость");
177 210
 
178
-#define MSG_MOVING                          _UxGT("Движемся...")
179
-#define MSG_FREE_XY                         _UxGT("Освобождаем XY")
180
-#define MSG_MOVE_X                          _UxGT("Движение по X")
181
-#define MSG_MOVE_Y                          _UxGT("Движение по Y")
182
-#define MSG_MOVE_Z                          _UxGT("Движение по Z")
183
-#define MSG_MOVE_E                          _UxGT("Экструдер")
184
-#define MSG_MOVE_Z_DIST                     _UxGT("Движение %sмм")
185
-#define MSG_MOVE_01MM                       _UxGT("Движение 0.1мм")
186
-#define MSG_MOVE_1MM                        _UxGT("Движение 1мм")
187
-#define MSG_MOVE_10MM                       _UxGT("Движение 10мм")
188
-#define MSG_SPEED                           _UxGT("Скорость")
189
-#define MSG_BED_Z                           _UxGT("Z стола")
190
-#define MSG_NOZZLE                          _UxGT("Сопло")
191
-#define MSG_BED                             _UxGT("Стол")
192
-#define MSG_FAN_SPEED                       _UxGT("Кулер")
193
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("Кулер доп.")
194
-#define MSG_FLOW                            _UxGT("Поток")
195
-#define MSG_CONTROL                         _UxGT("Настройки")
196
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Мин")
197
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Макс")
198
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Фактор")
199
-#define MSG_AUTOTEMP                        _UxGT("Автотемпература")
200
-#define MSG_LCD_ON                          _UxGT("Вкл.")
201
-#define MSG_LCD_OFF                         _UxGT("Выкл.")
202
-#define MSG_PID_P                           _UxGT("PID-P")
203
-#define MSG_PID_I                           _UxGT("PID-I")
204
-#define MSG_PID_D                           _UxGT("PID-D")
205
-#define MSG_PID_C                           _UxGT("PID-C")
206
-#define MSG_SELECT                          _UxGT("Выбор")
207
-#define MSG_ACC                             _UxGT("Ускорение")
208
-#define MSG_JERK                            _UxGT("Рывок")
209
-#if IS_KINEMATIC
210
-  #define MSG_VA_JERK                       _UxGT("Va-рывок")
211
-  #define MSG_VB_JERK                       _UxGT("Vb-рывок")
212
-  #define MSG_VC_JERK                       _UxGT("Vc-рывок")
213
-#else
214
-  #define MSG_VX_JERK                       _UxGT("Vx-рывок")
215
-  #define MSG_VY_JERK                       _UxGT("Vy-рывок")
216
-  #define MSG_VZ_JERK                       _UxGT("Vz-рывок")
217
-#endif
218
-#define MSG_VE_JERK                         _UxGT("Ve-рывок")
219
-#define MSG_VELOCITY                        _UxGT("Быстрота")
220
-#define MSG_VMAX                            _UxGT("Vмакс ")
221
-#define MSG_VMIN                            _UxGT("Vмин")
222
-#define MSG_VTRAV_MIN                       _UxGT("Vпутеш. мин")
223
-#define MSG_ACCELERATION                    _UxGT("Ускорение")
224
-#define MSG_AMAX                            _UxGT("Aмакс ")
225
-#define MSG_A_RETRACT                       _UxGT("A-втягивание")
226
-#define MSG_A_TRAVEL                        _UxGT("A-путеш.")
227
-#define MSG_STEPS_PER_MM                    _UxGT("Шаг/мм")
228
-#if IS_KINEMATIC
229
-  #define MSG_ASTEPS                        _UxGT("Aшаг/мм")
230
-  #define MSG_BSTEPS                        _UxGT("Bшаг/мм")
231
-  #define MSG_CSTEPS                        _UxGT("Cшаг/мм")
232
-#else
233
-  #define MSG_ASTEPS                        _UxGT("Xшаг/мм")
234
-  #define MSG_BSTEPS                        _UxGT("Yшаг/мм")
235
-  #define MSG_CSTEPS                        _UxGT("Zшаг/мм")
236
-#endif
237
-#define MSG_ESTEPS                          _UxGT("Eшаг/мм")
238
-#define MSG_E0_STEPS                        _UxGT("E1шаг/мм")
239
-#define MSG_E1_STEPS                        _UxGT("E2шаг/мм")
240
-#define MSG_E2_STEPS                        _UxGT("E3шаг/мм")
241
-#define MSG_E3_STEPS                        _UxGT("E4шаг/мм")
242
-#define MSG_E4_STEPS                        _UxGT("E5шаг/мм")
243
-#define MSG_E5_STEPS                        _UxGT("E6шаг/мм")
244
-#define MSG_TEMPERATURE                     _UxGT("Температура")
245
-#define MSG_MOTION                          _UxGT("Движение")
246
-#define MSG_FILAMENT                        _UxGT("Филамент")
247
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E в мм3")
248
-#define MSG_FILAMENT_DIAM                   _UxGT("Диаметр филамента")
249
-#define MSG_FILAMENT_UNLOAD                 _UxGT("Загрузка мм")
250
-#define MSG_FILAMENT_LOAD                   _UxGT("Выгрузка мм")
251
-#define MSG_ADVANCE_K                       _UxGT("K продвижения")
252
-#define MSG_CONTRAST                        _UxGT("Контраст LCD")
253
-#define MSG_STORE_EEPROM                    _UxGT("Сохранить настройки")
254
-#define MSG_LOAD_EEPROM                     _UxGT("Загрузить настройки")
255
-#define MSG_RESTORE_FAILSAFE                _UxGT("Вернуть настройки")
256
-#define MSG_INIT_EEPROM                     _UxGT("Инициализация EEPROM")
257
-#define MSG_MEDIA_UPDATE                    _UxGT("Обновление прошивки")
258
-#define MSG_RESET_PRINTER                   _UxGT("Сброс принтера")
259
-#define MSG_REFRESH                         _UxGT("Обновить")
260
-#define MSG_WATCH                           _UxGT("Информационный экран")
261
-#define MSG_PREPARE                         _UxGT("Подготовить")
262
-#define MSG_TUNE                            _UxGT("Настроить")
263
-#define MSG_START_PRINT                     _UxGT("Начало печати")
264
-#define MSG_BUTTON_NEXT                     _UxGT("Дальше")
265
-#define MSG_BUTTON_INIT                     _UxGT("Инициализация")
266
-#define MSG_BUTTON_STOP                     _UxGT("Остановить")
267
-#define MSG_BUTTON_PRINT                    _UxGT("Печать")
268
-#define MSG_BUTTON_RESET                    _UxGT("Сброс")
269
-#define MSG_BUTTON_CANCEL                   _UxGT("Отмена")
270
-#define MSG_BUTTON_DONE                     _UxGT("Готово")
271
-#define MSG_PAUSE_PRINT                     _UxGT("Пауза печати")
272
-#define MSG_RESUME_PRINT                    _UxGT("Продолжить печать")
273
-#define MSG_STOP_PRINT                      _UxGT("Остановить печать")
274
-#define MSG_OUTAGE_RECOVERY                 _UxGT("Восстановение сбоя")
275
-#define MSG_MEDIA_MENU                      _UxGT("Печать с SD карты")
276
-#define MSG_NO_MEDIA                        _UxGT("Нет SD карты")
277
-#define MSG_DWELL                           _UxGT("Сон...")
278
-#define MSG_USERWAIT                        _UxGT("Продолжить...")
279
-#define MSG_PRINT_PAUSED                    _UxGT("Печать на паузе")
280
-#define MSG_PRINT_ABORTED                   _UxGT("Печать отменена")
281
-#define MSG_NO_MOVE                         _UxGT("Нет движения.")
282
-#define MSG_KILLED                          _UxGT("УБИТО. ")
283
-#define MSG_STOPPED                         _UxGT("ОСТАНОВЛЕНО. ")
284
-#define MSG_CONTROL_RETRACT                 _UxGT("Втягивание мм")
285
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Втягивание смены мм")
286
-#define MSG_CONTROL_RETRACTF                _UxGT("Втягивание V")
287
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Втяг. прыжка мм")
288
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("Возврат мм")
289
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("Возврат смены мм")
290
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("Возврат V")
291
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("Возврат смены V")
292
-#define MSG_AUTORETRACT                     _UxGT("Авто Втягивание")
211
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Движемся...");
212
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Освобождаем XY");
213
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Движение по X");
214
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Движение по Y");
215
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Движение по Z");
216
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Экструдер");
217
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Экструдер ") LCD_STR_E0;
218
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Экструдер ") LCD_STR_E1;
219
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Экструдер ") LCD_STR_E2;
220
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Экструдер ") LCD_STR_E3;
221
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Экструдер ") LCD_STR_E4;
222
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Экструдер ") LCD_STR_E5;
223
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Движение %sмм");
224
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Движение 0.1мм");
225
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Движение 1мм");
226
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Движение 10мм");
227
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Скорость");
228
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Z стола");
229
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Сопло");
230
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Сопло ") LCD_STR_N0;
231
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Сопло ") LCD_STR_N1;
232
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Сопло ") LCD_STR_N2;
233
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Сопло ") LCD_STR_N3;
234
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Сопло ") LCD_STR_N4;
235
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Сопло ") LCD_STR_N5;
236
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Стол");
237
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Кулер");
238
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Кулер 1");
239
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Кулер 2");
240
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Кулер 3");
241
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("Кулер доп.");
242
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("Кулер доп. 1");
243
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("Кулер доп. 2");
244
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("Кулер доп. 3");
245
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Поток");
246
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Поток ") LCD_STR_N0;
247
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Поток ") LCD_STR_N1;
248
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Поток ") LCD_STR_N2;
249
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Поток ") LCD_STR_N3;
250
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Поток ") LCD_STR_N4;
251
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Поток ") LCD_STR_N5;
252
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Настройки");
253
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Мин");
254
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Макс");
255
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Фактор");
256
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Автотемпература");
257
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Вкл.");
258
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Выкл.");
259
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");
260
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
261
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
262
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
263
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
264
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
265
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
266
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");
267
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
268
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
269
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
270
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
271
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
272
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
273
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");
274
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
275
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
276
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
277
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
278
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
279
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
280
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");
281
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
282
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
283
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
284
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
285
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
286
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
287
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Выбор");
288
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Выбор ") LCD_STR_E0;
289
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Выбор ") LCD_STR_E1;
290
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Выбор ") LCD_STR_E2;
291
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Выбор ") LCD_STR_E3;
292
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Выбор ") LCD_STR_E4;
293
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Выбор ") LCD_STR_E5;
294
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Ускорение");
295
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Рывок");
296
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("V") LCD_STR_A _UxGT("-рывок");
297
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("V") LCD_STR_B _UxGT("-рывок");
298
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("V") LCD_STR_C _UxGT("-рывок");
299
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Ve-рывок");
300
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("Быстрота");
301
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("Vмакс ") LCD_STR_A;
302
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("Vмакс ") LCD_STR_B;
303
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("Vмакс ") LCD_STR_C;
304
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("Vмакс ") LCD_STR_E;
305
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("Vмакс ") LCD_STR_E0;
306
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("Vмакс ") LCD_STR_E1;
307
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("Vмакс ") LCD_STR_E2;
308
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("Vмакс ") LCD_STR_E3;
309
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("Vмакс ") LCD_STR_E4;
310
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("Vмакс ") LCD_STR_E5;
311
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("Vмин");
312
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vпутеш. мин");
313
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Ускорение");
314
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Aмакс ") LCD_STR_A;
315
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Aмакс ") LCD_STR_B;
316
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Aмакс ") LCD_STR_C;
317
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Aмакс ") LCD_STR_E;
318
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Aмакс ") LCD_STR_E0;
319
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Aмакс ") LCD_STR_E1;
320
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Aмакс ") LCD_STR_E2;
321
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Aмакс ") LCD_STR_E3;
322
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Aмакс ") LCD_STR_E4;
323
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Aмакс ") LCD_STR_E5;
324
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-втягивание");
325
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-путеш.");
326
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Шаг/мм");
327
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("шаг/мм");
328
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("шаг/мм");
329
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("шаг/мм");
330
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("Eшаг/мм");
331
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT("шаг/мм");
332
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT("шаг/мм");
333
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT("шаг/мм");
334
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT("шаг/мм");
335
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT("шаг/мм");
336
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT("шаг/мм");
337
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Температура");
338
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Движение");
339
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Филамент");
340
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E в мм3");
341
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Диаметр филамента");
342
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Диаметр филамента ") LCD_STR_E0;
343
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Диаметр филамента ") LCD_STR_E1;
344
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Диаметр филамента ") LCD_STR_E2;
345
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Диаметр филамента ") LCD_STR_E3;
346
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Диаметр филамента ") LCD_STR_E4;
347
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Диаметр филамента ") LCD_STR_E5;
348
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("Загрузка мм");
349
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("Выгрузка мм");
350
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("K продвижения");
351
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("K продвижения ") LCD_STR_E0;
352
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("K продвижения ") LCD_STR_E1;
353
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("K продвижения ") LCD_STR_E2;
354
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("K продвижения ") LCD_STR_E3;
355
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("K продвижения ") LCD_STR_E4;
356
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("K продвижения ") LCD_STR_E5;
357
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Контраст LCD");
358
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Сохранить настройки");
359
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Загрузить настройки");
360
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Вернуть настройки");
361
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("Инициализация EEPROM");
362
+  PROGMEM Language_Str MSG_MEDIA_UPDATE                    = _UxGT("Обновление прошивки");
363
+  PROGMEM Language_Str MSG_RESET_PRINTER                   = _UxGT("Сброс принтера");
364
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Обновить");
365
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Информационный экран");
366
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Подготовить");
367
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Настроить");
368
+  PROGMEM Language_Str MSG_START_PRINT                     = _UxGT("Начало печати");
369
+  PROGMEM Language_Str MSG_BUTTON_NEXT                     = _UxGT("Дальше");
370
+  PROGMEM Language_Str MSG_BUTTON_INIT                     = _UxGT("Инициализация");
371
+  PROGMEM Language_Str MSG_BUTTON_STOP                     = _UxGT("Остановить");
372
+  PROGMEM Language_Str MSG_BUTTON_PRINT                    = _UxGT("Печать");
373
+  PROGMEM Language_Str MSG_BUTTON_RESET                    = _UxGT("Сброс");
374
+  PROGMEM Language_Str MSG_BUTTON_CANCEL                   = _UxGT("Отмена");
375
+  PROGMEM Language_Str MSG_BUTTON_DONE                     = _UxGT("Готово");
376
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Пауза печати");
377
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Продолжить печать");
378
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Остановить печать");
379
+  PROGMEM Language_Str MSG_OUTAGE_RECOVERY                 = _UxGT("Восстановение сбоя");
380
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Печать с SD карты");
381
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Нет SD карты");
382
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Сон...");
383
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Продолжить...");
384
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("Печать на паузе");
385
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Печать отменена");
386
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Нет движения.");
387
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("УБИТО. ");
388
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ОСТАНОВЛЕНО. ");
389
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Втягивание мм");
390
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Втягивание смены мм");
391
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Втягивание V");
392
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Втяг. прыжка мм");
393
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("Возврат мм");
394
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("Возврат смены мм");
395
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("Возврат V");
396
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("Возврат смены V");
397
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Авто Втягивание");
293 398
 
294
-// TODO: Filament Change Swap / Purge Length
399
+  // TODO: Filament Change Swap / Purge Length
295 400
 
296
-#define MSG_TOOL_CHANGE                     _UxGT("Смена сопел")
297
-#define MSG_TOOL_CHANGE_ZLIFT               _UxGT("Поднятие по Z")
401
+  PROGMEM Language_Str MSG_TOOL_CHANGE                     = _UxGT("Смена сопел");
402
+  PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT               = _UxGT("Поднятие по Z");
298 403
 
299
-// TODO: Singlenozzle, nozzle standby
404
+  // TODO: Singlenozzle, nozzle standby
300 405
 
301
-#define MSG_FILAMENTCHANGE                  _UxGT("Смена филамента")
302
-#define MSG_FILAMENTLOAD                    _UxGT("Загрузка филамента")
303
-#define MSG_FILAMENTUNLOAD                  _UxGT("Выгрузка филамента")
304
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("Выгрузить всё")
305
-#define MSG_INIT_MEDIA                      _UxGT("Активировать SD")
306
-#define MSG_CHANGE_MEDIA                    _UxGT("Сменить SD карту")
307
-#define MSG_RELEASE_MEDIA                   _UxGT("Деактивировать SD")
308
-#define MSG_ZPROBE_OUT                      _UxGT("Z датчик вне стола")
309
-#define MSG_SKEW_FACTOR                     _UxGT("Фактор наклона")
310
-#define MSG_BLTOUCH                         _UxGT("BLTouch")
311
-#define MSG_BLTOUCH_SELFTEST                _UxGT("Тестирование BLTouch")
312
-#define MSG_BLTOUCH_RESET                   _UxGT("Сброс BLTouch")
313
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("Установка BLTouch")
314
-#define MSG_BLTOUCH_STOW                    _UxGT("Набивка BLTouch")
406
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Смена филамента");
407
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Смена филамента ") LCD_STR_E0;
408
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Смена филамента ") LCD_STR_E1;
409
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Смена филамента ") LCD_STR_E2;
410
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Смена филамента ") LCD_STR_E3;
411
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Смена филамента ") LCD_STR_E4;
412
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Смена филамента ") LCD_STR_E5;
413
+  PROGMEM Language_Str MSG_FILAMENTLOAD                    = _UxGT("Загрузка филамента");
414
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("Загрузка филамента ") LCD_STR_E0;
415
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("Загрузка филамента ") LCD_STR_E1;
416
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("Загрузка филамента ") LCD_STR_E2;
417
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("Загрузка филамента ") LCD_STR_E3;
418
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("Загрузка филамента ") LCD_STR_E4;
419
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("Загрузка филамента ") LCD_STR_E5;
420
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("Выгрузка филамента ") LCD_STR_E0;
421
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("Выгрузка филамента ") LCD_STR_E1;
422
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("Выгрузка филамента ") LCD_STR_E2;
423
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("Выгрузка филамента ") LCD_STR_E3;
424
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("Выгрузка филамента ") LCD_STR_E4;
425
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("Выгрузка филамента ") LCD_STR_E5;
426
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("Выгрузить всё");
427
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Активировать SD");
428
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Сменить SD карту");
429
+  PROGMEM Language_Str MSG_RELEASE_MEDIA                   = _UxGT("Деактивировать SD");
430
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z датчик вне стола");
431
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("Фактор наклона");
432
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");
433
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("Тестирование BLTouch");
434
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Сброс BLTouch");
435
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("Установка BLTouch");
436
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("Набивка BLTouch");
315 437
 
316
-// TODO: TouchMI Probe, Manual deploy/stow
438
+  // TODO: TouchMI Probe, Manual deploy/stow
317 439
 
318
-#define MSG_HOME_FIRST                      _UxGT("Паркуй %s%s%s сначала")
319
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Смещение Z")
320
-#define MSG_BABYSTEP_X                      _UxGT("Микрошаг X")
321
-#define MSG_BABYSTEP_Y                      _UxGT("Микрошаг Y")
322
-#define MSG_BABYSTEP_Z                      _UxGT("Микрошаг Z")
323
-#define MSG_ENDSTOP_ABORT                   _UxGT("Сработал концевик")
324
-#define MSG_HEATING_FAILED_LCD              _UxGT("Разогрев не удался")
325
-#define MSG_HEATING_FAILED_LCD_BED          _UxGT("Неудача нагрева стола")
326
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Ошибка: Избыточная Т")
327
-#define MSG_THERMAL_RUNAWAY                 _UxGT("УБЕГАНИЕ ТЕПЛА")
328
-#define MSG_THERMAL_RUNAWAY_BED             _UxGT("УБЕГАНИЕ ТЕПЛА СТОЛА")
329
-// TODO: Heated chamber
330
-#define MSG_ERR_MAXTEMP                     _UxGT("Ошибка: Т макс.")
331
-#define MSG_ERR_MINTEMP                     _UxGT("Ошибка: Т мин.")
332
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Ошибка: Т стола макс")
333
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Ошибка: Т стола мин.")
334
-// TODO: Heated chamber
335
-#define MSG_ERR_Z_HOMING                    _UxGT("Паркуй XY сначала")
336
-#define MSG_HALTED                          _UxGT("ПРИНТЕР ОСТАНОВЛЕН")
337
-#define MSG_PLEASE_RESET                    _UxGT("Сделайте сброс")
338
-#define MSG_SHORT_DAY                       _UxGT("д") // One character only
339
-#define MSG_SHORT_HOUR                      _UxGT("ч") // One character only
340
-#define MSG_SHORT_MINUTE                    _UxGT("м") // One character only
341
-#define MSG_HEATING                         _UxGT("Нагрев...")
342
-#define MSG_COOLING                         _UxGT("Охлаждение...")
343
-#define MSG_BED_HEATING                     _UxGT("Нагрев стола...")
344
-#define MSG_BED_COOLING                     _UxGT("Охлаждение стола...")
345
-// TODO: Heated chamber
346
-#define MSG_DELTA_CALIBRATE                 _UxGT("Калибровка Delta")
347
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Калибровать X")
348
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Калибровать Y")
349
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Калибровать Z")
350
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Калибровать центр")
351
-#define MSG_DELTA_SETTINGS                  _UxGT("Настройки Delta")
352
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Авто калибровка")
353
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Задать высоту Delta")
354
-#define MSG_DELTA_Z_OFFSET_CALIBRATE        _UxGT("Задать Z-смещение")
355
-#define MSG_DELTA_DIAG_ROD                  _UxGT("Диаг. стержень")
356
-#define MSG_DELTA_HEIGHT                    _UxGT("Высота")
357
-#define MSG_DELTA_RADIUS                    _UxGT("Радиус")
358
-#define MSG_INFO_MENU                       _UxGT("О принтере")
359
-#define MSG_INFO_PRINTER_MENU               _UxGT("Инф. о принтере")
360
-#define MSG_3POINT_LEVELING                 _UxGT("Калибровка 3-х точек")
361
-#define MSG_LINEAR_LEVELING                 _UxGT("Линейная калибровка")
362
-#define MSG_BILINEAR_LEVELING               _UxGT("Билинейная калибр.")
363
-#define MSG_UBL_LEVELING                    _UxGT("Калибровка UBL")
364
-#define MSG_MESH_LEVELING                   _UxGT("Калибровка сетки")
365
-#define MSG_INFO_STATS_MENU                 _UxGT("Статистика принтера")
366
-#define MSG_INFO_BOARD_MENU                 _UxGT("Информация о плате")
367
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Термисторы")
368
-#define MSG_INFO_EXTRUDERS                  _UxGT("Экструдеры")
369
-#define MSG_INFO_BAUDRATE                   _UxGT("Бод")
370
-#define MSG_INFO_PROTOCOL                   _UxGT("Протокол")
371
-#define MSG_CASE_LIGHT                      _UxGT("Подсветка корпуса")
372
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Яркость подсветки")
440
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Паркуй %s%s%s сначала");
441
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Смещение Z");
442
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Микрошаг X");
443
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Микрошаг Y");
444
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Микрошаг Z");
445
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Сработал концевик");
446
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Разогрев не удался");
447
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED          = _UxGT("Неудача нагрева стола");
448
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Ошибка: Избыточная Т");
449
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("УБЕГАНИЕ ТЕПЛА");
450
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED             = _UxGT("УБЕГАНИЕ ТЕПЛА СТОЛА");
451
+  // TODO: Heated chamber
452
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Ошибка: Т макс.");
453
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Ошибка: Т мин.");
454
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Ошибка: Т стола макс");
455
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Ошибка: Т стола мин.");
456
+  // TODO: Heated chamber
457
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Паркуй XY сначала");
458
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("ПРИНТЕР ОСТАНОВЛЕН");
459
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Сделайте сброс");
460
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("д"); // One character only
461
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("ч"); // One character only
462
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("м"); // One character only
463
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Нагрев...");
464
+  PROGMEM Language_Str MSG_COOLING                         = _UxGT("Охлаждение...");
465
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Нагрев стола...");
466
+  PROGMEM Language_Str MSG_BED_COOLING                     = _UxGT("Охлаждение стола...");
467
+  // TODO: Heated chamber
468
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Калибровка Delta");
469
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Калибровать X");
470
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Калибровать Y");
471
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Калибровать Z");
472
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Калибровать центр");
473
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("Настройки Delta");
474
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Авто калибровка");
475
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Задать высоту Delta");
476
+  PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE        = _UxGT("Задать Z-смещение");
477
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("Диаг. стержень");
478
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("Высота");
479
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("Радиус");
480
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("О принтере");
481
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Инф. о принтере");
482
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("Калибровка 3-х точек");
483
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("Линейная калибровка");
484
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("Билинейная калибр.");
485
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("Калибровка UBL");
486
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("Калибровка сетки");
487
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Статистика принтера");
488
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Информация о плате");
489
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Термисторы");
490
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Экструдеры");
491
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Бод");
492
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Протокол");
493
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Подсветка корпуса");
494
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("Яркость подсветки");
373 495
 
374
-#define MSG_EXPECTED_PRINTER                _UxGT("Неверный принтер")
496
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Неверный принтер");
375 497
 
376
-#if LCD_WIDTH >= 20
377
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Счётчик печати")
378
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Закончено")
379
-  #define MSG_INFO_PRINT_TIME               _UxGT("Общее время печати")
380
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Наидольшее задание")
381
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Длина филамента")
382
-#else
383
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Отпечатков")
384
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Закончено")
385
-  #define MSG_INFO_PRINT_TIME               _UxGT("Всего")
386
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Наидольшее")
387
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Выдавлено")
388
-#endif
389
-#define MSG_INFO_MIN_TEMP                   _UxGT("Мин. Т")
390
-#define MSG_INFO_MAX_TEMP                   _UxGT("Макс. Т")
391
-#define MSG_INFO_PSU                        _UxGT("БП")
392
-#define MSG_DRIVE_STRENGTH                  _UxGT("Сила привода")
393
-#define MSG_DAC_PERCENT                     _UxGT("Привод %")
394
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Запись DAC EEPROM")
395
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("ПЕЧАТЬ НА ПАУЗЕ")
396
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("ЗАГРУЗКА ФИЛАМЕНТА")
397
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("ВЫГРУЗКА ФИЛАМЕНТА")
398
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("ОПЦИИ ВОЗОБНОВЛЕНИЯ:")
399
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("Выдавить ещё")
400
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Возобновить печать")
401
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Сопла: ")
402
-#define MSG_ERR_HOMING_FAILED               _UxGT("Возврат не удался")
403
-#define MSG_ERR_PROBING_FAILED              _UxGT("Не удалось прощупать")
404
-#define MSG_M600_TOO_COLD                   _UxGT("M600: Низкая Т")
498
+  #if LCD_WIDTH >= 20
499
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Счётчик печати");
500
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Закончено");
501
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Общее время печати");
502
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Наидольшее задание");
503
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Длина филамента");
504
+  #else
505
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Отпечатков");
506
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Закончено");
507
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Всего");
508
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Наидольшее");
509
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Выдавлено");
510
+  #endif
511
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Мин. Т");
512
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Макс. Т");
513
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("БП");
514
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Сила привода");
515
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Привод %");
516
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Запись DAC EEPROM");
517
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("ПЕЧАТЬ НА ПАУЗЕ");
518
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("ЗАГРУЗКА ФИЛАМЕНТА");
519
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("ВЫГРУЗКА ФИЛАМЕНТА");
520
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("ОПЦИИ ВОЗОБНОВЛЕНИЯ:");
521
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("Выдавить ещё");
522
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Возобновить печать");
523
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  Сопла: ");
524
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("Возврат не удался");
525
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("Не удалось прощупать");
526
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: Низкая Т");
405 527
 
406
-// TODO: MMU2
528
+  // TODO: MMU2
407 529
 
408
-// TODO: Mixing
530
+  // TODO: Mixing
409 531
 
410
-#define MSG_GAMES                           _UxGT("Игры")
411
-#define MSG_BRICKOUT                        _UxGT("Кирпичи")
412
-#define MSG_INVADERS                        _UxGT("Вторжение")
413
-#define MSG_SNAKE                           _UxGT("Змейка")
414
-#define MSG_MAZE                            _UxGT("Лабиринт")
532
+  PROGMEM Language_Str MSG_GAMES                           = _UxGT("Игры");
533
+  PROGMEM Language_Str MSG_BRICKOUT                        = _UxGT("Кирпичи");
534
+  PROGMEM Language_Str MSG_INVADERS                        = _UxGT("Вторжение");
535
+  PROGMEM Language_Str MSG_SNAKE                           = _UxGT("Змейка");
536
+  PROGMEM Language_Str MSG_MAZE                            = _UxGT("Лабиринт");
415 537
 
416
-//
417
-// Filament Change screens show up to 3 lines on a 4-line display
418
-//                        ...or up to 2 lines on a 3-line display
419
-//
420
-#if LCD_HEIGHT >= 4
421
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Ожидайте")
422
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("начала смены")
423
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("филамента")
424
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Ожидайте")
425
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("выгрузки")
426
-  #define MSG_FILAMENT_CHANGE_UNLOAD_3      _UxGT("филамента")
427
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Вставьте пруток")
428
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("и нажмите кнопку")
429
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("для продолжения")
430
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Нажмите кнопку для")
431
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("нагрева сопла...")
432
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Нагрев сопла")
433
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Ждите...")
434
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Ожидайте")
435
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("загрузки прутка")
436
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Ожидайте")
437
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("экструзии")
438
-  #define MSG_FILAMENT_CHANGE_PURGE_3       _UxGT("филамента")
439
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Ожидайте")
440
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("возобновления")
441
-  #define MSG_FILAMENT_CHANGE_RESUME_3      _UxGT("печати")
442
-#else // LCD_HEIGHT < 4
443
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Ожидайте...")
444
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Выгрузка...")
445
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Вставь и нажми")
446
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Нагрев...")
447
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Загрузка...")
448
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Выдавливание...")
449
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Возобновление...")
450
-#endif // LCD_HEIGHT < 4
538
+  //
539
+  // Filament Change screens show up to 3 lines on a 4-line display
540
+  //                        ...or up to 2 lines on a 3-line display
541
+  //
542
+  #if LCD_HEIGHT >= 4
543
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Ожидайте", "начала смены", "филамента"));
544
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента"));
545
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Вставьте пруток", "и нажмите кнопку", "для продолжения"));
546
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Нажмите кнопку для", "нагрева сопла..."));
547
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите..."));
548
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Ожидайте", "загрузки прутка"));
549
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента"));
550
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати"));
551
+  #else
552
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Ожидайте..."));
553
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Выгрузка..."));
554
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Вставь и нажми"));
555
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Нагрев..."));
556
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Загрузка..."));
557
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("Выдавливание..."));
558
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Возобновление..."));
559
+  #endif
451 560
 
452
-#define MSG_TMC_DRIVERS                     _UxGT("Драйвера TMC")
453
-#define MSG_TMC_CURRENT                     _UxGT("Текущие настройки")
454
-#define MSG_TMC_HYBRID_THRS                 _UxGT("Гибридный режим")
455
-#define MSG_TMC_HOMING_THRS                 _UxGT("Режим без эндстопов")
456
-#define MSG_TMC_STEPPING_MODE               _UxGT("Режим шага")
457
-#define MSG_TMC_STEALTH_ENABLED             _UxGT("Тихий режим вкл")
561
+  PROGMEM Language_Str MSG_TMC_DRIVERS                     = _UxGT("Драйвера TMC");
562
+  PROGMEM Language_Str MSG_TMC_CURRENT                     = _UxGT("Текущие настройки");
563
+  PROGMEM Language_Str MSG_TMC_HYBRID_THRS                 = _UxGT("Гибридный режим");
564
+  PROGMEM Language_Str MSG_TMC_HOMING_THRS                 = _UxGT("Режим без эндстопов");
565
+  PROGMEM Language_Str MSG_TMC_STEPPING_MODE               = _UxGT("Режим шага");
566
+  PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED             = _UxGT("Тихий режим вкл");
458 567
 
459
-// TODO: Service
568
+  // TODO: Service
460 569
 
461
-// TODO: Backlash
570
+  // TODO: Backlash
571
+}

+ 595
- 535
Marlin/src/lcd/language/language_sk.h
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 142
- 111
Marlin/src/lcd/language/language_test.h Zobrazit soubor

@@ -114,114 +114,145 @@
114 114
 #define STRG_OKTAL_e "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"
115 115
 #define STRG_OKTAL_f "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
116 116
 
117
-#if ENABLED(DISPLAYTEST)
118
-  #define WELCOME_MSG                         _UxGT("Language TEST")
119
-
120
-  #define MSG_WATCH                           _UxGT("Display test")
121
-  #define MSG_PREPARE                         STRG_OKTAL_b
122
-  #define MSG_CONTROL                         STRG_OKTAL_c
123
-#endif
124
-
125
-#if ENABLED(WEST)
126
-  #define WELCOME_MSG                         _UxGT("Language TEST")
127
-
128
-  #define MSG_WATCH                           _UxGT("\001\002\003\004\005\006\007\010\011")
129
-  #define MSG_PREPARE                         _UxGT("UTF8")
130
-  #define MSG_CONTROL                         _UxGT("ASCII")
131
-
132
-  //#define MSG_MAIN                            _UxGT("..")
133
-  #define MSG_DISABLE_STEPPERS                STRG_C2_8
134
-  #define MSG_AUTO_HOME                       STRG_C2_9
135
-  #define MSG_SET_HOME_OFFSETS                STRG_C2_a
136
-  #define MSG_PREHEAT_1                       STRG_C2_b
137
-  #define MSG_PREHEAT_2                       STRG_C3_8
138
-  #define MSG_COOLDOWN                        STRG_C3_9
139
-  #define MSG_SWITCH_PS_OFF                   STRG_C3_a
140
-  #define MSG_MOVE_AXIS                       STRG_C3_b
141
-
142
-  #define MSG_MAIN                            STRG_OKTAL_2
143
-  #define MSG_TEMPERATURE                     STRG_OKTAL_3
144
-  #define MSG_MOTION                          STRG_OKTAL_4
145
-  #define MSG_FILAMENT                        STRG_OKTAL_5
146
-  #define MSG_CONTRAST                        STRG_OKTAL_6
147
-  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
148
-
149
-  #define MSG_NOZZLE                          STRG_OKTAL_8
150
-  #define MSG_FAN_SPEED                       STRG_OKTAL_9
151
-  #define MSG_AUTOTEMP                        STRG_OKTAL_a
152
-  #define MSG_MIN                             STRG_OKTAL_b
153
-  #define MSG_MAX                             STRG_OKTAL_c
154
-  #define MSG_FACTOR                          STRG_OKTAL_d
155
-  #define MSG_PID_P                           STRG_OKTAL_e
156
-  #define MSG_PID_I                           STRG_OKTAL_f
157
-
158
-#endif
159
-
160
-#if ENABLED(CYRIL)
161
-  #define WELCOME_MSG                         _UxGT("Language TEST")
162
-
163
-  #define MSG_WATCH                           _UxGT("\001\002\003\004\005\006\007\010\011")
164
-  #define MSG_PREPARE                         _UxGT("UTF8")
165
-  #define MSG_CONTROL                         _UxGT("ASCII")
166
-
167
-  //#define MSG_MAIN                            _UxGT("..")
168
-  #define MSG_DISABLE_STEPPERS                STRG_D0_8
169
-  #define MSG_AUTO_HOME                       STRG_D0_9
170
-  #define MSG_SET_HOME_OFFSETS                STRG_D0_a
171
-  #define MSG_PREHEAT_1                       STRG_D0_b
172
-  #define MSG_PREHEAT_2                       STRG_D1_8
173
-  #define MSG_COOLDOWN                        STRG_D1_9
174
-  #define MSG_SWITCH_PS_OFF                   STRG_D1_a
175
-  #define MSG_MOVE_AXIS                       STRG_D1_b
176
-
177
-  #define MSG_MAIN                            STRG_OKTAL_2
178
-  #define MSG_TEMPERATURE                     STRG_OKTAL_3
179
-  #define MSG_MOTION                          STRG_OKTAL_4
180
-  #define MSG_FILAMENT                        STRG_OKTAL_5
181
-  #define MSG_CONTRAST                        STRG_OKTAL_6
182
-  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
183
-
184
-  #define MSG_NOZZLE                          STRG_OKTAL_8
185
-  #define MSG_FAN_SPEED                       STRG_OKTAL_9
186
-  #define MSG_AUTOTEMP                        STRG_OKTAL_a
187
-  #define MSG_MIN                             STRG_OKTAL_b
188
-  #define MSG_MAX                             STRG_OKTAL_c
189
-  #define MSG_FACTOR                          STRG_OKTAL_d
190
-  #define MSG_PID_P                           STRG_OKTAL_e
191
-  #define MSG_PID_I                           STRG_OKTAL_f
192
-
193
-#endif
194
-
195
-#if ENABLED(KANA)
196
-  #define WELCOME_MSG                         _UxGT("Language TEST")
197
-
198
-  #define MSG_WATCH                           _UxGT("\001\002\003\004\005\006\007\010\011")
199
-  #define MSG_PREPARE                         _UxGT("UTF8")
200
-  #define MSG_CONTROL                         _UxGT("ASCII")
201
-
202
-  //#define MSG_MAIN                            _UxGT("..")
203
-  #define MSG_DISABLE_STEPPERS                STRG_E382_8
204
-  #define MSG_AUTO_HOME                       STRG_E382_9
205
-  #define MSG_SET_HOME_OFFSETS                STRG_E382_a
206
-  #define MSG_PREHEAT_1                       STRG_E382_b
207
-  #define MSG_PREHEAT_2                       STRG_E383_8
208
-  #define MSG_COOLDOWN                        STRG_E383_9
209
-  #define MSG_SWITCH_PS_OFF                   STRG_E383_a
210
-  #define MSG_MOVE_AXIS                       STRG_E383_b
211
-
212
-  #define MSG_MAIN                            STRG_OKTAL_2
213
-  #define MSG_TEMPERATURE                     STRG_OKTAL_3
214
-  #define MSG_MOTION                          STRG_OKTAL_4
215
-  #define MSG_FILAMENT                        STRG_OKTAL_5
216
-  #define MSG_CONTRAST                        STRG_OKTAL_6
217
-  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
218
-
219
-  #define MSG_NOZZLE                          STRG_OKTAL_8
220
-  #define MSG_FAN_SPEED                       STRG_OKTAL_9
221
-  #define MSG_AUTOTEMP                        STRG_OKTAL_a
222
-  #define MSG_MIN                             STRG_OKTAL_b
223
-  #define MSG_MAX                             STRG_OKTAL_c
224
-  #define MSG_FACTOR                          STRG_OKTAL_d
225
-  #define MSG_PID_P                           STRG_OKTAL_e
226
-  #define MSG_PID_I                           STRG_OKTAL_f
227
-#endif
117
+namespace Language_test {
118
+  using namespace Language_en; // Inherit undefined strings from English
119
+
120
+  constexpr uint8_t    CHARSIZE                              = 1;
121
+
122
+  #if ENABLED(DISPLAYTEST)
123
+    PROGMEM Language_Str WELCOME_MSG                         = _UxGT("Language TEST");
124
+
125
+    PROGMEM Language_Str MSG_WATCH                           = _UxGT("Display test");
126
+    PROGMEM Language_Str MSG_PREPARE                         = STRG_OKTAL_b;
127
+    PROGMEM Language_Str MSG_CONTROL                         = STRG_OKTAL_c;
128
+  #endif
129
+
130
+  #if ENABLED(WEST)
131
+    PROGMEM Language_Str WELCOME_MSG                         = _UxGT("Language TEST");
132
+
133
+    PROGMEM Language_Str MSG_WATCH                           = _UxGT("\001\002\003\004\005\006\007\010\011");
134
+    PROGMEM Language_Str MSG_PREPARE                         = _UxGT("UTF8");
135
+    PROGMEM Language_Str MSG_CONTROL                         = _UxGT("ASCII");
136
+
137
+    PROGMEM Language_Str MSG_MAIN                            = _UxGT("..");
138
+    PROGMEM Language_Str MSG_DISABLE_STEPPERS                = STRG_C2_8;
139
+    PROGMEM Language_Str MSG_AUTO_HOME                       = STRG_C2_9;
140
+    PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = STRG_C2_a;
141
+    PROGMEM Language_Str MSG_PREHEAT_1                       = STRG_C2_b;
142
+    PROGMEM Language_Str MSG_PREHEAT_2                       = STRG_C3_8;
143
+    PROGMEM Language_Str MSG_COOLDOWN                        = STRG_C3_9;
144
+    PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = STRG_C3_a;
145
+    PROGMEM Language_Str MSG_MOVE_AXIS                       = STRG_C3_b;
146
+
147
+    PROGMEM Language_Str MSG_MAIN                            = STRG_OKTAL_2;
148
+    PROGMEM Language_Str MSG_TEMPERATURE                     = STRG_OKTAL_3;
149
+    PROGMEM Language_Str MSG_MOTION                          = STRG_OKTAL_4;
150
+    PROGMEM Language_Str MSG_FILAMENT                        = STRG_OKTAL_5;
151
+    PROGMEM Language_Str MSG_CONTRAST                        = STRG_OKTAL_6;
152
+    PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = STRG_OKTAL_7;
153
+
154
+    PROGMEM Language_Str MSG_NOZZLE                          = STRG_OKTAL_8;
155
+    PROGMEM Language_Str MSG_NOZZLE_0                        = STRG_OKTAL_8 " " LCD_STR_N0;
156
+    PROGMEM Language_Str MSG_NOZZLE_1                        = STRG_OKTAL_8 " " LCD_STR_N1;
157
+    PROGMEM Language_Str MSG_NOZZLE_2                        = STRG_OKTAL_8 " " LCD_STR_N2;
158
+    PROGMEM Language_Str MSG_NOZZLE_3                        = STRG_OKTAL_8 " " LCD_STR_N3;
159
+    PROGMEM Language_Str MSG_NOZZLE_4                        = STRG_OKTAL_8 " " LCD_STR_N4;
160
+    PROGMEM Language_Str MSG_NOZZLE_5                        = STRG_OKTAL_8 " " LCD_STR_N5;
161
+    PROGMEM Language_Str MSG_FAN_SPEED                       = STRG_OKTAL_9;
162
+    PROGMEM Language_Str MSG_FAN_SPEED_1                     = STRG_OKTAL_9;
163
+    PROGMEM Language_Str MSG_FAN_SPEED_2                     = STRG_OKTAL_9;
164
+    PROGMEM Language_Str MSG_FAN_SPEED_3                     = STRG_OKTAL_9;
165
+    PROGMEM Language_Str MSG_AUTOTEMP                        = STRG_OKTAL_a;
166
+    PROGMEM Language_Str MSG_MIN                             = STRG_OKTAL_b;
167
+    PROGMEM Language_Str MSG_MAX                             = STRG_OKTAL_c;
168
+    PROGMEM Language_Str MSG_FACTOR                          = STRG_OKTAL_d;
169
+    PROGMEM Language_Str MSG_PID_P                           = STRG_OKTAL_e;
170
+    PROGMEM Language_Str MSG_PID_I                           = STRG_OKTAL_f;
171
+
172
+  #endif
173
+
174
+  #if ENABLED(CYRIL)
175
+    PROGMEM Language_Str WELCOME_MSG                         = _UxGT("Language TEST");
176
+
177
+    PROGMEM Language_Str MSG_WATCH                           = _UxGT("\001\002\003\004\005\006\007\010\011");
178
+    PROGMEM Language_Str MSG_PREPARE                         = _UxGT("UTF8");
179
+    PROGMEM Language_Str MSG_CONTROL                         = _UxGT("ASCII");
180
+
181
+    PROGMEM Language_Str MSG_MAIN                            = _UxGT("..");
182
+    PROGMEM Language_Str MSG_DISABLE_STEPPERS                = STRG_D0_8;
183
+    PROGMEM Language_Str MSG_AUTO_HOME                       = STRG_D0_9;
184
+    PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = STRG_D0_a;
185
+    PROGMEM Language_Str MSG_PREHEAT_1                       = STRG_D0_b;
186
+    PROGMEM Language_Str MSG_PREHEAT_2                       = STRG_D1_8;
187
+    PROGMEM Language_Str MSG_COOLDOWN                        = STRG_D1_9;
188
+    PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = STRG_D1_a;
189
+    PROGMEM Language_Str MSG_MOVE_AXIS                       = STRG_D1_b;
190
+
191
+    PROGMEM Language_Str MSG_MAIN                            = STRG_OKTAL_2;
192
+    PROGMEM Language_Str MSG_TEMPERATURE                     = STRG_OKTAL_3;
193
+    PROGMEM Language_Str MSG_MOTION                          = STRG_OKTAL_4;
194
+    PROGMEM Language_Str MSG_FILAMENT                        = STRG_OKTAL_5;
195
+    PROGMEM Language_Str MSG_CONTRAST                        = STRG_OKTAL_6;
196
+    PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = STRG_OKTAL_7;
197
+
198
+    PROGMEM Language_Str MSG_NOZZLE                          = STRG_OKTAL_8;
199
+    PROGMEM Language_Str MSG_NOZZLE_0                        = STRG_OKTAL_8 " " LCD_STR_N0;
200
+    PROGMEM Language_Str MSG_NOZZLE_1                        = STRG_OKTAL_8 " " LCD_STR_N1;
201
+    PROGMEM Language_Str MSG_NOZZLE_2                        = STRG_OKTAL_8 " " LCD_STR_N2;
202
+    PROGMEM Language_Str MSG_NOZZLE_3                        = STRG_OKTAL_8 " " LCD_STR_N3;
203
+    PROGMEM Language_Str MSG_NOZZLE_4                        = STRG_OKTAL_8 " " LCD_STR_N4;
204
+    PROGMEM Language_Str MSG_NOZZLE_5                        = STRG_OKTAL_8 " " LCD_STR_N5;
205
+    PROGMEM Language_Str MSG_FAN_SPEED_1                     = STRG_OKTAL_9;
206
+    PROGMEM Language_Str MSG_FAN_SPEED_2                     = STRG_OKTAL_9;
207
+    PROGMEM Language_Str MSG_FAN_SPEED_3                     = STRG_OKTAL_9;
208
+    PROGMEM Language_Str MSG_AUTOTEMP                        = STRG_OKTAL_a;
209
+    PROGMEM Language_Str MSG_MIN                             = STRG_OKTAL_b;
210
+    PROGMEM Language_Str MSG_MAX                             = STRG_OKTAL_c;
211
+    PROGMEM Language_Str MSG_FACTOR                          = STRG_OKTAL_d;
212
+    PROGMEM Language_Str MSG_PID_P                           = STRG_OKTAL_e;
213
+    PROGMEM Language_Str MSG_PID_I                           = STRG_OKTAL_f;
214
+
215
+  #endif
216
+
217
+  #if ENABLED(KANA)
218
+    PROGMEM Language_Str WELCOME_MSG                         = _UxGT("Language TEST");
219
+
220
+    PROGMEM Language_Str MSG_WATCH                           = _UxGT("\001\002\003\004\005\006\007\010\011");
221
+    PROGMEM Language_Str MSG_PREPARE                         = _UxGT("UTF8");
222
+    PROGMEM Language_Str MSG_CONTROL                         = _UxGT("ASCII");
223
+
224
+    PROGMEM Language_Str MSG_MAIN                            = _UxGT("..");
225
+    PROGMEM Language_Str MSG_DISABLE_STEPPERS                = STRG_E382_8;
226
+    PROGMEM Language_Str MSG_AUTO_HOME                       = STRG_E382_9;
227
+    PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = STRG_E382_a;
228
+    PROGMEM Language_Str MSG_PREHEAT_1                       = STRG_E382_b;
229
+    PROGMEM Language_Str MSG_PREHEAT_2                       = STRG_E383_8;
230
+    PROGMEM Language_Str MSG_COOLDOWN                        = STRG_E383_9;
231
+    PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = STRG_E383_a;
232
+    PROGMEM Language_Str MSG_MOVE_AXIS                       = STRG_E383_b;
233
+
234
+    PROGMEM Language_Str MSG_MAIN                            = STRG_OKTAL_2;
235
+    PROGMEM Language_Str MSG_TEMPERATURE                     = STRG_OKTAL_3;
236
+    PROGMEM Language_Str MSG_MOTION                          = STRG_OKTAL_4;
237
+    PROGMEM Language_Str MSG_FILAMENT                        = STRG_OKTAL_5;
238
+    PROGMEM Language_Str MSG_CONTRAST                        = STRG_OKTAL_6;
239
+    PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = STRG_OKTAL_7;
240
+
241
+    PROGMEM Language_Str MSG_NOZZLE                          = STRG_OKTAL_8;
242
+    PROGMEM Language_Str MSG_NOZZLE_0                        = STRG_OKTAL_8 " " LCD_STR_N0;
243
+    PROGMEM Language_Str MSG_NOZZLE_1                        = STRG_OKTAL_8 " " LCD_STR_N1;
244
+    PROGMEM Language_Str MSG_NOZZLE_2                        = STRG_OKTAL_8 " " LCD_STR_N2;
245
+    PROGMEM Language_Str MSG_NOZZLE_3                        = STRG_OKTAL_8 " " LCD_STR_N3;
246
+    PROGMEM Language_Str MSG_NOZZLE_4                        = STRG_OKTAL_8 " " LCD_STR_N4;
247
+    PROGMEM Language_Str MSG_NOZZLE_5                        = STRG_OKTAL_8 " " LCD_STR_N5;
248
+    PROGMEM Language_Str MSG_FAN_SPEED_1                     = STRG_OKTAL_9;
249
+    PROGMEM Language_Str MSG_FAN_SPEED_2                     = STRG_OKTAL_9;
250
+    PROGMEM Language_Str MSG_FAN_SPEED_3                     = STRG_OKTAL_9;
251
+    PROGMEM Language_Str MSG_AUTOTEMP                        = STRG_OKTAL_a;
252
+    PROGMEM Language_Str MSG_MIN                             = STRG_OKTAL_b;
253
+    PROGMEM Language_Str MSG_MAX                             = STRG_OKTAL_c;
254
+    PROGMEM Language_Str MSG_FACTOR                          = STRG_OKTAL_d;
255
+    PROGMEM Language_Str MSG_PID_P                           = STRG_OKTAL_e;
256
+    PROGMEM Language_Str MSG_PID_I                           = STRG_OKTAL_f;
257
+  #endif
258
+}

+ 478
- 396
Marlin/src/lcd/language/language_tr.h Zobrazit soubor

@@ -34,402 +34,484 @@
34 34
  */
35 35
 
36 36
 #define DISPLAY_CHARSET_ISO10646_TR
37
-#define CHARSIZE 2
38
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS      _UxGT("İÖÇğüşöç³")
39 37
 
40
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" hazır.")
41
-#define MSG_BACK                            _UxGT("Geri")
42
-#define MSG_MEDIA_INSERTED                  _UxGT("SD K. Yerleştirildi.")
43
-#define MSG_MEDIA_REMOVED                   _UxGT("SD Kart Çıkarıldı.")
44
-#define MSG_LCD_ENDSTOPS                    _UxGT("Enstops") // Max length 8 characters
45
-#define MSG_LCD_SOFT_ENDSTOPS               _UxGT("Yazılımsal Endstops")
46
-#define MSG_MAIN                            _UxGT("Ana")
47
-#define MSG_ADVANCED_SETTINGS               _UxGT("Gelişmiş Ayarlar")
48
-#define MSG_CONFIGURATION                   _UxGT("Yapılandırma")
49
-#define MSG_AUTOSTART                       _UxGT("Oto. Başlat")
50
-#define MSG_DISABLE_STEPPERS                _UxGT("Motorları Durdur")
51
-#define MSG_DEBUG_MENU                      _UxGT("Hata Ayıklama")
52
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Durum Çubuğu Testi")
53
-#define MSG_AUTO_HOME                       _UxGT("Eksenleri Sıfırla")
54
-#define MSG_AUTO_HOME_X                     _UxGT("X Sıfırla")
55
-#define MSG_AUTO_HOME_Y                     _UxGT("Y Sıfırla")
56
-#define MSG_AUTO_HOME_Z                     _UxGT("Z Sıfırla")
57
-#define MSG_AUTO_Z_ALIGN                    _UxGT("Oto. Z-Hizalama")
58
-#define MSG_LEVEL_BED_HOMING                _UxGT("XYZ Sıfırlanıyor")
59
-#define MSG_LEVEL_BED_WAITING               _UxGT("Başlatmak için tıkla")
60
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Sonraki Nokta")
61
-#define MSG_LEVEL_BED_DONE                  _UxGT("Hizalama Tamam!")
62
-#define MSG_Z_FADE_HEIGHT                   _UxGT("Kaçınma Yüksekliği")
63
-#define MSG_SET_HOME_OFFSETS                _UxGT("Offset Ayarla")
64
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Offset Tamam")
65
-#define MSG_SET_ORIGIN                      _UxGT("Sıfır Belirle")
66
-#define MSG_PREHEAT_1                       _UxGT("Ön Isınma " PREHEAT_1_LABEL)
67
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
68
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Tüm")
69
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" Nozul")
70
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Tabla")
71
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" Ayarlar")
72
-#define MSG_PREHEAT_2                       _UxGT("Ön Isınma " PREHEAT_2_LABEL)
73
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
74
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Tüm")
75
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" Nozul")
76
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Tabla")
77
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" Ayarlar")
78
-#define MSG_PREHEAT_CUSTOM                  _UxGT("Özel Ön Isınma")
79
-#define MSG_COOLDOWN                        _UxGT("Soğut")
80
-#define MSG_SWITCH_PS_ON                    _UxGT("Gücü Aç")
81
-#define MSG_SWITCH_PS_OFF                   _UxGT("Gücü Kapat")
82
-#define MSG_EXTRUDE                         _UxGT("Ekstrüzyon")
83
-#define MSG_RETRACT                         _UxGT("Geri Çek")
84
-#define MSG_MOVE_AXIS                       _UxGT("Eksen Hareketleri")
85
-#define MSG_BED_LEVELING                    _UxGT("Tabla Hizalama")
86
-#define MSG_LEVEL_BED                       _UxGT("Tabla Hizası")
87
-#define MSG_LEVEL_CORNERS                   _UxGT("Hizalama Köşeleri")
88
-#define MSG_NEXT_CORNER                     _UxGT("Sonraki Köşe")
89
-#define MSG_EDIT_MESH                       _UxGT("Mesh Düzenle")
90
-#define MSG_EDITING_STOPPED                 _UxGT("Mesh Düzenleme Durdu")
91
-#define MSG_MESH_X                          _UxGT("İndeks X")
92
-#define MSG_MESH_Y                          _UxGT("İndeks Y")
93
-#define MSG_MESH_EDIT_Z                     _UxGT("Z Değeri")
94
-#define MSG_USER_MENU                       _UxGT("Özel Komutlar")
95
-#define MSG_IDEX_MENU                       _UxGT("IDEX Modu")
96
-#define MSG_IDEX_MODE_AUTOPARK              _UxGT("Oto-Park")
97
-#define MSG_IDEX_MODE_DUPLICATE             _UxGT("Kopyala")
98
-#define MSG_IDEX_MODE_MIRRORED_COPY         _UxGT("Yansıtılmış kopya")
99
-#define MSG_IDEX_MODE_FULL_CTRL             _UxGT("Tam Kontrol")
100
-#define MSG_X_OFFSET                        _UxGT("2. nozul X")
101
-#define MSG_Y_OFFSET                        _UxGT("2. nozul Y")
102
-#define MSG_Z_OFFSET                        _UxGT("2. nozul Z")
103
-#define MSG_UBL_DOING_G29                   _UxGT("G29 Çalışıyor")
104
-#define MSG_UBL_TOOLS                       _UxGT("UBL Araçları")
105
-#define MSG_UBL_LEVEL_BED                   _UxGT("UBL Yatak Hizalama")
106
-#define MSG_UBL_MANUAL_MESH                 _UxGT("Elle Mesh Oluştur")
107
-#define MSG_UBL_BC_INSERT                   _UxGT("Altlık & Ölçü Ver")
108
-#define MSG_UBL_BC_INSERT2                  _UxGT("Ölçü")
109
-#define MSG_UBL_BC_REMOVE                   _UxGT("Yataktan Ölçü Kaldır")
110
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Sonrakine Git")
111
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("UBL'yi Etkinleştir")
112
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("UBL'yi Etkisizleştir")
113
-#define MSG_UBL_SET_TEMP_BED                _UxGT("Yatak Sıcaklığı")
114
-#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
115
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("Nozul Sıcaklığı")
116
-#define MSG_UBL_HOTEND_TEMP_CUSTOM          MSG_UBL_SET_TEMP_HOTEND
117
-#define MSG_UBL_MESH_EDIT                   _UxGT("Mesh Düzenleme")
118
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Özel Mesh Düzenleme")
119
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("İnce Ayar Mesh")
120
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Mesh Düzenleme Tamam")
121
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Özel Mesh Oluştur")
122
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Mesh Oluştur")
123
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("Mesh Oluştur (" PREHEAT_1_LABEL ")")
124
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("Mesh Oluştur (" PREHEAT_2_LABEL ")")
125
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Soğuk Mesh Oluştur")
126
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Mesh Yükseklik Ayarı")
127
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Yükseklik miktarı")
128
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Doğrulama Mesh")
129
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("Doğrulama Mesh (" PREHEAT_1_LABEL ")")
130
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("Doğrulama Mesh (" PREHEAT_2_LABEL ")")
131
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Özel Mesh Doğrulama")
132
-#define MSG_UBL_CONTINUE_MESH               _UxGT("Tabla Mesh Devam et")
133
-#define MSG_UBL_MESH_LEVELING               _UxGT("Mesh Hizalama")
134
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("3-Nokta Hizalama")
135
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Kafes Mesh Hizalama")
136
-#define MSG_UBL_MESH_LEVEL                  _UxGT("Mesh Seviyesi")
137
-#define MSG_UBL_SIDE_POINTS                 _UxGT("Yan Noktalar")
138
-#define MSG_UBL_MAP_TYPE                    _UxGT("Haritalama Türü")
139
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("Mesh Çıkış Haritası")
140
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Host için Çıktı")
141
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("CSV için Çıktı")
142
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Yazıcıda Yedek Kpalı")
143
-#define MSG_UBL_INFO_UBL                    _UxGT("UBL Çıkış Bilgisi")
144
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Dolgu Miktarı")
145
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("Manuel Dolgu")
146
-#define MSG_UBL_SMART_FILLIN                _UxGT("Akıllı Dogu")
147
-#define MSG_UBL_FILLIN_MESH                 _UxGT("Mesh Dolgu")
148
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("Tümünü Geçersiz Kıl")
149
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Yakını Geçersiz Kıl")
150
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Tümünü İnce Ayarla")
151
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Yakını İnce Ayarla")
152
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Mesh Depolama")
153
-#define MSG_UBL_STORAGE_SLOT                _UxGT("Bellek Yuvası")
154
-#define MSG_UBL_LOAD_MESH                   _UxGT("Yatak Mesh Yükle")
155
-#define MSG_UBL_SAVE_MESH                   _UxGT("Yatak Mesh Kayıt Et")
156
-#define MSG_MESH_LOADED                     _UxGT("Mesh %i yüklendi")
157
-#define MSG_MESH_SAVED                      _UxGT("Mesh %i kayıtlandı")
158
-#define MSG_UBL_NO_STORAGE                  _UxGT("Depolama Yok")
159
-#define MSG_UBL_SAVE_ERROR                  _UxGT("Hata: UBL Kayıt")
160
-#define MSG_UBL_RESTORE_ERROR               _UxGT("Hata: UBL Yenileme")
161
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z-Ofset Durduruldu")
162
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("Adım Adım UBL")
163
-#define MSG_LED_CONTROL                     _UxGT("LED Kontrolü")
164
-#define MSG_LEDS                            _UxGT("Işıklar")
165
-#define MSG_LED_PRESETS                     _UxGT("Işık Hazır Ayarları")
166
-#define MSG_SET_LEDS_RED                    _UxGT("Kırmızı")
167
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Turuncu")
168
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Sarı")
169
-#define MSG_SET_LEDS_GREEN                  _UxGT("Yeşil")
170
-#define MSG_SET_LEDS_BLUE                   _UxGT("Mavi")
171
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Lacivert")
172
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Menekşe")
173
-#define MSG_SET_LEDS_WHITE                  _UxGT("Beyaz")
174
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Varsayılan")
175
-#define MSG_CUSTOM_LEDS                     _UxGT("Özel Işıklar")
176
-#define MSG_INTENSITY_R                     _UxGT("Kırmızı Şiddeti")
177
-#define MSG_INTENSITY_G                     _UxGT("Yeşil Şiddeti")
178
-#define MSG_INTENSITY_B                     _UxGT("Mavi Şiddeti")
179
-#define MSG_INTENSITY_W                     _UxGT("Beyaz Şiddeti")
180
-#define MSG_LED_BRIGHTNESS                  _UxGT("Parlaklık")
181
-#define MSG_MOVING                          _UxGT("Hareket Ediyor..")
182
-#define MSG_FREE_XY                         _UxGT("Durdur XY")
183
-#define MSG_MOVE_X                          _UxGT("X Hareketi")
184
-#define MSG_MOVE_Y                          _UxGT("Y Hareketi")
185
-#define MSG_MOVE_Z                          _UxGT("Z Hareketi")
186
-#define MSG_MOVE_E                          _UxGT("Ekstruder")
187
-#define MSG_HOTEND_TOO_COLD                 _UxGT("Nozul Çok Soğuk")
188
-#define MSG_MOVE_Z_DIST                     _UxGT("%smm")
189
-#define MSG_MOVE_01MM                       _UxGT("0.1mm")
190
-#define MSG_MOVE_1MM                        _UxGT("1mm")
191
-#define MSG_MOVE_10MM                       _UxGT("10mm")
192
-#define MSG_SPEED                           _UxGT("Hız")
193
-#define MSG_BED_Z                           _UxGT("Z Mesafesi")
194
-#define MSG_NOZZLE                          _UxGT("Nozul")
195
-#define MSG_BED                             _UxGT("Tabla")
196
-#define MSG_FAN_SPEED                       _UxGT("Fan Hızı")
197
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("Ekstra Fan Hızı")
198
-#define MSG_FLOW                            _UxGT("Akış")
199
-#define MSG_CONTROL                         _UxGT("Kontrol")
200
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
201
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
202
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Çarpan")
203
-#define MSG_AUTOTEMP                        _UxGT("Oto. Sıcaklık")
204
-#define MSG_LCD_ON                          _UxGT("Açık")
205
-#define MSG_LCD_OFF                         _UxGT("Kapalı")
206
-#define MSG_PID_P                           _UxGT("PID-P")
207
-#define MSG_PID_I                           _UxGT("PID-I")
208
-#define MSG_PID_D                           _UxGT("PID-D")
209
-#define MSG_PID_C                           _UxGT("PID-C")
210
-#define MSG_SELECT                          _UxGT("Seç")
211
-#define MSG_ACC                             _UxGT("İvme")
212
-#define MSG_JERK                            _UxGT("Sarsım")
213
-#if IS_KINEMATIC
214
-  #define MSG_VA_JERK                       _UxGT("Va-Sarsım")
215
-  #define MSG_VB_JERK                       _UxGT("Vb-Sarsım")
216
-  #define MSG_VC_JERK                       _UxGT("Vc-Sarsım")
217
-#else
218
-  #define MSG_VA_JERK                       _UxGT("Vx-Sarsım")
219
-  #define MSG_VB_JERK                       _UxGT("Vy-Sarsım")
220
-  #define MSG_VC_JERK                       _UxGT("Vz-Sarsım")
221
-#endif
222
-#define MSG_VE_JERK                         _UxGT("Ve-Sarsım")
223
-#define MSG_JUNCTION_DEVIATION              _UxGT("Jonksiyon Sapması")
224
-#define MSG_VELOCITY                        _UxGT("Hız Vektörü")
225
-#define MSG_VMAX                            _UxGT("HızVektör.max ")
226
-#define MSG_VMIN                            _UxGT("HızVektör.min")
227
-#define MSG_VTRAV_MIN                       _UxGT("HV.gezinme min")
228
-#define MSG_ACCELERATION                    _UxGT("Ivme")
229
-#define MSG_AMAX                            _UxGT("Max. ivme ")
230
-#define MSG_A_RETRACT                       _UxGT("Ivme-geri çekme")
231
-#define MSG_A_TRAVEL                        _UxGT("Ivme-gezinme")
232
-#define MSG_STEPS_PER_MM                    _UxGT("Adım/mm")
233
-#if IS_KINEMATIC
234
-  #define MSG_ASTEPS                        _UxGT("A adım/mm")
235
-  #define MSG_BSTEPS                        _UxGT("B adım/mm")
236
-  #define MSG_CSTEPS                        _UxGT("C adım/mm")
237
-#else
238
-  #define MSG_ASTEPS                        _UxGT("X adım/mm")
239
-  #define MSG_BSTEPS                        _UxGT("Y adım/mm")
240
-  #define MSG_CSTEPS                        _UxGT("Z adım/mm")
241
-#endif
242
-#define MSG_ESTEPS                          _UxGT("E adım/mm")
243
-#define MSG_E0_STEPS                        _UxGT("E1 adım/mm")
244
-#define MSG_E1_STEPS                        _UxGT("E2 adım/mm")
245
-#define MSG_E2_STEPS                        _UxGT("E3 adım/mm")
246
-#define MSG_E3_STEPS                        _UxGT("E4 adım/mm")
247
-#define MSG_E4_STEPS                        _UxGT("E5 adım/mm")
248
-#define MSG_E5_STEPS                        _UxGT("E6 adım/mm")
249
-#define MSG_TEMPERATURE                     _UxGT("Sıcaklık")
250
-#define MSG_MOTION                          _UxGT("Hareket")
251
-#define MSG_FILAMENT                        _UxGT("Filaman")
252
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("Ekstrüzyon/mm³")
253
-#define MSG_FILAMENT_DIAM                   _UxGT("Filaman Çapı")
254
-#define MSG_FILAMENT_UNLOAD                 _UxGT("Çıkart mm")
255
-#define MSG_FILAMENT_LOAD                   _UxGT("Yükle mm")
256
-#define MSG_ADVANCE_K                       _UxGT("K İlerlet")
257
-#define MSG_CONTRAST                        _UxGT("LCD Kontrast")
258
-#define MSG_STORE_EEPROM                    _UxGT("Hafızaya Al")
259
-#define MSG_LOAD_EEPROM                     _UxGT("Hafızadan Yükle")
260
-#define MSG_RESTORE_FAILSAFE                _UxGT("Fabrika Ayarları")
261
-#define MSG_INIT_EEPROM                     _UxGT("EEPROM'u başlat")
262
-#define MSG_MEDIA_UPDATE                    _UxGT("SD Güncellemesi")
263
-#define MSG_RESET_PRINTER                   _UxGT("Yazıcıyı Resetle")
264
-#define MSG_REFRESH                         _UxGT("Yenile")
265
-#define MSG_WATCH                           _UxGT("Bilgi Ekranı")
266
-#define MSG_PREPARE                         _UxGT("Hazırlık")
267
-#define MSG_TUNE                            _UxGT("Ayar")
268
-#define MSG_PAUSE_PRINT                     _UxGT("Duraklat")
269
-#define MSG_RESUME_PRINT                    _UxGT("Sürdür")
270
-#define MSG_STOP_PRINT                      _UxGT("Durdur")
271
-#define MSG_OUTAGE_RECOVERY                 _UxGT("Kesinti Kurtarma")
272
-#define MSG_MEDIA_MENU                      _UxGT("SD Karttan Yazdır")
273
-#define MSG_NO_MEDIA                        _UxGT("SD Kart Yok!")
274
-#define MSG_DWELL                           _UxGT("Uyku...")
275
-#define MSG_USERWAIT                        _UxGT("Operatör bekleniyor.")
276
-#define MSG_PRINT_PAUSED                    _UxGT("Baskı Duraklatıldı")
277
-#define MSG_PRINTING                        _UxGT("Baskı Yapılıyor...")
278
-#define MSG_PRINT_ABORTED                   _UxGT("Baskı Durduruldu!")
279
-#define MSG_NO_MOVE                         _UxGT("İşlem yok.")
280
-#define MSG_KILLED                          _UxGT("Kilitlendi. ")
281
-#define MSG_STOPPED                         _UxGT("Durdu. ")
282
-#define MSG_CONTROL_RETRACT                 _UxGT("Geri Çek mm")
283
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Swap Re.mm")
284
-#define MSG_CONTROL_RETRACTF                _UxGT("Geri Çekme V")
285
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Atlama mm")
286
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
287
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("S UnRet mm")
288
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
289
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("S UnRet V")
290
-#define MSG_AUTORETRACT                     _UxGT("Oto. Geri Çekme")
291
-#define MSG_FILAMENT_SWAP_LENGTH            _UxGT("G.Çekme Boyu")
292
-#define MSG_TOOL_CHANGE                     _UxGT("Takım Değişimi")
293
-#define MSG_TOOL_CHANGE_ZLIFT               _UxGT("Z Yükselt")
294
-#define MSG_SINGLENOZZLE_PRIME_SPD          _UxGT("Birincil Hız")
295
-#define MSG_SINGLENOZZLE_RETRACT_SPD        _UxGT("Geri Çekme Hızı")
296
-#define MSG_FILAMENTCHANGE                  _UxGT("Filaman Değiştir")
297
-#define MSG_FILAMENTLOAD                    _UxGT("Filaman Yükle")
298
-#define MSG_FILAMENTUNLOAD                  _UxGT("Filaman Çıkart")
299
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("Tümünü Çıkart")
300
-#define MSG_INIT_MEDIA                      _UxGT("SD Kart Başlatılıyor")
301
-#define MSG_CHANGE_MEDIA                    _UxGT("SD Kart Değiştir")
302
-#define MSG_ZPROBE_OUT                      _UxGT("Z Prob Açık. Tabla")
303
-#define MSG_SKEW_FACTOR                     _UxGT("Çarpıklık Faktörü")
304
-#define MSG_BLTOUCH                         _UxGT("BLTouch")
305
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Self-Test")
306
-#define MSG_BLTOUCH_RESET                   _UxGT("Sıfırla BLTouch")
307
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("BLTouch Aç")
308
-#define MSG_BLTOUCH_STOW                    _UxGT("BLTouch Kapat")
309
-#define MSG_MANUAL_DEPLOY                   _UxGT("Z-Prob Aç")
310
-#define MSG_MANUAL_STOW                     _UxGT("Z-Sensör Kapat")
311
-#define MSG_HOME_FIRST                      _UxGT("Sıfırla %s%s%s Önce")
312
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Offset")
313
-#define MSG_BABYSTEP_X                      _UxGT("Miniadım X")
314
-#define MSG_BABYSTEP_Y                      _UxGT("Miniadım Y")
315
-#define MSG_BABYSTEP_Z                      _UxGT("Miniadım Z")
316
-#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop iptal")
317
-#define MSG_HEATING_FAILED_LCD              _UxGT("Isınma başarısız")
318
-#define MSG_HEATING_FAILED_LCD_BED          _UxGT("Yatak Isınma Başrsız")
319
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Hata: Sıcaklık Aşımı")
320
-#define MSG_THERMAL_RUNAWAY                 _UxGT("TERMAL PROBLEM")
321
-#define MSG_THERMAL_RUNAWAY_BED             _UxGT("TABLA TERMAL PROBLEM")
322
-#define MSG_ERR_MAXTEMP                     _UxGT("Hata: MAX.SICAKLIK")
323
-#define MSG_ERR_MINTEMP                     _UxGT("Hata: MIN.SICAKLIK")
324
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Hata: MAX.SIC. TABLA")
325
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Hata: MIN.SIC. TABLA")
326
-#define MSG_ERR_Z_HOMING                    _UxGT("Önce XY Sıfırla")
327
-#define MSG_HALTED                          _UxGT("YAZICI DURDURULDU")
328
-#define MSG_PLEASE_RESET                    _UxGT("Lütfen Resetleyin")
329
-#define MSG_SHORT_DAY                       _UxGT("G") // One character only
330
-#define MSG_SHORT_HOUR                      _UxGT("S") // One character only
331
-#define MSG_SHORT_MINUTE                    _UxGT("D") // One character only
332
-#define MSG_HEATING                         _UxGT("Isınıyor...")
333
-#define MSG_COOLING                         _UxGT("Soğuyor...")
334
-#define MSG_BED_HEATING                     _UxGT("Tabla Isınıyor...")
335
-#define MSG_BED_COOLING                     _UxGT("Tabla Soğuyor...")
336
-#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibrasyonu")
337
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Ayarla X")
338
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Ayarla Y")
339
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Ayarla Z")
340
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Ayarla Merkez")
341
-#define MSG_DELTA_SETTINGS                  _UxGT("Delta Ayarları")
342
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Oto Kalibrasyon")
343
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Delta Yük. Ayarla")
344
-#define MSG_DELTA_Z_OFFSET_CALIBRATE        _UxGT("Z Prob Ofseti")
345
-#define MSG_DELTA_DIAG_ROD                  _UxGT("Çapral Mil")
346
-#define MSG_DELTA_HEIGHT                    _UxGT("Yükseklik")
347
-#define MSG_DELTA_RADIUS                    _UxGT("Yarıçap")
348
-#define MSG_INFO_MENU                       _UxGT("Yazıcı Hakkında")
349
-#define MSG_INFO_PRINTER_MENU               _UxGT("Yazıcı Bilgisi")
350
-#define MSG_3POINT_LEVELING                 _UxGT("3-Nokta Hizalama")
351
-#define MSG_LINEAR_LEVELING                 _UxGT("Doğrusal Hizalama")
352
-#define MSG_BILINEAR_LEVELING               _UxGT("İki Yönlü Doğ. Hiza.")
353
-#define MSG_UBL_LEVELING                    _UxGT("Birleşik Tabla Hiza.")
354
-#define MSG_MESH_LEVELING                   _UxGT("Mesh Hizalama")
355
-#define MSG_INFO_STATS_MENU                 _UxGT("İstatistikler")
356
-#define MSG_INFO_BOARD_MENU                 _UxGT("Kontrolcü Bilgisi")
357
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistörler")
358
-#define MSG_INFO_EXTRUDERS                  _UxGT("Ekstruderler")
359
-#define MSG_INFO_BAUDRATE                   _UxGT("İletişim Hızı")
360
-#define MSG_INFO_PROTOCOL                   _UxGT("Protokol")
361
-#define MSG_CASE_LIGHT                      _UxGT("Aydınlatmayı Aç")
362
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Aydınlatma Parlaklğı")
38
+namespace Language_tr {
39
+  using namespace Language_en; // Inherit undefined strings from English
363 40
 
364
-#define MSG_EXPECTED_PRINTER                _UxGT("Yanlış Yazıcı")
41
+  constexpr uint8_t    CHARSIZE                            = 2;
42
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Turkish");
365 43
 
366
-#if LCD_WIDTH >= 20
367
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Baskı Sayısı")
368
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Tamamlanan")
369
-  #define MSG_INFO_PRINT_TIME               _UxGT("Toplam Baskı Süresi")
370
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("En Uzun Baskı Süresi")
371
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Toplam Filaman")
372
-#else
373
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Baskı")
374
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Tamamlanan")
375
-  #define MSG_INFO_PRINT_TIME               _UxGT("Süre")
376
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("En Uzun")
377
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Filaman")
378
-#endif
379
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Sıc.")
380
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Sıc.")
381
-#define MSG_INFO_PSU                        _UxGT("Güç Kaynağı")
382
-#define MSG_DRIVE_STRENGTH                  _UxGT("Sürücü Gücü")
383
-#define MSG_DAC_PERCENT                     _UxGT("Sürücü %")
384
-#define MSG_DAC_EEPROM_WRITE                _UxGT("DAC EEPROM Yaz")
385
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("BASKI DURAKLATILDI")
386
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("FILAMAN YüKLE")
387
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("FILAMAN ÇIKART")
388
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("Seçenekler:")
389
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("Daha Fazla Tasviye")
390
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Baskıyı sürdür")
391
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozul: ")
392
-#define MSG_RUNOUT_SENSOR                   _UxGT("Runout Sensörü")
393
-#define MSG_ERR_HOMING_FAILED               _UxGT("Sıfırlama Başarısız")
394
-#define MSG_ERR_PROBING_FAILED              _UxGT("Probing Başarısız")
395
-#define MSG_M600_TOO_COLD                   _UxGT("M600: Çok Soğuk")
396
-//
397
-// Filament Değiştirme ekranları, 4 satırlı bir ekranda 3 satıra kadar gösterilir
398
-//                        ...veya 3 satırlı ekranda 2 satıra kadar
399
-#if LCD_HEIGHT >= 4
400
-  // Up to 3 lines allowed
401
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Baskıya devam etmek")
402
-  #define MSG_ADVANCED_PAUSE_WAITING_2      _UxGT("için Butona bas")
403
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Filaman değişimi")
404
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("için başlama")
405
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("bekleniyor")
406
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Filamanı yükle")
407
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("ve devam için")
408
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("tuşa bas...")
409
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Nozulü Isıtmak için")
410
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("Butona Bas.")
411
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Nozul Isınıyor")
412
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Lütfen Bekleyin...")
413
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Filamanın çıkması")
414
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("bekleniyor")
415
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Filamanın yüklenmesi")
416
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("bekleniyor..")
417
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Filaman Temizlemesi")
418
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("için bekle")
419
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Filaman Temizlemesi")
420
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_2  _UxGT("bitirmek için tıkla")
421
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Baskının devam ")
422
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("etmesi için bekle")
423
-#else // LCD_HEIGHT < 4
424
-  // Up to 2 lines allowed
425
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Sürdürmek İçin Tıkla")
426
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Lütfen bekleyiniz...")
427
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Yükle ve bas")
428
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Isıtmak için Tıkla")
429
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Isınıyor...")
430
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Çıkartılıyor...")
431
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Yüklüyor...")
432
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Temizleniyor...")
433
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Bitirmek için Tıkla")
434
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Sürdürülüyor...")
435
-#endif // LCD_HEIGHT < 4
44
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" hazır.");
45
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Geri");
46
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("SD K. Yerleştirildi.");
47
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("SD Kart Çıkarıldı.");
48
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Enstops"); // Max length 8 characters
49
+  PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS               = _UxGT("Yazılımsal Endstops");
50
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Ana");
51
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("Gelişmiş Ayarlar");
52
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("Yapılandırma");
53
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Oto. Başlat");
54
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Motorları Durdur");
55
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Hata Ayıklama");
56
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Durum Çubuğu Testi");
57
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Eksenleri Sıfırla");
58
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("X Sıfırla");
59
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Y Sıfırla");
60
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Z Sıfırla");
61
+  PROGMEM Language_Str MSG_AUTO_Z_ALIGN                    = _UxGT("Oto. Z-Hizalama");
62
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("XYZ Sıfırlanıyor");
63
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Başlatmak için tıkla");
64
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Sonraki Nokta");
65
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Hizalama Tamam!");
66
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("Kaçınma Yüksekliği");
67
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Offset Ayarla");
68
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Offset Tamam");
69
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Sıfır Belirle");
70
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N0;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N1;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N2;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N3;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N4;
76
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N5;
77
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
78
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N0;
79
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N1;
80
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N2;
81
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N3;
82
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N4;
83
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N5;
84
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
85
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
86
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
87
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Ön Isınma ") PREHEAT_2_LABEL;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N0;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N1;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N2;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N3;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N4;
93
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N5;
94
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul");
95
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N0;
96
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N1;
97
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N2;
98
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N3;
99
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N4;
100
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N5;
101
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tüm");
102
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tabla");
103
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Ayarlar");
104
+  PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Özel Ön Isınma");
105
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Soğut");
106
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Gücü Aç");
107
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Gücü Kapat");
108
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Ekstrüzyon");
109
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Geri Çek");
110
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Eksen Hareketleri");
111
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Tabla Hizalama");
112
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Tabla Hizası");
113
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("Hizalama Köşeleri");
114
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("Sonraki Köşe");
115
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("Mesh Düzenle");
116
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("Mesh Düzenleme Durdu");
117
+  PROGMEM Language_Str MSG_MESH_X                          = _UxGT("İndeks X");
118
+  PROGMEM Language_Str MSG_MESH_Y                          = _UxGT("İndeks Y");
119
+  PROGMEM Language_Str MSG_MESH_EDIT_Z                     = _UxGT("Z Değeri");
120
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("Özel Komutlar");
121
+  PROGMEM Language_Str MSG_IDEX_MENU                       = _UxGT("IDEX Modu");
122
+  PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK              = _UxGT("Oto-Park");
123
+  PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE             = _UxGT("Kopyala");
124
+  PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY         = _UxGT("Yansıtılmış kopya");
125
+  PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL             = _UxGT("Tam Kontrol");
126
+  PROGMEM Language_Str MSG_X_OFFSET                        = _UxGT("2. nozul X");
127
+  PROGMEM Language_Str MSG_Y_OFFSET                        = _UxGT("2. nozul Y");
128
+  PROGMEM Language_Str MSG_Z_OFFSET                        = _UxGT("2. nozul Z");
129
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("G29 Çalışıyor");
130
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("UBL Araçları");
131
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("UBL Yatak Hizalama");
132
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("Elle Mesh Oluştur");
133
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("Altlık & Ölçü Ver");
134
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("Ölçü");
135
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("Yataktan Ölçü Kaldır");
136
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("Sonrakine Git");
137
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("UBL'yi Etkinleştir");
138
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("UBL'yi Etkisizleştir");
139
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("Yatak Sıcaklığı");
140
+  PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM             = _UxGT("Yatak Sıcaklığı");
141
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("Nozul Sıcaklığı");
142
+  PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM          = _UxGT("Nozul Sıcaklığı");
143
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Mesh Düzenleme");
144
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("Özel Mesh Düzenleme");
145
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("İnce Ayar Mesh");
146
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Mesh Düzenleme Tamam");
147
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Özel Mesh Oluştur");
148
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Mesh Oluştur");
149
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Mesh Oluştur (") PREHEAT_1_LABEL _UxGT(")");
150
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Mesh Oluştur (") PREHEAT_2_LABEL _UxGT(")");
151
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Soğuk Mesh Oluştur");
152
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Mesh Yükseklik Ayarı");
153
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Yükseklik miktarı");
154
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Doğrulama Mesh");
155
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Doğrulama Mesh (") PREHEAT_1_LABEL _UxGT(")");
156
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Doğrulama Mesh (") PREHEAT_2_LABEL _UxGT(")");
157
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Özel Mesh Doğrulama");
158
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Tabla Mesh Devam et");
159
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Mesh Hizalama");
160
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("3-Nokta Hizalama");
161
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("Kafes Mesh Hizalama");
162
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("Mesh Seviyesi");
163
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("Yan Noktalar");
164
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("Haritalama Türü");
165
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("Mesh Çıkış Haritası");
166
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("Host için Çıktı");
167
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("CSV için Çıktı");
168
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("Yazıcıda Yedek Kpalı");
169
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("UBL Çıkış Bilgisi");
170
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("Dolgu Miktarı");
171
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("Manuel Dolgu");
172
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("Akıllı Dogu");
173
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("Mesh Dolgu");
174
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("Tümünü Geçersiz Kıl");
175
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("Yakını Geçersiz Kıl");
176
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("Tümünü İnce Ayarla");
177
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("Yakını İnce Ayarla");
178
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("Mesh Depolama");
179
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("Bellek Yuvası");
180
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("Yatak Mesh Yükle");
181
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("Yatak Mesh Kayıt Et");
182
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 Mesh %i yüklendi");
183
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 Mesh %i kayıtlandı");
184
+  PROGMEM Language_Str MSG_UBL_NO_STORAGE                  = _UxGT("Depolama Yok");
185
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("Hata: UBL Kayıt");
186
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("Hata: UBL Yenileme");
187
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Z-Ofset Durduruldu");
188
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("Adım Adım UBL");
189
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1.Soğuk Mesh Oluştur");
190
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2.Akıllı Dogu");
191
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3.Doğrulama Mesh");
192
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4.Tümünü İnce Ayarla");
193
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5.Doğrulama Mesh");
194
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6.Tümünü İnce Ayarla");
195
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7.Yatak Mesh Kayıt Et");
196
+
197
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("LED Kontrolü");
198
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("Işıklar");
199
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("Işık Hazır Ayarları");
200
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("Kırmızı");
201
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("Turuncu");
202
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("Sarı");
203
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("Yeşil");
204
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("Mavi");
205
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("Lacivert");
206
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("Menekşe");
207
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("Beyaz");
208
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("Varsayılan");
209
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("Özel Işıklar");
210
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("Kırmızı Şiddeti");
211
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("Yeşil Şiddeti");
212
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("Mavi Şiddeti");
213
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("Beyaz Şiddeti");
214
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("Parlaklık");
215
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Hareket Ediyor..");
216
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Durdur XY");
217
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("X Hareketi");
218
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Y Hareketi");
219
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Z Hareketi");
220
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Ekstruder");
221
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Ekstruder ") LCD_STR_E0;
222
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Ekstruder ") LCD_STR_E1;
223
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Ekstruder ") LCD_STR_E2;
224
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Ekstruder ") LCD_STR_E3;
225
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Ekstruder ") LCD_STR_E4;
226
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Ekstruder ") LCD_STR_E5;
227
+  PROGMEM Language_Str MSG_HOTEND_TOO_COLD                 = _UxGT("Nozul Çok Soğuk");
228
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("%smm");
229
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("0.1mm");
230
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("1mm");
231
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("10mm");
232
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Hız");
233
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Z Mesafesi");
234
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Nozul");
235
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Nozul ") LCD_STR_N0;
236
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Nozul ") LCD_STR_N1;
237
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Nozul ") LCD_STR_N2;
238
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Nozul ") LCD_STR_N3;
239
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Nozul ") LCD_STR_N4;
240
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Nozul ") LCD_STR_N5;
241
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Tabla");
242
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Fan Hızı");
243
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Fan Hızı 1");
244
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Fan Hızı 2");
245
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Fan Hızı 3");
246
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("Ekstra Fan Hızı");
247
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("Ekstra Fan Hızı 1");
248
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("Ekstra Fan Hızı 2");
249
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("Ekstra Fan Hızı 3");
250
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Akış");
251
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Akış ") LCD_STR_N0;
252
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Akış ") LCD_STR_N1;
253
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Akış ") LCD_STR_N2;
254
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Akış ") LCD_STR_N3;
255
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Akış ") LCD_STR_N4;
256
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Akış ") LCD_STR_N5;
257
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Kontrol");
258
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Min");
259
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Max");
260
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Çarpan");
261
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Oto. Sıcaklık");
262
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Açık");
263
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Kapalı");
264
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Seç");
265
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Seç ") LCD_STR_E0;
266
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Seç ") LCD_STR_E1;
267
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Seç ") LCD_STR_E2;
268
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Seç ") LCD_STR_E3;
269
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Seç ") LCD_STR_E4;
270
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Seç ") LCD_STR_E5;
271
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("İvme");
272
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Sarsım");
273
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("V") LCD_STR_A _UxGT("-Sarsım");
274
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("V") LCD_STR_B _UxGT("-Sarsım");
275
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("V") LCD_STR_C _UxGT("-Sarsım");
276
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Ve-Sarsım");
277
+  PROGMEM Language_Str MSG_JUNCTION_DEVIATION              = _UxGT("Jonksiyon Sapması");
278
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("Hız Vektörü");
279
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("HızVektör.max ") LCD_STR_A;
280
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("HızVektör.max ") LCD_STR_B;
281
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("HızVektör.max ") LCD_STR_C;
282
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("HızVektör.max ") LCD_STR_E;
283
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("HızVektör.max ") LCD_STR_E0;
284
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("HızVektör.max ") LCD_STR_E1;
285
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("HızVektör.max ") LCD_STR_E2;
286
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("HızVektör.max ") LCD_STR_E3;
287
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("HızVektör.max ") LCD_STR_E4;
288
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("HızVektör.max ") LCD_STR_E5;
289
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("HızVektör.min");
290
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("HV.gezinme min");
291
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Ivme");
292
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Max. ivme ") LCD_STR_A;
293
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Max. ivme ") LCD_STR_B;
294
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Max. ivme ") LCD_STR_C;
295
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Max. ivme ") LCD_STR_E;
296
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Max. ivme ") LCD_STR_E0;
297
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Max. ivme ") LCD_STR_E1;
298
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Max. ivme ") LCD_STR_E2;
299
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Max. ivme ") LCD_STR_E3;
300
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Max. ivme ") LCD_STR_E4;
301
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Max. ivme ") LCD_STR_E5;
302
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("Ivme-geri çekme");
303
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("Ivme-gezinme");
304
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Adım/mm");
305
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT(" adım/mm");
306
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT(" adım/mm");
307
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT(" adım/mm");
308
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("E adım/mm");
309
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT(" adım/mm");
310
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT(" adım/mm");
311
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT(" adım/mm");
312
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT(" adım/mm");
313
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT(" adım/mm");
314
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT(" adım/mm");
315
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Sıcaklık");
316
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Hareket");
317
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Filaman");
318
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("Ekstrüzyon/mm³");
319
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Filaman Çapı");
320
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Filaman Çapı ") LCD_STR_E0;
321
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Filaman Çapı ") LCD_STR_E1;
322
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Filaman Çapı ") LCD_STR_E2;
323
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Filaman Çapı ") LCD_STR_E3;
324
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Filaman Çapı ") LCD_STR_E4;
325
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Filaman Çapı ") LCD_STR_E5;
326
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("Çıkart mm");
327
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("Yükle mm");
328
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("K İlerlet");
329
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("K İlerlet ") LCD_STR_E0;
330
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("K İlerlet ") LCD_STR_E1;
331
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("K İlerlet ") LCD_STR_E2;
332
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("K İlerlet ") LCD_STR_E3;
333
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("K İlerlet ") LCD_STR_E4;
334
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("K İlerlet ") LCD_STR_E5;
335
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD Kontrast");
336
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Hafızaya Al");
337
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Hafızadan Yükle");
338
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Fabrika Ayarları");
339
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("EEPROM'u başlat");
340
+  PROGMEM Language_Str MSG_MEDIA_UPDATE                    = _UxGT("SD Güncellemesi");
341
+  PROGMEM Language_Str MSG_RESET_PRINTER                   = _UxGT("Yazıcıyı Resetle");
342
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Yenile");
343
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Bilgi Ekranı");
344
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Hazırlık");
345
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Ayar");
346
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Duraklat");
347
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Sürdür");
348
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Durdur");
349
+  PROGMEM Language_Str MSG_OUTAGE_RECOVERY                 = _UxGT("Kesinti Kurtarma");
350
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("SD Karttan Yazdır");
351
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("SD Kart Yok!");
352
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Uyku...");
353
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Operatör bekleniyor.");
354
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("Baskı Duraklatıldı");
355
+  PROGMEM Language_Str MSG_PRINTING                        = _UxGT("Baskı Yapılıyor...");
356
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Baskı Durduruldu!");
357
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("İşlem yok.");
358
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("Kilitlendi. ");
359
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("Durdu. ");
360
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Geri Çek mm");
361
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Swap Re.mm");
362
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Geri Çekme V");
363
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Atlama mm");
364
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("UnRet mm");
365
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("S UnRet mm");
366
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("UnRet  V");
367
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("S UnRet V");
368
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("Oto. Geri Çekme");
369
+  PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH            = _UxGT("G.Çekme Boyu");
370
+  PROGMEM Language_Str MSG_TOOL_CHANGE                     = _UxGT("Takım Değişimi");
371
+  PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT               = _UxGT("Z Yükselt");
372
+  PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD          = _UxGT("Birincil Hız");
373
+  PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD        = _UxGT("Geri Çekme Hızı");
374
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Filaman Değiştir");
375
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Filaman Değiştir ") LCD_STR_E0;
376
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Filaman Değiştir ") LCD_STR_E1;
377
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Filaman Değiştir ") LCD_STR_E2;
378
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Filaman Değiştir ") LCD_STR_E3;
379
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Filaman Değiştir ") LCD_STR_E4;
380
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Filaman Değiştir ") LCD_STR_E5;
381
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("Filaman Yükle ") LCD_STR_E0;
382
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("Filaman Yükle ") LCD_STR_E1;
383
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("Filaman Yükle ") LCD_STR_E2;
384
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("Filaman Yükle ") LCD_STR_E3;
385
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("Filaman Yükle ") LCD_STR_E4;
386
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("Filaman Yükle ") LCD_STR_E5;
387
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("Filaman Çıkart ") LCD_STR_E0;
388
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("Filaman Çıkart ") LCD_STR_E1;
389
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("Filaman Çıkart ") LCD_STR_E2;
390
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("Filaman Çıkart ") LCD_STR_E3;
391
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("Filaman Çıkart ") LCD_STR_E4;
392
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("Filaman Çıkart ") LCD_STR_E5;
393
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("Tümünü Çıkart");
394
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("SD Kart Başlatılıyor");
395
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("SD Kart Değiştir");
396
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z Prob Açık. Tabla");
397
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("Çarpıklık Faktörü");
398
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");
399
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch Self-Test");
400
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Sıfırla BLTouch");
401
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("BLTouch Aç");
402
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("BLTouch Kapat");
403
+  PROGMEM Language_Str MSG_MANUAL_DEPLOY                   = _UxGT("Z-Prob Aç");
404
+  PROGMEM Language_Str MSG_MANUAL_STOW                     = _UxGT("Z-Sensör Kapat");
405
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Sıfırla %s%s%s Önce");
406
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Miniadım X");
407
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Miniadım Y");
408
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Miniadım Z");
409
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Endstop iptal");
410
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Isınma başarısız");
411
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED          = _UxGT("Yatak Isınma Başrsız");
412
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Hata: Sıcaklık Aşımı");
413
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("TERMAL PROBLEM");
414
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED             = _UxGT("TABLA TERMAL PROBLEM");
415
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Hata: MAX.SICAKLIK");
416
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Hata: MIN.SICAKLIK");
417
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Hata: MAX.SIC. TABLA");
418
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Hata: MIN.SIC. TABLA");
419
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Önce XY Sıfırla");
420
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("YAZICI DURDURULDU");
421
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Lütfen Resetleyin");
422
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("G"); // One character only
423
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("S"); // One character only
424
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("D"); // One character only
425
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Isınıyor...");
426
+  PROGMEM Language_Str MSG_COOLING                         = _UxGT("Soğuyor...");
427
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Tabla Isınıyor...");
428
+  PROGMEM Language_Str MSG_BED_COOLING                     = _UxGT("Tabla Soğuyor...");
429
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Delta Kalibrasyonu");
430
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Ayarla X");
431
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Ayarla Y");
432
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Ayarla Z");
433
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Ayarla Merkez");
434
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("Delta Ayarları");
435
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Oto Kalibrasyon");
436
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Delta Yük. Ayarla");
437
+  PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE        = _UxGT("Z Prob Ofseti");
438
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("Çapral Mil");
439
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("Yükseklik");
440
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("Yarıçap");
441
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Yazıcı Hakkında");
442
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Yazıcı Bilgisi");
443
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("3-Nokta Hizalama");
444
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("Doğrusal Hizalama");
445
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("İki Yönlü Doğ. Hiza.");
446
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("Birleşik Tabla Hiza.");
447
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("Mesh Hizalama");
448
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("İstatistikler");
449
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Kontrolcü Bilgisi");
450
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Termistörler");
451
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Ekstruderler");
452
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("İletişim Hızı");
453
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Protokol");
454
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Aydınlatmayı Aç");
455
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("Aydınlatma Parlaklğı");
456
+
457
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Yanlış Yazıcı");
458
+
459
+  #if LCD_WIDTH >= 20
460
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Baskı Sayısı");
461
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Tamamlanan");
462
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Toplam Baskı Süresi");
463
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("En Uzun Baskı Süresi");
464
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Toplam Filaman");
465
+  #else
466
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Baskı");
467
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Tamamlanan");
468
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Süre");
469
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("En Uzun");
470
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Filaman");
471
+  #endif
472
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Min Sıc.");
473
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Max Sıc.");
474
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Güç Kaynağı");
475
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Sürücü Gücü");
476
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("Sürücü %");
477
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("DAC EEPROM Yaz");
478
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("BASKI DURAKLATILDI");
479
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("FILAMAN YüKLE");
480
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("FILAMAN ÇIKART");
481
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("Seçenekler:");
482
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("Daha Fazla Tasviye");
483
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Baskıyı sürdür");
484
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  Nozul: ");
485
+  PROGMEM Language_Str MSG_RUNOUT_SENSOR                   = _UxGT("Runout Sensörü");
486
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("Sıfırlama Başarısız");
487
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("Probing Başarısız");
488
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: Çok Soğuk");
489
+  //
490
+  // Filament Değiştirme ekranları, 4 satırlı bir ekranda 3 satıra kadar gösterilir
491
+  //                        ...veya 3 satırlı ekranda 2 satıra kadar
492
+  #if LCD_HEIGHT >= 4
493
+    // Up to 3 lines allowed
494
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas"));
495
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor"));
496
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas..."));
497
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas."));
498
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin..."));
499
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor"));
500
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor.."));
501
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle"));
502
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla"));
503
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle"));
504
+  #else // LCD_HEIGHT < 4
505
+    // Up to 2 lines allowed
506
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla"));
507
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Lütfen bekleyiniz..."));
508
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Yükle ve bas"));
509
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_1_LINE("Isıtmak için Tıkla"));
510
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Isınıyor..."));
511
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Çıkartılıyor..."));
512
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Yüklüyor..."));
513
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("Temizleniyor..."));
514
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_1_LINE("Bitirmek için Tıkla"));
515
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Sürdürülüyor..."));
516
+  #endif // LCD_HEIGHT < 4
517
+}

+ 293
- 202
Marlin/src/lcd/language/language_uk.h Zobrazit soubor

@@ -30,213 +30,304 @@
30 30
  */
31 31
 
32 32
 #define DISPLAY_CHARSET_ISO10646_5
33
-#define CHARSIZE 2
34 33
 
35
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" готовий.")
36
-#define MSG_MEDIA_INSERTED                  _UxGT("Картка вставлена")
37
-#define MSG_MEDIA_REMOVED                   _UxGT("Картка видалена")
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("Кінцевик") // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("Меню")
40
-#define MSG_AUTOSTART                       _UxGT("Автостарт")
41
-#define MSG_DISABLE_STEPPERS                _UxGT("Вимк. двигуни")
42
-#define MSG_AUTO_HOME                       _UxGT("Авто паркування")
43
-#define MSG_AUTO_HOME_X                     _UxGT("Паркування X")
44
-#define MSG_AUTO_HOME_Y                     _UxGT("Паркування Y")
45
-#define MSG_AUTO_HOME_Z                     _UxGT("Паркування Z")
46
-#define MSG_LEVEL_BED_HOMING                _UxGT("Паркування XYZ")
47
-#define MSG_LEVEL_BED_WAITING               _UxGT("Почати")
48
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Слідуюча Точка")
49
-#define MSG_LEVEL_BED_DONE                  _UxGT("Завершено!")
50
-#define MSG_SET_HOME_OFFSETS                _UxGT("Зберегти паркув.")
51
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Зміщення застос.")
52
-#define MSG_SET_ORIGIN                      _UxGT("Встанов. початок")
53
-#define MSG_PREHEAT_1                       _UxGT("Нагрів " PREHEAT_1_LABEL)
54
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
55
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Все")
56
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Стіл")
57
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" нал.")
58
-#define MSG_PREHEAT_2                       _UxGT("Нагрів " PREHEAT_2_LABEL)
59
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
60
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Все")
61
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Стіл")
62
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" нал.")
63
-#define MSG_COOLDOWN                        _UxGT("Охолодження")
64
-#define MSG_SWITCH_PS_ON                    _UxGT("Увімкнути живлення")
65
-#define MSG_SWITCH_PS_OFF                   _UxGT("Вимкнути живлення")
66
-#define MSG_EXTRUDE                         _UxGT("Екструзія")
67
-#define MSG_RETRACT                         _UxGT("Втягування")
68
-#define MSG_MOVE_AXIS                       _UxGT("Рух по осям")
69
-#define MSG_BED_LEVELING                    _UxGT("Нівелювання столу")
70
-#define MSG_LEVEL_BED                       _UxGT("Нівелювання столу")
71
-#define MSG_MOVE_X                          _UxGT("Рух по X")
72
-#define MSG_MOVE_Y                          _UxGT("Рух по Y")
73
-#define MSG_MOVE_Z                          _UxGT("Рух по Z")
74
-#define MSG_MOVE_E                          _UxGT("Екструдер")
75
-#define MSG_MOVE_Z_DIST                     _UxGT("Рух по %smm")
76
-#define MSG_MOVE_01MM                       _UxGT("Рух по 0.1mm")
77
-#define MSG_MOVE_1MM                        _UxGT("Рух по 1mm")
78
-#define MSG_MOVE_10MM                       _UxGT("Рух по 10mm")
79
-#define MSG_SPEED                           _UxGT("Швидкість")
80
-#define MSG_BED_Z                           _UxGT("Z Столу")
81
-#define MSG_NOZZLE                          _UxGT("Сопло")
82
-#define MSG_BED                             _UxGT("Стіл")
83
-#define MSG_FAN_SPEED                       _UxGT("Охолодж.")
84
-#define MSG_FLOW                            _UxGT("Потік")
85
-#define MSG_CONTROL                         _UxGT("Налаштування")
86
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Мін")
87
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Макс")
88
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Факт")
89
-#define MSG_AUTOTEMP                        _UxGT("Автотемпер.")
90
-#define MSG_LCD_ON                          _UxGT("Увімк.")
91
-#define MSG_LCD_OFF                         _UxGT("Вимк.")
92
-#define MSG_PID_P                           _UxGT("PID-P")
93
-#define MSG_PID_I                           _UxGT("PID-I")
94
-#define MSG_PID_D                           _UxGT("PID-D")
95
-#define MSG_PID_C                           _UxGT("PID-C")
96
-#define MSG_SELECT                          _UxGT("Вибрати")
97
-#define MSG_ACC                             _UxGT("Приск.")
98
-#define MSG_JERK                            _UxGT("Ривок")
99
-#if IS_KINEMATIC
100
-  #define MSG_VA_JERK                       _UxGT("Va-ривок")
101
-  #define MSG_VB_JERK                       _UxGT("Vb-ривок")
102
-  #define MSG_VC_JERK                       _UxGT("Vc-ривок")
103
-#else
104
-  #define MSG_VA_JERK                       _UxGT("Vx-ривок")
105
-  #define MSG_VB_JERK                       _UxGT("Vy-ривок")
106
-  #define MSG_VC_JERK                       _UxGT("Vz-ривок")
107
-#endif
108
-#define MSG_VE_JERK                         _UxGT("Ve-ривок")
109
-#define MSG_VMAX                            _UxGT("Vмакс")
110
-#define MSG_VMIN                            _UxGT("Vмін")
111
-#define MSG_VTRAV_MIN                       _UxGT("Vруху мін")
112
-#define MSG_AMAX                            _UxGT("Aмакс ")
113
-#define MSG_A_RETRACT                       _UxGT("A-втягув.")
114
-#define MSG_A_TRAVEL                        _UxGT("A-руху")
115
-#define MSG_STEPS_PER_MM                    _UxGT("Кроків/мм")
116
-#if IS_KINEMATIC
117
-  #define MSG_ASTEPS                        _UxGT("Aкроків/мм")
118
-  #define MSG_BSTEPS                        _UxGT("Bкроків/мм")
119
-  #define MSG_CSTEPS                        _UxGT("Cкроків/мм")
120
-#else
121
-  #define MSG_ASTEPS                        _UxGT("Xкроків/мм")
122
-  #define MSG_BSTEPS                        _UxGT("Yкроків/мм")
123
-  #define MSG_CSTEPS                        _UxGT("Zкроків/мм")
124
-#endif
125
-#define MSG_ESTEPS                          _UxGT("Eкроків/мм")
126
-#define MSG_E0_STEPS                        _UxGT("E1кроків/мм")
127
-#define MSG_E1_STEPS                        _UxGT("E2кроків/мм")
128
-#define MSG_E2_STEPS                        _UxGT("E3кроків/мм")
129
-#define MSG_E3_STEPS                        _UxGT("E4кроків/мм")
130
-#define MSG_E4_STEPS                        _UxGT("E5кроків/мм")
131
-#define MSG_E5_STEPS                        _UxGT("E6кроків/мм")
132
-#define MSG_TEMPERATURE                     _UxGT("Температура")
133
-#define MSG_MOTION                          _UxGT("Рух")
134
-#define MSG_FILAMENT                        _UxGT("Волокно")
135
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E в мм3")
136
-#define MSG_FILAMENT_DIAM                   _UxGT("Діам. волок.")
137
-#define MSG_CONTRAST                        _UxGT("контраст LCD")
138
-#define MSG_STORE_EEPROM                    _UxGT("Зберегти в ПЗП")
139
-#define MSG_LOAD_EEPROM                     _UxGT("Зчитати з ПЗП")
140
-#define MSG_RESTORE_FAILSAFE                _UxGT("Відновити базові")
141
-#define MSG_REFRESH                         _UxGT("Поновити")
142
-#define MSG_WATCH                           _UxGT("Інформація")
143
-#define MSG_PREPARE                         _UxGT("Підготувати")
144
-#define MSG_TUNE                            _UxGT("Підлаштування")
145
-#define MSG_PAUSE_PRINT                     _UxGT("Призупинити друк")
146
-#define MSG_RESUME_PRINT                    _UxGT("Відновити друк")
147
-#define MSG_STOP_PRINT                      _UxGT("Скасувати друк")
148
-#define MSG_MEDIA_MENU                      _UxGT("Друкувати з SD")
149
-#define MSG_NO_MEDIA                        _UxGT("Відсутня SD карт.")
150
-#define MSG_DWELL                           _UxGT("Сплячка...")
151
-#define MSG_USERWAIT                        _UxGT("Очікування дій...")
152
-#define MSG_PRINT_ABORTED                   _UxGT("Друк скасовано")
153
-#define MSG_NO_MOVE                         _UxGT("Немає руху.")
154
-#define MSG_KILLED                          _UxGT("ПЕРЕРВАНО. ")
155
-#define MSG_STOPPED                         _UxGT("ЗУПИНЕНО. ")
156
-#define MSG_FILAMENTCHANGE                  _UxGT("Зміна волокна")
157
-#define MSG_INIT_MEDIA                      _UxGT("Старт SD картки")
158
-#define MSG_CHANGE_MEDIA                    _UxGT("Заміна SD карти")
159
-#define MSG_ZPROBE_OUT                      _UxGT("Z дет. не в межах")
160
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Само-Тест")
161
-#define MSG_BLTOUCH_RESET                   _UxGT("Скинути BLTouch")
162
-#define MSG_HOME_FIRST                      _UxGT("Дім %s%s%s перший")
163
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Зміщення Z")
164
-#define MSG_BABYSTEP_X                      _UxGT("Мікрокрок X")
165
-#define MSG_BABYSTEP_Y                      _UxGT("Мікрокрок Y")
166
-#define MSG_BABYSTEP_Z                      _UxGT("Мікрокрок Z")
167
-#define MSG_ENDSTOP_ABORT                   _UxGT("невдача кінцевика")
168
-#define MSG_HEATING_FAILED_LCD              _UxGT("Невдалий нагрів")
169
-#define MSG_THERMAL_RUNAWAY                 _UxGT("ЗБІЙ ТЕМПЕРАТУРИ")
170
-#define MSG_ERR_Z_HOMING                    _UxGT("Дім XY перший")
171
-#define MSG_HALTED                          _UxGT("ПРИНТЕР ЗУПИНЕНО")
172
-#define MSG_PLEASE_RESET                    _UxGT("Перезавантажте")
173
-#define MSG_SHORT_DAY                       _UxGT("д") // One character only
174
-#define MSG_SHORT_HOUR                      _UxGT("г") // One character only
175
-#define MSG_SHORT_MINUTE                    _UxGT("х") // One character only
176
-#define MSG_HEATING                         _UxGT("Нагрівання...")
177
-#define MSG_BED_HEATING                     _UxGT("Нагрівання столу...")
178
-#define MSG_DELTA_CALIBRATE                 _UxGT("Калібр. Delta")
179
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Калібрування X")
180
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Калібрування Y")
181
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Калібрування Z")
182
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Калібр. Центру")
34
+namespace Language_uk {
35
+  using namespace Language_en; // Inherit undefined strings from English
183 36
 
184
-#define MSG_INFO_MENU                       _UxGT("Про принтер")
185
-#define MSG_INFO_PRINTER_MENU               _UxGT("Інформація")
186
-#define MSG_INFO_STATS_MENU                 _UxGT("Статистика")
187
-#define MSG_INFO_BOARD_MENU                 _UxGT("Про плату")
188
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Термістори")
189
-#define MSG_INFO_EXTRUDERS                  _UxGT("Екструдери")
190
-#define MSG_INFO_BAUDRATE                   _UxGT("біт/с")
191
-#define MSG_INFO_PROTOCOL                   _UxGT("Протокол")
192
-#define MSG_CASE_LIGHT                      _UxGT("Підсвітка")
37
+  constexpr uint8_t    CHARSIZE                            = 2;
38
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Ukranian");
193 39
 
194
-#define MSG_EXPECTED_PRINTER                _UxGT("Неправильний принтер")
40
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" готовий.");
41
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("Картка вставлена");
42
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("Картка видалена");
43
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Кінцевик"); // Max length 8 characters
44
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Меню");
45
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Автостарт");
46
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Вимк. двигуни");
47
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Авто паркування");
48
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Паркування X");
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Паркування Y");
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Паркування Z");
51
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Паркування XYZ");
52
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Почати");
53
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Слідуюча Точка");
54
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("Завершено!");
55
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Зберегти паркув.");
56
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Зміщення застос.");
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_H0                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N0;
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N1;
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N2;
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N3;
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N4;
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N5;
65
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло");
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N0;
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N1;
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N2;
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N3;
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N4;
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N5;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Все");
73
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Стіл");
74
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" нал.");
75
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Нагрів ") PREHEAT_2_LABEL;
76
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N0;
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N1;
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N2;
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N3;
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N4;
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N5;
82
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло");
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N0;
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N1;
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N2;
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N3;
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N4;
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N5;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Все");
90
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Стіл");
91
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" нал.");
92
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Охолодження");
93
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Увімкнути живлення");
94
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Вимкнути живлення");
95
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Екструзія");
96
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Втягування");
97
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Рух по осям");
98
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("Нівелювання столу");
99
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Нівелювання столу");
100
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Рух по X");
101
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Рух по Y");
102
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Рух по Z");
103
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Екструдер");
104
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Екструдер ") LCD_STR_E0;
105
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Екструдер ") LCD_STR_E1;
106
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Екструдер ") LCD_STR_E2;
107
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Екструдер ") LCD_STR_E3;
108
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Екструдер ") LCD_STR_E4;
109
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Екструдер ") LCD_STR_E5;
110
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("Рух по %smm");
111
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Рух по 0.1mm");
112
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Рух по 1mm");
113
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Рух по 10mm");
114
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Швидкість");
115
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Z Столу");
116
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Сопло");
117
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Сопло ") LCD_STR_N0;
118
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Сопло ") LCD_STR_N1;
119
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Сопло ") LCD_STR_N2;
120
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Сопло ") LCD_STR_N3;
121
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Сопло ") LCD_STR_N4;
122
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Сопло ") LCD_STR_N5;
123
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Стіл");
124
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Охолодж.");
125
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Охолодж. 1");
126
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Охолодж. 2");
127
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Охолодж. 3");
128
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Потік");
129
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Потік ") LCD_STR_N0;
130
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Потік ") LCD_STR_N1;
131
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Потік ") LCD_STR_N2;
132
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Потік ") LCD_STR_N3;
133
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Потік ") LCD_STR_N4;
134
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Потік ") LCD_STR_N5;
135
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Налаштування");
136
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Мін");
137
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Макс");
138
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Факт");
139
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Автотемпер.");
140
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Увімк.");
141
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Вимк.");
142
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");
143
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
144
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
145
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
146
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
147
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
148
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
149
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");
150
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
151
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
152
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
153
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
154
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
155
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
156
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");
157
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
158
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
159
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
160
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
161
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
162
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
163
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");
164
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
165
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
166
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
167
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
168
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
169
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
170
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Вибрати");
171
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Вибрати ") LCD_STR_E0;
172
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Вибрати ") LCD_STR_E1;
173
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Вибрати ") LCD_STR_E2;
174
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Вибрати ") LCD_STR_E3;
175
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Вибрати ") LCD_STR_E4;
176
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Вибрати ") LCD_STR_E5;
177
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Приск.");
178
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Ривок");
179
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("V") LCD_STR_A _UxGT("-ривок");
180
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("V") LCD_STR_B _UxGT("-ривок");
181
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("V") LCD_STR_C _UxGT("-ривок");
182
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Ve-ривок");
183
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("Vмакс") LCD_STR_A;
184
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("Vмакс") LCD_STR_B;
185
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("Vмакс") LCD_STR_C;
186
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("Vмакс") LCD_STR_E;
187
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("Vмакс ") LCD_STR_E0;
188
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("Vмакс ") LCD_STR_E1;
189
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("Vмакс ") LCD_STR_E2;
190
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("Vмакс ") LCD_STR_E3;
191
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("Vмакс ") LCD_STR_E4;
192
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("Vмакс ") LCD_STR_E5;
193
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("Vмін");
194
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vруху мін");
195
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Aмакс ") LCD_STR_A;
196
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Aмакс ") LCD_STR_B;
197
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Aмакс ") LCD_STR_C;
198
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Aмакс ") LCD_STR_E;
199
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Aмакс ") LCD_STR_E0;
200
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Aмакс ") LCD_STR_E1;
201
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Aмакс ") LCD_STR_E2;
202
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Aмакс ") LCD_STR_E3;
203
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Aмакс ") LCD_STR_E4;
204
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Aмакс ") LCD_STR_E5;
205
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("A-втягув.");
206
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("A-руху");
207
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Кроків/мм");
208
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("кроків/мм");
209
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("кроків/мм");
210
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("кроків/мм");
211
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("Eкроків/мм");
212
+  PROGMEM Language_Str MSG_E0_STEPS                        = LCD_STR_E0 _UxGT("кроків/мм");
213
+  PROGMEM Language_Str MSG_E1_STEPS                        = LCD_STR_E1 _UxGT("кроків/мм");
214
+  PROGMEM Language_Str MSG_E2_STEPS                        = LCD_STR_E2 _UxGT("кроків/мм");
215
+  PROGMEM Language_Str MSG_E3_STEPS                        = LCD_STR_E3 _UxGT("кроків/мм");
216
+  PROGMEM Language_Str MSG_E4_STEPS                        = LCD_STR_E4 _UxGT("кроків/мм");
217
+  PROGMEM Language_Str MSG_E5_STEPS                        = LCD_STR_E5 _UxGT("кроків/мм");
218
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Температура");
219
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Рух");
220
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Волокно");
221
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E в мм3");
222
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Діам. волок.");
223
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Діам. волок. ") LCD_STR_E0;
224
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Діам. волок. ") LCD_STR_E1;
225
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Діам. волок. ") LCD_STR_E2;
226
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Діам. волок. ") LCD_STR_E3;
227
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Діам. волок. ") LCD_STR_E4;
228
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Діам. волок. ") LCD_STR_E5;
229
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("контраст LCD");
230
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Зберегти в ПЗП");
231
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Зчитати з ПЗП");
232
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Відновити базові");
233
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Поновити");
234
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Інформація");
235
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Підготувати");
236
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Підлаштування");
237
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Призупинити друк");
238
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Відновити друк");
239
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Скасувати друк");
240
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("Друкувати з SD");
241
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("Відсутня SD карт.");
242
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Сплячка...");
243
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Очікування дій...");
244
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("Друк скасовано");
245
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Немає руху.");
246
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("ПЕРЕРВАНО. ");
247
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ЗУПИНЕНО. ");
248
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Зміна волокна");
249
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Зміна волокна ") LCD_STR_E0;
250
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Зміна волокна ") LCD_STR_E1;
251
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Зміна волокна ") LCD_STR_E2;
252
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Зміна волокна ") LCD_STR_E3;
253
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Зміна волокна ") LCD_STR_E4;
254
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Зміна волокна ") LCD_STR_E5;
255
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("Старт SD картки");
256
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("Заміна SD карти");
257
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z дет. не в межах");
258
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch Само-Тест");
259
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Скинути BLTouch");
260
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Дім %s%s%s перший");
261
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Зміщення Z");
262
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Мікрокрок X");
263
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Мікрокрок Y");
264
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Мікрокрок Z");
265
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("невдача кінцевика");
266
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Невдалий нагрів");
267
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("ЗБІЙ ТЕМПЕРАТУРИ");
268
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Дім XY перший");
269
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("ПРИНТЕР ЗУПИНЕНО");
270
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Перезавантажте");
271
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("д"); // One character only
272
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("г"); // One character only
273
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("х"); // One character only
274
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Нагрівання...");
275
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Нагрівання столу...");
276
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Калібр. Delta");
277
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Калібрування X");
278
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Калібрування Y");
279
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Калібрування Z");
280
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Калібр. Центру");
195 281
 
196
-#if LCD_WIDTH >= 20
197
-  #define MSG_INFO_PRINT_COUNT              _UxGT("К-сть друків")
198
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Завершено")
199
-  #define MSG_INFO_PRINT_TIME               _UxGT("Весь час друку")
200
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Найдовший час")
201
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Екструдовано")
202
-#else
203
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Друків")
204
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Завершено")
205
-  #define MSG_INFO_PRINT_TIME               _UxGT("Загалом")
206
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Найдовший")
207
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Ексдруд.")
208
-#endif
282
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Про принтер");
283
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Інформація");
284
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Статистика");
285
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Про плату");
286
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Термістори");
287
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Екструдери");
288
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("біт/с");
289
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Протокол");
290
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Підсвітка");
209 291
 
210
-#define MSG_INFO_MIN_TEMP                   _UxGT("Мін Темп.")
211
-#define MSG_INFO_MAX_TEMP                   _UxGT("Макс Темп.")
212
-#define MSG_INFO_PSU                        _UxGT("Джерело жив.")
292
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("Неправильний принтер");
213 293
 
214
-#define MSG_DRIVE_STRENGTH                  _UxGT("Сила мотору")
215
-#define MSG_DAC_PERCENT                     _UxGT("% мотору")
216
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Запис ЦАП на ПЗП")
294
+  #if LCD_WIDTH >= 20
295
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("К-сть друків");
296
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Завершено");
297
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Весь час друку");
298
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Найдовший час");
299
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Екструдовано");
300
+  #else
301
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Друків");
302
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Завершено");
303
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Загалом");
304
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Найдовший");
305
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Ексдруд.");
306
+  #endif
217 307
 
218
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Відновити друк")
308
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Мін Темп.");
309
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Макс Темп.");
310
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Джерело жив.");
219 311
 
220
-#if LCD_HEIGHT >= 4
221
-  // Up to 3 lines allowed
222
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Зачекайте на")
223
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("початок заміни")
224
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("волокна")
225
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Зачекайте на")
226
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("вивід волокна")
227
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Вставте волокно")
228
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("та натисніть для")
229
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("продовження...")
230
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Зачекайте на")
231
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("ввід волокна")
232
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Зачекайте на")
233
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("відновлення")
234
-  #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("друку")
235
-#else // LCD_HEIGHT < 4
236
-  // Up to 2 lines allowed
237
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Зачекайте...")
238
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Вивід...")
239
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Вставте і нат.")
240
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Ввід...")
241
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Відновлення...")
242
-#endif // LCD_HEIGHT < 4
312
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Сила мотору");
313
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("% мотору");
314
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Запис ЦАП на ПЗП");
315
+
316
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Відновити друк");
317
+
318
+  #if LCD_HEIGHT >= 4
319
+    // Up to 3 lines allowed
320
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Зачекайте на", "початок заміни", "волокна"));
321
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Зачекайте на", "вивід волокна"));
322
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Вставте волокно", "та натисніть для", "продовження..."));
323
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Зачекайте на", "ввід волокна"));
324
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_3_LINE("Зачекайте на", "відновлення", "друку"));
325
+  #else
326
+    // Up to 2 lines allowed
327
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Зачекайте..."));
328
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Вивід..."));
329
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Вставте і нат."));
330
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Ввід..."));
331
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Відновлення..."));
332
+  #endif
333
+}

+ 509
- 401
Marlin/src/lcd/language/language_vi.h Zobrazit soubor

@@ -28,410 +28,518 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+namespace Language_vi {
32
+  using namespace Language_en; // Inherit undefined strings from English
31 33
 
32
-#define CHARSIZE 2
34
+  constexpr uint8_t    CHARSIZE                            = 2;
35
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Vietnamese");
33 36
 
34
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS      _UxGT("àạậẵắấầđẻểếềìỉởộỗợúự")
37
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT(" Sẵn sàng.");              // Ready
38
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("Trở lại");                              // Back
39
+  PROGMEM Language_Str MSG_SD_INSERTED                     = _UxGT("Thẻ được cắm vào");                     // Card inserted
40
+  PROGMEM Language_Str MSG_SD_REMOVED                      = _UxGT("Thẻ được rút ra");
41
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("Công tắc");                             // Endstops - công tắc hành trình
42
+  PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS               = _UxGT("Công tắc mềm");                         // soft Endstops
43
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("Chính");                                // Main
44
+  PROGMEM Language_Str MSG_ADVANCED_SETTINGS               = _UxGT("Thiết lập cấp cao");                    // Advanced Settings
45
+  PROGMEM Language_Str MSG_CONFIGURATION                   = _UxGT("Cấu hình");                             // Configuration
46
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("Khởi chạy tự động");                    // Autostart
47
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("Tắt động cơ bước");                     // Disable steppers
48
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("Menu gỡ lỗi");                          // Debug Menu
49
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("Kiểm tra tiến độ");                     // Progress bar test
50
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("Về nhà tự động");                       // Auto home
51
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("Về nhà X");                             // home x
52
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("Về nhà Y");                             // home y
53
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("Về nhà Z");
54
+  PROGMEM Language_Str MSG_AUTO_Z_ALIGN                    = _UxGT("Chỉnh canh Z tự động");
55
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("Đang về nhà XYZ");                      // Homing XYZ
56
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("Nhấn để bắt đầu");                      // Click to Begin
57
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("Điểm tiếp theo");                       // Next Point
58
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("San lấp được hoàn thành");              // Leveling Done!
59
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("Chiều cao mờ dần");                     // Fade Height
60
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("Đặt bù đắp nhà");                       // Set home offsets
61
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("Bù đắp được áp dụng");                  // Offsets applied
62
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("Đặt nguồn gốc");                        // Set origin
63
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước");   // Preheat
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N0;   // Preheat
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N1;   // Preheat
66
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N2;   // Preheat
67
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N3;   // Preheat
68
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N4;   // Preheat
69
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N5;   // 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_E0                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N0;
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N1;
73
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N2;
74
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N3;
75
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N4;
76
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N5;
77
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả");    // all
78
+  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
79
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình");  // conf
80
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước");   // Preheat
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N0;   // Preheat
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N1;   // Preheat
83
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N2;   // Preheat
84
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N3;   // Preheat
85
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N4;   // Preheat
86
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N5;   // Preheat
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu");
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N0;
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N1;
90
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N2;
91
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N3;
92
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N4;
93
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N5;
94
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Tất cả");    // all
95
+  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
96
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Cấu hình");  // conf
97
+  PROGMEM Language_Str MSG_PREHEAT_CUSTOM                  = _UxGT("Sự nóng trước tự chọn");                // Preheat Custom
98
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("Nguội xuống");                          // Cooldown
99
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("Bật nguồn");                            // Switch power on
100
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("Tắt nguồn");                            // Switch power off
101
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("Ép đùn");                               // Extrude
102
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("Rút lại");                              // Retract
103
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("Di chuyển trục");                       // Move axis
104
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("San Lấp Bàn");                          // Bed Leveling
105
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("Làm bằng mặt bàn");                     // Level bed
106
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("Làm bằng góc bàn");                     // Level corners
107
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("Góc tiếp theo");                        // Next corner
108
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("Chỉnh lưới đã dừng");                   // Mesh Editing Stopped
109
+  PROGMEM Language_Str MSG_MESH_X                          = _UxGT("Mục lục X");                            // Index X
110
+  PROGMEM Language_Str MSG_MESH_Y                          = _UxGT("Mục lục Y");
111
+  PROGMEM Language_Str MSG_MESH_EDIT_Z                     = _UxGT("Giá trị Z");                            // Z Value
112
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("Các lệnh tự chọn");                     // Custom Commands
113
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("Đang chạy G29");                        // Doing G29
114
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("Công cụ UBL");                          // UBL tools
115
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("San Lấp Bàn Thống Nhất (UBL)");         // Unified Bed Leveling
116
+  PROGMEM Language_Str MSG_IDEX_MENU                       = _UxGT("chế độ IDEX");                          // IDEX Mode
117
+  PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK              = _UxGT("Đậu tự động");                          // Auto-Park
118
+  PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE             = _UxGT("Sự gấp đôi");                           // Duplication
119
+  PROGMEM Language_Str MSG_IDEX_MODE_SCALED_COPY           = _UxGT("Bản sao thu nhỏ");
120
+  PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL             = _UxGT("Toàn quyền điều khiển");                // Full control
121
+  PROGMEM Language_Str MSG_IDEX_X_OFFSET                   = _UxGT("Đầu phun X nhì");                       // 2nd nozzle X
122
+  PROGMEM Language_Str MSG_IDEX_Y_OFFSET                   = _UxGT("Đầu phun Y nhì");
123
+  PROGMEM Language_Str MSG_IDEX_Z_OFFSET                   = _UxGT("Đầu phun Z nhì");
124
+  PROGMEM Language_Str MSG_IDEX_SAVE_OFFSETS               = _UxGT("Lưu bù đắp");                           // Save offsets
125
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("Tự xây dựng lưới");                     // Manually Build Mesh
126
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("Đặt chêm và đo");                       // Place shim & measure
127
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("Đo");                                   // Measure
128
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("Tháo và đo bàn");                       // Remove & measure bed
129
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("Chuyển sang tiếp theo");                // moving to next
130
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("Bật UBL");
131
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("Tắt UBL");
132
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("Nhiệt độ bàn");                         // Bed Temp
133
+  PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM             = _UxGT("Bed Temp");
134
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("Nhiệt độ đầu phun");                    // Hotend Temp
135
+  PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM          = _UxGT("Hotend Temp");
136
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("Chỉnh sửa lưới");                       // Mesh Edit
137
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("Chỉnh sửa lưới tự chọn");               // Edit Custom Mesh
138
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("Chỉnh lưới chính xác");                 // Fine tuning mesh
139
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("Chỉnh sửa xong lưới");                  // Done Editing Mesh
140
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("Xây dựng lưới tự chọn");                // Build Custom Mesh
141
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("Xây dựng lưới");                        // Build Mesh
142
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("Xây dựng lưới (") PREHEAT_1_LABEL _UxGT(")");
143
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("Xây dựng lưới (") PREHEAT_2_LABEL _UxGT(")");
144
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("Xây dựng lưới lạnh");                   // Build cold mesh
145
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("Điều chỉnh chiều cao lưới");            // Adjust Mesh Height
146
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("Số lượng chiều cao");                   // Height Amount
147
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("Thẩm tra lưới");                        // Validate Mesh
148
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("Thẩm tra lưới (") PREHEAT_1_LABEL _UxGT(")");
149
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("Thẩm tra lưới (") PREHEAT_2_LABEL _UxGT(")");
150
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("Thẩm tra lưới tự chọn");                // validate custom mesh
151
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("Tiếp tục xây lưới bàn");                // Continue Bed Mesh
152
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("Đang san lấp lưới");                    // Mesh Leveling
153
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("Đang san lấp 3-điểm");                  // 3-Point Leveling
154
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("Đang san lấp lưới phẳng");              // Grid (planar) Mesh Leveling
155
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("Làm bằng lưới");                        // Level Mesh
156
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("Điểm bên cạnh");                        // Side Points
157
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("Loại bản đồ");                          // Map Type
158
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("Đầu ra bản đồ lưới");                   // Output Mesh Map
159
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("Đầu ra cho máy chủ");                   // Output for Host
160
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("Đầu ra cho CSV");                       // Output for CSV
161
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("Hỗ trợ lưới");                          // Off Printer Backup | backup mesh
162
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("Đầu ra thông tin UBL");                 // Output UBL Info
163
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("Chỉnh sửa lưới");                       // Edit mesh
164
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("Số lượng lấp đầy");                     // Fill-in Amount
165
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("Tự lấp đầy");                           // Manual Fill-in
166
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("Lấp đầy thông minh");                   // Smart Fill-in
167
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("Lưới lấp đầy");                         // Fill-in Mesh
168
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("Bác bỏ tất cả");                       // Invalidate All
169
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("Bác bỏ gần nhất");                     // Invalidate Closest
170
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("Chỉnh chính xác tất cả");               // Fine Tune ALl
171
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("Chỉnh chính xác gần nhất");             // Fine Tune Closest
172
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("Lưu trữ lưới");                         // Mesh Storage
173
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("Khe nhớ");                              // Memory Slot
174
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("Tải lưới bàn");                         // Load Bed Mesh
175
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("Lưu lưới bàn");                         // Save Bed Mesh
176
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 %i lưới được nạp");                     // Mesh %i loaded
177
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 %i lưới đã lưu");
178
+  PROGMEM Language_Str MSG_NO_STORAGE                      = _UxGT("Không lưu trữ");                        // No Storage
179
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("Điều sai: Lưu UBL");                    // Err: UBL Save
180
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("Điều Sai: Khôi Phục UBL");              // Err: UBL Restore
181
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Đầu Dò-Z Đã Ngừng");                    // Z-Offset Stopped
182
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("Bước-Từng-Bước UBL");                   // Step-By-Step UBL
183
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1.Xây dựng lưới lạnh");
184
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2.Lấp đầy thông minh");
185
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3.Thẩm tra lưới");
186
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4.Chỉnh chính xác tất cả");
187
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5.Thẩm tra lưới");
188
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6.Chỉnh chính xác tất cả");
189
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7.Lưu lưới bàn");
35 190
 
36
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" Sẵn sàng.")              // Ready
37
-#define MSG_BACK                            _UxGT("Trở lại")                              // Back
38
-#define MSG_SD_INSERTED                     _UxGT("Thẻ được cắm vào")                     // Card inserted
39
-#define MSG_SD_REMOVED                      _UxGT("Thẻ được rút ra")
40
-#define MSG_LCD_ENDSTOPS                    _UxGT("Công tắc")                             // Endstops - công tắc hành trình
41
-#define MSG_LCD_SOFT_ENDSTOPS               _UxGT("Công tắc mềm")                         // soft Endstops
42
-#define MSG_MAIN                            _UxGT("Chính")                                // Main
43
-#define MSG_ADVANCED_SETTINGS               _UxGT("Thiết lập cấp cao")                    // Advanced Settings
44
-#define MSG_CONFIGURATION                   _UxGT("Cấu hình")                             // Configuration
45
-#define MSG_AUTOSTART                       _UxGT("Khởi chạy tự động")                    // Autostart
46
-#define MSG_DISABLE_STEPPERS                _UxGT("Tắt động cơ bước")                     // Disable steppers
47
-#define MSG_DEBUG_MENU                      _UxGT("Menu gỡ lỗi")                          // Debug Menu
48
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Kiểm tra tiến độ")                     // Progress bar test
49
-#define MSG_AUTO_HOME                       _UxGT("Về nhà tự động")                       // Auto home
50
-#define MSG_AUTO_HOME_X                     _UxGT("Về nhà X")                             // home x
51
-#define MSG_AUTO_HOME_Y                     _UxGT("Về nhà Y")                             // home y
52
-#define MSG_AUTO_HOME_Z                     _UxGT("Về nhà Z")
53
-#define MSG_AUTO_Z_ALIGN                    _UxGT("Chỉnh canh Z tự động")
54
-#define MSG_LEVEL_BED_HOMING                _UxGT("Đang về nhà XYZ")                      // Homing XYZ
55
-#define MSG_LEVEL_BED_WAITING               _UxGT("Nhấn để bắt đầu")                      // Click to Begin
56
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Điểm tiếp theo")                       // Next Point
57
-#define MSG_LEVEL_BED_DONE                  _UxGT("San lấp được hoàn thành")              // Leveling Done!
58
-#define MSG_Z_FADE_HEIGHT                   _UxGT("Chiều cao mờ dần")                     // Fade Height
59
-#define MSG_SET_HOME_OFFSETS                _UxGT("Đặt bù đắp nhà")                       // Set home offsets
60
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Bù đắp được áp dụng")                  // Offsets applied
61
-#define MSG_SET_ORIGIN                      _UxGT("Đặt nguồn gốc")                        // Set origin
62
-#define MSG_PREHEAT_1                       _UxGT("Làm nóng " PREHEAT_1_LABEL " trước")   // Preheat
63
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
64
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" Tất cả")                // all
65
-#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" Đầu")
66
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" Bàn")                   // bed -- using vietnamese term for 'table' instead
67
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" Cấu hình")              // conf
68
-#define MSG_PREHEAT_2                       _UxGT("Làm nóng " PREHEAT_2_LABEL " trước")
69
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
70
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" Tất cả")
71
-#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" Đầu")
72
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" Bàn")                   // bed -- using vietnamese term for 'table' instead
73
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" Cấu hình")
74
-#define MSG_PREHEAT_CUSTOM                  _UxGT("Sự nóng trước tự chọn")                // Preheat Custom
75
-#define MSG_COOLDOWN                        _UxGT("Nguội xuống")                          // Cooldown
76
-#define MSG_SWITCH_PS_ON                    _UxGT("Bật nguồn")                            // Switch power on
77
-#define MSG_SWITCH_PS_OFF                   _UxGT("Tắt nguồn")                            // Switch power off
78
-#define MSG_EXTRUDE                         _UxGT("Ép đùn")                               // Extrude
79
-#define MSG_RETRACT                         _UxGT("Rút lại")                              // Retract
80
-#define MSG_MOVE_AXIS                       _UxGT("Di chuyển trục")                       // Move axis
81
-#define MSG_BED_LEVELING                    _UxGT("San Lấp Bàn")                          // Bed Leveling
82
-#define MSG_LEVEL_BED                       _UxGT("Làm bằng mặt bàn")                     // Level bed
83
-#define MSG_LEVEL_CORNERS                   _UxGT("Làm bằng góc bàn")                     // Level corners
84
-#define MSG_NEXT_CORNER                     _UxGT("Góc tiếp theo")                        // Next corner
85
-#define MSG_EDITING_STOPPED                 _UxGT("Chỉnh lưới đã dừng")                   // Mesh Editing Stopped
86
-#define MSG_MESH_X                          _UxGT("Mục lục X")                            // Index X
87
-#define MSG_MESH_Y                          _UxGT("Mục lục Y")
88
-#define MSG_MESH_EDIT_Z                     _UxGT("Giá trị Z")                            // Z Value
89
-#define MSG_USER_MENU                       _UxGT("Các lệnh tự chọn")                     // Custom Commands
90
-#define MSG_UBL_DOING_G29                   _UxGT("Đang chạy G29")                        // Doing G29
91
-#define MSG_UBL_TOOLS                       _UxGT("Công cụ UBL")                          // UBL tools
92
-#define MSG_UBL_LEVEL_BED                   _UxGT("San Lấp Bàn Thống Nhất (UBL)")         // Unified Bed Leveling
93
-#define MSG_IDEX_MENU                       _UxGT("chế độ IDEX")                          // IDEX Mode
94
-#define MSG_IDEX_MODE_AUTOPARK              _UxGT("Đậu tự động")                          // Auto-Park
95
-#define MSG_IDEX_MODE_DUPLICATE             _UxGT("Sự gấp đôi")                           // Duplication
96
-#define MSG_IDEX_MODE_SCALED_COPY           _UxGT("Bản sao thu nhỏ")
97
-#define MSG_IDEX_MODE_FULL_CTRL             _UxGT("Toàn quyền điều khiển")                // Full control
98
-#define MSG_IDEX_X_OFFSET                   _UxGT("Đầu phun X nhì")                       // 2nd nozzle X
99
-#define MSG_IDEX_Y_OFFSET                   _UxGT("Đầu phun Y nhì")
100
-#define MSG_IDEX_Z_OFFSET                   _UxGT("Đầu phun Z nhì")
101
-#define MSG_IDEX_SAVE_OFFSETS               _UxGT("Lưu bù đắp")                           // Save offsets
102
-#define MSG_UBL_MANUAL_MESH                 _UxGT("Tự xây dựng lưới")                     // Manually Build Mesh
103
-#define MSG_UBL_BC_INSERT                   _UxGT("Đặt chêm và đo")                       // Place shim & measure
104
-#define MSG_UBL_BC_INSERT2                  _UxGT("Đo")                                   // Measure
105
-#define MSG_UBL_BC_REMOVE                   _UxGT("Tháo và đo bàn")                       // Remove & measure bed
106
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Chuyển sang tiếp theo")                // moving to next
107
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("Bật UBL")
108
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Tắt UBL")
109
-#define MSG_UBL_SET_TEMP_BED                _UxGT("Nhiệt độ bàn")                         // Bed Temp
110
-#define MSG_UBL_BED_TEMP_CUSTOM             MSG_UBL_SET_TEMP_BED
111
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("Nhiệt độ đầu phun")                    // Hotend Temp
112
-#define MSG_UBL_HOTEND_TEMP_CUSTOM          MSG_UBL_SET_TEMP_HOTEND
113
-#define MSG_UBL_MESH_EDIT                   _UxGT("Chỉnh sửa lưới")                       // Mesh Edit
114
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Chỉnh sửa lưới tự chọn")               // Edit Custom Mesh
115
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Chỉnh lưới chính xác")                 // Fine tuning mesh
116
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Chỉnh sửa xong lưới")                  // Done Editing Mesh
117
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Xây dựng lưới tự chọn")                // Build Custom Mesh
118
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Xây dựng lưới")                        // Build Mesh
119
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("Xây dựng lưới (" PREHEAT_1_LABEL ")")
120
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("Xây dựng lưới (" PREHEAT_2_LABEL ")")
121
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Xây dựng lưới lạnh")                   // Build cold mesh
122
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Điều chỉnh chiều cao lưới")            // Adjust Mesh Height
123
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Số lượng chiều cao")                   // Height Amount
124
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Thẩm tra lưới")                        // Validate Mesh
125
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("Thẩm tra lưới (" PREHEAT_1_LABEL ")")
126
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("Thẩm tra lưới (" PREHEAT_2_LABEL ")")
127
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Thẩm tra lưới tự chọn")                // validate custom mesh
128
-#define MSG_UBL_CONTINUE_MESH               _UxGT("Tiếp tục xây lưới bàn")                // Continue Bed Mesh
129
-#define MSG_UBL_MESH_LEVELING               _UxGT("Đang san lấp lưới")                    // Mesh Leveling
130
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("Đang san lấp 3-điểm")                  // 3-Point Leveling
131
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Đang san lấp lưới phẳng")              // Grid (planar) Mesh Leveling
132
-#define MSG_UBL_MESH_LEVEL                  _UxGT("Làm bằng lưới")                        // Level Mesh
133
-#define MSG_UBL_SIDE_POINTS                 _UxGT("Điểm bên cạnh")                        // Side Points
134
-#define MSG_UBL_MAP_TYPE                    _UxGT("Loại bản đồ")                          // Map Type
135
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("Đầu ra bản đồ lưới")                   // Output Mesh Map
136
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Đầu ra cho máy chủ")                   // Output for Host
137
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Đầu ra cho CSV")                       // Output for CSV
138
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Hỗ trợ lưới")                          // Off Printer Backup | backup mesh
139
-#define MSG_UBL_INFO_UBL                    _UxGT("Đầu ra thông tin UBL")                 // Output UBL Info
140
-#define MSG_EDIT_MESH                       _UxGT("Chỉnh sửa lưới")                       // Edit mesh
141
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Số lượng lấp đầy")                     // Fill-in Amount
142
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("Tự lấp đầy")                           // Manual Fill-in
143
-#define MSG_UBL_SMART_FILLIN                _UxGT("Lấp đầy thông minh")                   // Smart Fill-in
144
-#define MSG_UBL_FILLIN_MESH                 _UxGT("Lưới lấp đầy")                         // Fill-in Mesh
145
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("Bác bỏ tất cả")                       // Invalidate All
146
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Bác bỏ gần nhất")                     // Invalidate Closest
147
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Chỉnh chính xác tất cả")               // Fine Tune ALl
148
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Chỉnh chính xác gần nhất")             // Fine Tune Closest
149
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Lưu trữ lưới")                         // Mesh Storage
150
-#define MSG_UBL_STORAGE_SLOT                _UxGT("Khe nhớ")                              // Memory Slot
151
-#define MSG_UBL_LOAD_MESH                   _UxGT("Tải lưới bàn")                         // Load Bed Mesh
152
-#define MSG_UBL_SAVE_MESH                   _UxGT("Lưu lưới bàn")                         // Save Bed Mesh
153
-#define MSG_MESH_LOADED                     _UxGT("%i lưới được nạp")                     // Mesh %i loaded
154
-#define MSG_MESH_SAVED                      _UxGT("%i lưới đã lưu")
155
-#define MSG_NO_STORAGE                      _UxGT("Không lưu trữ")                        // No Storage
156
-#define MSG_UBL_SAVE_ERROR                  _UxGT("Điều sai: Lưu UBL")                    // Err: UBL Save
157
-#define MSG_UBL_RESTORE_ERROR               _UxGT("Điều Sai: Khôi Phục UBL")              // Err: UBL Restore
158
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Đầu Dò-Z Đã Ngừng")                    // Z-Offset Stopped
159
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("Bước-Từng-Bước UBL")                   // Step-By-Step UBL
191
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("Điều khiển LED");                       // LED Control
192
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("Đèn");                                  // Lights
193
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("Đèn định sẵn");                         // Light Presets
194
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("Đỏ");                                   // Red
195
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("Cam");                                  // Orange
196
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("Vàng");                                 // Yellow
197
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("Xanh Lá");                              // Green
198
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("Xanh");                                 // Blue
199
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("Xanh Đậm");                             // Indigo
200
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("Tím");                                  // Violet
201
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("Trắng");                                // White
202
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("Mặc định");                             // Default
203
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("Đèn Tự Chọn");                          // Custom Lights
204
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("Cường Độ Đỏ");                          // Red Intensity
205
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("Cường Độ Xanh Lá");                     // Green Intensity
206
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("Cường Độ Xanh");                        // Blue Intensity
207
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("Cường Độ Trắng");                       // White Intensity
208
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("độ sáng");                              // Brightness
160 209
 
161
-#define MSG_LED_CONTROL                     _UxGT("Điều khiển LED")                       // LED Control
162
-#define MSG_LEDS                            _UxGT("Đèn")                                  // Lights
163
-#define MSG_LED_PRESETS                     _UxGT("Đèn định sẵn")                         // Light Presets
164
-#define MSG_SET_LEDS_RED                    _UxGT("Đỏ")                                   // Red
165
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Cam")                                  // Orange
166
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Vàng")                                 // Yellow
167
-#define MSG_SET_LEDS_GREEN                  _UxGT("Xanh Lá")                              // Green
168
-#define MSG_SET_LEDS_BLUE                   _UxGT("Xanh")                                 // Blue
169
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Xanh Đậm")                             // Indigo
170
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Tím")                                  // Violet
171
-#define MSG_SET_LEDS_WHITE                  _UxGT("Trắng")                                // White
172
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Mặc định")                             // Default
173
-#define MSG_CUSTOM_LEDS                     _UxGT("Đèn Tự Chọn")                          // Custom Lights
174
-#define MSG_INTENSITY_R                     _UxGT("Cường Độ Đỏ")                          // Red Intensity
175
-#define MSG_INTENSITY_G                     _UxGT("Cường Độ Xanh Lá")                     // Green Intensity
176
-#define MSG_INTENSITY_B                     _UxGT("Cường Độ Xanh")                        // Blue Intensity
177
-#define MSG_INTENSITY_W                     _UxGT("Cường Độ Trắng")                       // White Intensity
178
-#define MSG_LED_BRIGHTNESS                  _UxGT("độ sáng")                              // Brightness
210
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("Di chuyển...");                         // Moving
211
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("Giải phóng XY");                        // Free XY
212
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("Di chuyển X");                          // Move X
213
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("Di chuyển Y");
214
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("Di chuyển Z");
215
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("Máy đùn");                              // Extruder
216
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("Máy đùn ") LCD_STR_E0;                  // Extruder
217
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("Máy đùn ") LCD_STR_E1;                  // Extruder
218
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("Máy đùn ") LCD_STR_E2;                  // Extruder
219
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("Máy đùn ") LCD_STR_E3;                  // Extruder
220
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("Máy đùn ") LCD_STR_E4;                  // Extruder
221
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("Máy đùn ") LCD_STR_E5;                  // Extruder
222
+  PROGMEM Language_Str MSG_HOTEND_TOO_COLD                 = _UxGT("Đầu nóng quá lạnh");                    // Hotend too cold
223
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("Di chuyển 0.1mm");                      // Move 0.1mm
224
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("Di chuyển 1mm");                        // Move 1mm
225
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("Di chuyển 10mm");                       // Move 10mm
226
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("Tốc độ");                               // Speed
227
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("Z Bàn");
228
+  PROGMEM Language_Str MSG_NOZZLE                          = _UxGT("Đầu phun");                             // Nozzle
229
+  PROGMEM Language_Str MSG_NOZZLE_0                        = _UxGT("Đầu phun ") LCD_STR_N0;                 // Nozzle
230
+  PROGMEM Language_Str MSG_NOZZLE_1                        = _UxGT("Đầu phun ") LCD_STR_N1;                 // Nozzle
231
+  PROGMEM Language_Str MSG_NOZZLE_2                        = _UxGT("Đầu phun ") LCD_STR_N2;                 // Nozzle
232
+  PROGMEM Language_Str MSG_NOZZLE_3                        = _UxGT("Đầu phun ") LCD_STR_N3;                 // Nozzle
233
+  PROGMEM Language_Str MSG_NOZZLE_4                        = _UxGT("Đầu phun ") LCD_STR_N4;                 // Nozzle
234
+  PROGMEM Language_Str MSG_NOZZLE_5                        = _UxGT("Đầu phun ") LCD_STR_N5;                 // Nozzle
235
+  PROGMEM Language_Str MSG_BED                             = _UxGT("Bàn");                                  // bed
236
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("Tốc độ quạt");                          // fan speed
237
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("Tốc độ quạt 1");                        // fan speed
238
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("Tốc độ quạt 2");                        // fan speed
239
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("Tốc độ quạt 3");                        // fan speed
240
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("Tốc độ quạt phụ");                      // Extra fan speed
241
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("Tốc độ quạt phụ 1");                    // Extra fan speed
242
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("Tốc độ quạt phụ 2");                    // Extra fan speed
243
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("Tốc độ quạt phụ 3");                    // Extra fan speed
244
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("Lưu Lượng");
245
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("Lưu Lượng ") LCD_STR_N0;
246
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("Lưu Lượng ") LCD_STR_N1;
247
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("Lưu Lượng ") LCD_STR_N2;
248
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("Lưu Lượng ") LCD_STR_N3;
249
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("Lưu Lượng ") LCD_STR_N4;
250
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("Lưu Lượng ") LCD_STR_N5;
251
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("Điều khiển");                           // Control
252
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" Đa");          // min
253
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" Thiểu");
254
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số");       // factor
255
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("Nhiệt độ tự động");                     // Autotemp
256
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("Bật");                                  // on
257
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("Tắt");                                  // off
258
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");
259
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
260
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
261
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
262
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
263
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
264
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
265
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");
266
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
267
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
268
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
269
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
270
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
271
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
272
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");
273
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
274
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
275
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
276
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
277
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
278
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
279
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");
280
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
281
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
282
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
283
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
284
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
285
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
286
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("Lựa");                                  // Select
287
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("Lựa ") LCD_STR_E0;
288
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("Lựa ") LCD_STR_E1;
289
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("Lựa ") LCD_STR_E2;
290
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("Lựa ") LCD_STR_E3;
291
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("Lựa ") LCD_STR_E4;
292
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("Lựa ") LCD_STR_E5;
293
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("Tăng Tốc");
294
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("Giật");
295
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("Giật-V") LCD_STR_A;
296
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("Giật-V") LCD_STR_B;
297
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("Giật-V") LCD_STR_C;
298
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("Giật-Ve");
299
+  PROGMEM Language_Str MSG_JUNCTION_DEVIATION              = _UxGT("Độ Lệch Chỗ Giao");                    // Junction Dev
300
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("Vận tốc");                              // velocity
301
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("Vđa") LCD_STR_A;                        // Vmax
302
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("Vđa") LCD_STR_B;                        // Vmax
303
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("Vđa") LCD_STR_C;                        // Vmax
304
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("Vđa") LCD_STR_E;                        // Vmax
305
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("Vđa ") LCD_STR_E0;                      // Vmax
306
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("Vđa ") LCD_STR_E1;                      // Vmax
307
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("Vđa ") LCD_STR_E2;                      // Vmax
308
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("Vđa ") LCD_STR_E3;                      // Vmax
309
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("Vđa ") LCD_STR_E4;                      // Vmax
310
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("Vđa ") LCD_STR_E5;                      // Vmax
311
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("Vthiểu");                               // Vmin
312
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("Vchuyển thiểu");                        // VTrav min
313
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("Sự tăng tốc");                          // Acceleration
314
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("Tăng tốc ca") LCD_STR_A;                // Amax
315
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("Tăng tốc ca") LCD_STR_B;                // Amax
316
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("Tăng tốc ca") LCD_STR_C;                // Amax
317
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("Tăng tốc ca") LCD_STR_E;                // Amax
318
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("Tăng tốc ca ") LCD_STR_E0;              // Amax
319
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("Tăng tốc ca ") LCD_STR_E1;              // Amax
320
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("Tăng tốc ca ") LCD_STR_E2;              // Amax
321
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("Tăng tốc ca ") LCD_STR_E3;              // Amax
322
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("Tăng tốc ca ") LCD_STR_E4;              // Amax
323
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("Tăng tốc ca ") LCD_STR_E5;              // Amax
324
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("TT-Rút");                               // A-retract
325
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("TT-Chuyển");                            // A-travel
326
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("Bước/mm");                              // Steps
327
+  PROGMEM Language_Str MSG_A_STEPS                         = _UxGT("Bước") LCD_STR_A _UxGT("/mm");               // Asteps/mm
328
+  PROGMEM Language_Str MSG_B_STEPS                         = _UxGT("Bước") LCD_STR_B _UxGT("/mm");
329
+  PROGMEM Language_Str MSG_C_STEPS                         = _UxGT("Bước") LCD_STR_C _UxGT("/mm");
330
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("BướcE/mm");
331
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("Bước ") LCD_STR_E0 _UxGT("/mm");
332
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("Bước ") LCD_STR_E1 _UxGT("/mm");
333
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("Bước ") LCD_STR_E2 _UxGT("/mm");
334
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("Bước ") LCD_STR_E3 _UxGT("/mm");
335
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("Bước ") LCD_STR_E4 _UxGT("/mm");
336
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("Bước ") LCD_STR_E5 _UxGT("/mm");
337
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("Nhiệt độ");                             // Temperature
338
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("Chuyển động");                          // Motion
339
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("Vật liệu in");                          // dây nhựa
340
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("E bằng mm³");                           // E in mm
341
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("Đường kính nhựa");                      // Fil. Dai.
342
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("Đường kính nhựa ") LCD_STR_E0;
343
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("Đường kính nhựa ") LCD_STR_E1;
344
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("Đường kính nhựa ") LCD_STR_E2;
345
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("Đường kính nhựa ") LCD_STR_E3;
346
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("Đường kính nhựa ") LCD_STR_E4;
347
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("Đường kính nhựa ") LCD_STR_E5;
348
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("Dỡ mm");                                // unload mm
349
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("Nạp mm");
350
+  PROGMEM Language_Str MSG_ADVANCE_K                       = _UxGT("K Cấp Cao");                            // Advance K
351
+  PROGMEM Language_Str MSG_ADVANCE_K_E0                    = _UxGT("K Cấp Cao ") LCD_STR_E0;                // Advance K
352
+  PROGMEM Language_Str MSG_ADVANCE_K_E1                    = _UxGT("K Cấp Cao ") LCD_STR_E1;                // Advance K
353
+  PROGMEM Language_Str MSG_ADVANCE_K_E2                    = _UxGT("K Cấp Cao ") LCD_STR_E2;                // Advance K
354
+  PROGMEM Language_Str MSG_ADVANCE_K_E3                    = _UxGT("K Cấp Cao ") LCD_STR_E3;                // Advance K
355
+  PROGMEM Language_Str MSG_ADVANCE_K_E4                    = _UxGT("K Cấp Cao ") LCD_STR_E4;                // Advance K
356
+  PROGMEM Language_Str MSG_ADVANCE_K_E5                    = _UxGT("K Cấp Cao ") LCD_STR_E5;                // Advance K
357
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("Độ tương phản LCD");                    // LCD contrast
358
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("Lưu các thiết lập");                    // Store settings
359
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("Tải các cài đặt");                      // Load settings
360
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("Khôi phục phòng hư");                   // Restore failsafe
361
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("Khởi Tạo EEPROM");                      // Initialize EEPROM
362
+  PROGMEM Language_Str MSG_SD_UPDATE                       = _UxGT("Cập Nhật SD");                          // SD Update
363
+  PROGMEM Language_Str MSG_RESET_PRINTER                   = _UxGT("Bặt Lại Máy In");
364
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("Cập Nhật");                             // Refresh
365
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("Màn Hình Thông Tin");                   // Info screen
366
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("Chuẩn bị");                             // Prepare
367
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("Điều Chỉnh");                           // Tune
368
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("Tạm dừng in");                          // Pause print
369
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("Tiếp tục in");                          // Resume print
370
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("Ngừng in");                             // Stop print
371
+  PROGMEM Language_Str MSG_OUTAGE_RECOVERY                 = _UxGT("Phục Hồi Mất Điện");                    // Outage Recovery
372
+  PROGMEM Language_Str MSG_CARD_MENU                       = _UxGT("In từ SD");                             // Print from SD
373
+  PROGMEM Language_Str MSG_NO_CARD                         = _UxGT("Không có thẻ SD");                      // No SD card
374
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("Ngủ...");                               // Sleep
375
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("Nhấn để tiếp tục...");                  // Click to resume (same as 'continue')
376
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("In tạm dừng");                          // print paused
377
+  PROGMEM Language_Str MSG_PRINTING                        = _UxGT("Đang in...");                           // printing
378
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("In đã hủy bỏ");                         // Print aborted
379
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("Không di chuyển.");                     // No move.
380
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("ĐÃ CHẾT. ");
381
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("ĐÃ NGỪNG. ");
382
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("Rút mm");                               // Retract mm
383
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("Rút Trao.mm");                          // Swap Re.mm
384
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("Rút V");
385
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Nhảy mm");                              // hop
386
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("BỏRút mm");                             // UnRet mm
387
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("BỏRút T mm");                           // S UnRet mm
388
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("BỏRút V");                              // UnRet V
389
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("BỏRút T V");                            // S UnRet V
390
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("RútTựĐộng");                            // AutoRetr.
391
+  PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH            = _UxGT("Khoảng Cách Rút");                      // Retract Distance
392
+  PROGMEM Language_Str MSG_TOOL_CHANGE                     = _UxGT("Thay Đổi Công Cụ");                     // Tool Change
393
+  PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT               = _UxGT("Đưa Lên Z");                            // Z Raise
394
+  PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD          = _UxGT("Tốc Độ Tuôn Ra");                       // Prime Speed
395
+  PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD        = _UxGT("Tốc Độ Rút Lại");                       // Retract Speed
396
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("Thay dây nhựa");                        // change filament
397
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("Thay dây nhựa ") LCD_STR_E0;            // change filament
398
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("Thay dây nhựa ") LCD_STR_E1;            // change filament
399
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("Thay dây nhựa ") LCD_STR_E2;            // change filament
400
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("Thay dây nhựa ") LCD_STR_E3;            // change filament
401
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("Thay dây nhựa ") LCD_STR_E4;            // change filament
402
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("Thay dây nhựa ") LCD_STR_E5;            // change filament
403
+  PROGMEM Language_Str MSG_FILAMENTLOAD                    = _UxGT("Nạp dây nhựa");                         // load filament
404
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("Nạp dây nhựa ") LCD_STR_E0;             // load filament
405
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("Nạp dây nhựa ") LCD_STR_E1;             // load filament
406
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("Nạp dây nhựa ") LCD_STR_E2;             // load filament
407
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("Nạp dây nhựa ") LCD_STR_E3;             // load filament
408
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("Nạp dây nhựa ") LCD_STR_E4;             // load filament
409
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("Nạp dây nhựa ") LCD_STR_E5;             // load filament
410
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("Dỡ dây nhựa ") LCD_STR_E0;              // unload filament
411
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("Dỡ dây nhựa ") LCD_STR_E1;              // unload filament
412
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("Dỡ dây nhựa ") LCD_STR_E2;              // unload filament
413
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("Dỡ dây nhựa ") LCD_STR_E3;              // unload filament
414
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("Dỡ dây nhựa ") LCD_STR_E4;              // unload filament
415
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("Dỡ dây nhựa ") LCD_STR_E5;              // unload filament
416
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("Dỡ tất cả");                            // Unload All
417
+  PROGMEM Language_Str MSG_INIT_SDCARD                     = _UxGT("Khởi tạo thẻ SD ");                     // Init. SD card
418
+  PROGMEM Language_Str MSG_CHANGE_SDCARD                   = _UxGT("Thay thẻ SD");                          // Change SD card
419
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Đầu Dò Z qua bàn");                     // Z Probe past bed
420
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("Hệ số nghiêng");                        // Skew Factor
421
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTOUCH");                              // BLTouch
422
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("Tự kiểm tra BLTOUCH ");                 // BLTouch Self-Test
423
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("Bặt lại BLTouch");                      // Reset BLTouch
424
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("Đem BLTouch");                          // Deploy BLTouch
425
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("Cất BLTouch");                          // Stow BLTouch
426
+  PROGMEM Language_Str MSG_MANUAL_DEPLOY                   = _UxGT("Đem Đầu Dò-Z");                         // Deploy Z-Probe
427
+  PROGMEM Language_Str MSG_MANUAL_STOW                     = _UxGT("Cất Đầu Dò-Z");                         // Stow Z-Probe
428
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("Về nhà %s%s%s Trước");
429
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Đầu Dò Bù Đắp Z");                      // Probe Z Offset
430
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("Nhít X");                               // Babystep X
431
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("Nhít Y");
432
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("Nhít Z");
433
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("Hủy bỏ công tắc");                      // Endstop abort
434
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("Sưởi đầu phun không thành công");       // Heating failed
435
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED          = _UxGT("Sưởi bàn không thành công");            // Bed heating failed
436
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("Điều sai: nhiệt độ dư");                // Err: REDUNDANT TEMP
437
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("Vấn đề nhiệt");                         // THERMAL RUNAWAY | problem
438
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED             = _UxGT("Vấn đề nhiệt bàn");                     // BED THERMAL RUNAWAY
439
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("Điều sai: nhiệt độ tối đa");            // Err: MAXTEMP
440
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("Điều sai: nhiệt độ tối thiểu");         // Err: MINTEMP
441
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("Điều sai: nhiệt độ bàn tối đa");        // Err: MAXTEMP BED
442
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("Điều sai: nhiệt độ bàn tối thiểu");     // Err: MINTEMP BED
443
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("Về nhà XY Trước");                      // Home XY First
444
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("MÁY IN ĐÃ DỪNG LẠI");                   // PRINTER HALTED
445
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("Xin bặt lại");                          // Please reset
446
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("n");                                    // d - ngày - One character only
447
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("g");                                    // h - giờ  - One character only
448
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("p");                                    // m - phút - One character only
449
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("Đang sưởi nóng...");                    // heating
450
+  PROGMEM Language_Str MSG_COOLING                         = _UxGT("Đang làm nguội...");                    // cooling
451
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("Đang sưởi nong bàn...");                // bed heating
452
+  PROGMEM Language_Str MSG_BED_COOLING                     = _UxGT("Đang làm nguội bàn...");                // bed cooling
453
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("Cân Chỉnh Delta");                      // Delta calibration
454
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("Chỉnh X lại");
455
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("Chỉnh Y lại");
456
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("Chỉnh Z lại");
457
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("Chỉnh Z Center");                       // Calibrate Center
458
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("Cài Đặt Delta");                        // Delta Settings
459
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("Cân Chỉnh Tự Động");                    // Auto Calibration
460
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("Đặt Chiều Cao Delta");                  // Set Delta Height
461
+  PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE        = _UxGT("Đầu Dò Z-Bù Đắp");                      // Probe Z-offset
462
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("Gậy Chéo");                             // Diag Rod
463
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("Chiều Cao");                            // Height
464
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("Bán Kính");                             // Radius
465
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("Về Máy In");
466
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("Thông Tin Máy In");                     // Printer Info
467
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("San lấp 3-Điểm");                       // 3-Point Leveling
468
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("San Lấp Tuyến Tính");                   // Linear Leveling
469
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("San Lấp Song Tuyến");                   // Bilinear Leveling
470
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("San Lấp Bàn Thống Nhất");               // Unified Bed Leveling
471
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("Lưới San Lấp");                         // Mesh Leveling
472
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("Thống Kê Máy In");                      // Printer Stats
473
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("Thông Tin Bo Mạch");                    // Board Info
474
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("Điện Trở Nhiệt");                       // Thermistors
475
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("Máy đùn");                              // Extruders
476
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("Baud");                                 // Baud
477
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("Giao Thức");                            // Protocol
478
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("Đèn Khuông");                           // Case light
479
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("Độ Sáng");                              // Light Brightness
480
+  #if LCD_WIDTH >= 20
481
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("Số In");                                // Print Count
482
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Đã hoàn thành");
483
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tổng số thời gian in");                // Total print time
484
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Thời gian việc lâu nhất");              // Longest job time
485
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Tổng số đùn");                          // Extruded total
486
+  #else
487
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("In");                                   // prints
488
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("Đã hoàn thành");                        // Completed
489
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("Tổng số");                             // total
490
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("Dài nhất");                             // Longest
491
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("Đã ép đùn");
492
+  #endif
493
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("Nhiệt độ tối thiểu");                   // Min Temp
494
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("Nhiệt độ tối đa");                      // Max temp
495
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("Bộ nguồn");                             // PSU
496
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("Sức mạnh ổ đĩa");                       // Drive Strength
497
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("% trình điều khiển");                   // Driver %
498
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("Ghi DAC EEPROM");                       // DAC EEPROM Write
499
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("In tạm dừng");                          // PRINT PAUSED
500
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("Nạp dây nhựa");
501
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("Dỡ dây nhựa");                          // unload filament
502
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("Tùy chọn hồi phục:");                   // RESUME OPTIONS
503
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("Xả thêm");                              // Purge more
504
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("Tiếp tục");                             // continue
505
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  Đầu Phun: ");                         // Nozzle
506
+  PROGMEM Language_Str MSG_RUNOUT_SENSOR_ENABLE            = _UxGT("Cảm Biến Hết");                         // Runout Sensor
507
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("Sự nhà không thành công");              // Homing failed
508
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT(" không thành công");                    // Probing failed
509
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: Quá lạnh");
179 510
 
180
-#define MSG_MOVING                          _UxGT("Di chuyển...")                         // Moving
181
-#define MSG_FREE_XY                         _UxGT("Giải phóng XY")                        // Free XY
182
-#define MSG_MOVE_X                          _UxGT("Di chuyển X")                          // Move X
183
-#define MSG_MOVE_Y                          _UxGT("Di chuyển Y")
184
-#define MSG_MOVE_Z                          _UxGT("Di chuyển Z")
185
-#define MSG_MOVE_E                          _UxGT("Máy đùn")                              // Extruder
186
-#define MSG_HOTEND_TOO_COLD                 _UxGT("Đầu nóng quá lạnh")                    // Hotend too cold
187
-#define MSG_MOVE_01MM                       _UxGT("Di chuyển 0.1mm")                      // Move 0.1mm
188
-#define MSG_MOVE_1MM                        _UxGT("Di chuyển 1mm")                        // Move 1mm
189
-#define MSG_MOVE_10MM                       _UxGT("Di chuyển 10mm")                       // Move 10mm
190
-#define MSG_SPEED                           _UxGT("Tốc độ")                               // Speed
191
-#define MSG_BED_Z                           _UxGT("Z Bàn")
192
-#define MSG_NOZZLE                          _UxGT("Đầu phun")                             // Nozzle
193
-#define MSG_BED                             _UxGT("Bàn")                                  // bed
194
-#define MSG_FAN_SPEED                       _UxGT("Tốc độ quạt")                          // fan speed
195
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("Tốc độ quạt phụ")                      // Extra fan speed
196
-#define MSG_FLOW                            _UxGT("Lưu Lượng")
197
-#define MSG_CONTROL                         _UxGT("Điều khiển")                           // Control
198
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Đa")   // min
199
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Thiểu")
200
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Hệ Số") // factor
201
-#define MSG_AUTOTEMP                        _UxGT("Nhiệt độ tự động")                     // Autotemp
202
-#define MSG_LCD_ON                          _UxGT("Bật")                                  // on
203
-#define MSG_LCD_OFF                         _UxGT("Tắt")                                  // off
204
-#define MSG_PID_P                           _UxGT("PID-P")
205
-#define MSG_PID_I                           _UxGT("PID-I")
206
-#define MSG_PID_D                           _UxGT("PID-D")
207
-#define MSG_PID_C                           _UxGT("PID-C")
208
-#define MSG_SELECT                          _UxGT("Lựa")                                  // Select
209
-#define MSG_ACC                             _UxGT("Tăng Tốc")
210
-#define MSG_JERK                            _UxGT("Giật")
211
-#if IS_KINEMATIC
212
-  #define MSG_VA_JERK                       _UxGT("Giật-Va")
213
-  #define MSG_VB_JERK                       _UxGT("Giật-Vb")
214
-  #define MSG_VC_JERK                       _UxGT("Giật-Vc")
215
-#else
216
-  #define MSG_VA_JERK                       _UxGT("Giật-Vx")
217
-  #define MSG_VB_JERK                       _UxGT("Giật-Vy")
218
-  #define MSG_VC_JERK                       _UxGT("Giật-Vz")
219
-#endif
220
-#define MSG_VE_JERK                         _UxGT("Giật-Ve")
221
-#define MSG_JUNCTION_DEVIATION              _UxGT("Độ Lệch Chỗ Giao")                    // Junction Dev
222
-#define MSG_VELOCITY                        _UxGT("Vận tốc")                              // velocity
223
-#define MSG_VMAX                            _UxGT("Vđa")                                  // Vmax
224
-#define MSG_VMIN                            _UxGT("Vthiểu")                               // Vmin
225
-#define MSG_VTRAV_MIN                       _UxGT("Vchuyển thiểu")                        // VTrav min
226
-#define MSG_ACCELERATION                    _UxGT("Sự tăng tốc")                          // Acceleration
227
-#define MSG_AMAX                            _UxGT("Tăng tốc ca")                          // Amax
228
-#define MSG_A_RETRACT                       _UxGT("TT-Rút")                               // A-retract
229
-#define MSG_A_TRAVEL                        _UxGT("TT-Chuyển")                            // A-travel
230
-#define MSG_STEPS_PER_MM                    _UxGT("Bước/mm")                              // Steps
231
-#if IS_KINEMATIC
232
-  #define MSG_ASTEPS                        _UxGT("BướcA/mm")                             // Asteps/mm
233
-  #define MSG_BSTEPS                        _UxGT("BướcB/mm")
234
-  #define MSG_CSTEPS                        _UxGT("BướcC/mm")
235
-#else
236
-  #define MSG_ASTEPS                        _UxGT("BướcX/mm")                             // Xsteps/mm
237
-  #define MSG_BSTEPS                        _UxGT("BướcY/mm")
238
-  #define MSG_CSTEPS                        _UxGT("BướcZ/mm")
239
-#endif
240
-#define MSG_ESTEPS                          _UxGT("BướcE/mm")
241
-#define MSG_E0_STEPS                        _UxGT("BướcE1/mm")
242
-#define MSG_E1_STEPS                        _UxGT("BướcE2/mm")
243
-#define MSG_E2_STEPS                        _UxGT("BướcE3/mm")
244
-#define MSG_E3_STEPS                        _UxGT("BướcE4/mm")
245
-#define MSG_E4_STEPS                        _UxGT("BướcE5/mm")
246
-#define MSG_E5_STEPS                        _UxGT("BướcE6/mm")
247
-#define MSG_TEMPERATURE                     _UxGT("Nhiệt độ")                             // Temperature
248
-#define MSG_MOTION                          _UxGT("Chuyển động")                          // Motion
249
-#define MSG_FILAMENT                        _UxGT("Vật liệu in")                          // dây nhựa
250
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("E bằng mm") MSG_CUBED                  // E in mm
251
-#define MSG_FILAMENT_DIAM                   _UxGT("Đường kính nhựa")                      // Fil. Dai.
252
-#define MSG_FILAMENT_UNLOAD                 _UxGT("Dỡ mm")                                // unload mm
253
-#define MSG_FILAMENT_LOAD                   _UxGT("Nạp mm")
254
-#define MSG_ADVANCE_K                       _UxGT("K Cấp Cao")                            // Advance K
255
-#define MSG_CONTRAST                        _UxGT("Độ tương phản LCD")                    // LCD contrast
256
-#define MSG_STORE_EEPROM                    _UxGT("Lưu các thiết lập")                    // Store settings
257
-#define MSG_LOAD_EEPROM                     _UxGT("Tải các cài đặt")                      // Load settings
258
-#define MSG_RESTORE_FAILSAFE                _UxGT("Khôi phục phòng hư")                   // Restore failsafe
259
-#define MSG_INIT_EEPROM                     _UxGT("Khởi Tạo EEPROM")                      // Initialize EEPROM
260
-#define MSG_SD_UPDATE                       _UxGT("Cập Nhật SD")                          // SD Update
261
-#define MSG_RESET_PRINTER                   _UxGT("Bặt Lại Máy In")
262
-#define MSG_REFRESH                         _UxGT("Cập Nhật")                             // Refresh
263
-#define MSG_WATCH                           _UxGT("Màn Hình Thông Tin")                   // Info screen
264
-#define MSG_PREPARE                         _UxGT("Chuẩn bị")                             // Prepare
265
-#define MSG_TUNE                            _UxGT("Điều Chỉnh")                           // Tune
266
-#define MSG_PAUSE_PRINT                     _UxGT("Tạm dừng in")                          // Pause print
267
-#define MSG_RESUME_PRINT                    _UxGT("Tiếp tục in")                          // Resume print
268
-#define MSG_STOP_PRINT                      _UxGT("Ngừng in")                             // Stop print
269
-#define MSG_OUTAGE_RECOVERY                 _UxGT("Phục Hồi Mất Điện")                    // Outage Recovery
270
-#define MSG_CARD_MENU                       _UxGT("In từ SD")                             // Print from SD
271
-#define MSG_NO_CARD                         _UxGT("Không có thẻ SD")                      // No SD card
272
-#define MSG_DWELL                           _UxGT("Ngủ...")                               // Sleep
273
-#define MSG_USERWAIT                        _UxGT("Nhấn để tiếp tục...")                  // Click to resume (same as 'continue')
274
-#define MSG_PRINT_PAUSED                    _UxGT("In tạm dừng")                          // print paused
275
-#define MSG_PRINTING                        _UxGT("Đang in...")                           // printing
276
-#define MSG_PRINT_ABORTED                   _UxGT("In đã hủy bỏ")                         // Print aborted
277
-#define MSG_NO_MOVE                         _UxGT("Không di chuyển.")                     // No move.
278
-#define MSG_KILLED                          _UxGT("ĐÃ CHẾT. ")
279
-#define MSG_STOPPED                         _UxGT("ĐÃ NGỪNG. ")
280
-#define MSG_CONTROL_RETRACT                 _UxGT("Rút mm")                               // Retract mm
281
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Rút Trao.mm")                          // Swap Re.mm
282
-#define MSG_CONTROL_RETRACTF                _UxGT("Rút V")
283
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Nhảy mm")                              // hop
284
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("BỏRút mm")                             // UnRet mm
285
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("BỏRút T mm")                           // S UnRet mm
286
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("BỏRút V")                              // UnRet V
287
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("BỏRút T V")                            // S UnRet V
288
-#define MSG_AUTORETRACT                     _UxGT("RútTựĐộng")                            // AutoRetr.
289
-#define MSG_FILAMENT_SWAP_LENGTH            _UxGT("Khoảng Cách Rút")                      // Retract Distance
290
-#define MSG_TOOL_CHANGE                     _UxGT("Thay Đổi Công Cụ")                     // Tool Change
291
-#define MSG_TOOL_CHANGE_ZLIFT               _UxGT("Đưa Lên Z")                            // Z Raise
292
-#define MSG_SINGLENOZZLE_PRIME_SPD          _UxGT("Tốc Độ Tuôn Ra")                       // Prime Speed
293
-#define MSG_SINGLENOZZLE_RETRACT_SPD        _UxGT("Tốc Độ Rút Lại")                       // Retract Speed
294
-#define MSG_FILAMENTCHANGE                  _UxGT("Thay dây nhựa")                        // change filament
295
-#define MSG_FILAMENTLOAD                    _UxGT("Nạp dây nhựa")                         // load filament
296
-#define MSG_FILAMENTUNLOAD                  _UxGT("Dỡ dây nhựa")                          // unload filament
297
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("Dỡ tất cả")                            // Unload All
298
-#define MSG_INIT_SDCARD                     _UxGT("Khởi tạo thẻ SD ")                     // Init. SD card
299
-#define MSG_CHANGE_SDCARD                   _UxGT("Thay thẻ SD")                          // Change SD card
300
-#define MSG_ZPROBE_OUT                      _UxGT("Đầu Dò Z qua bàn")                     // Z Probe past bed
301
-#define MSG_SKEW_FACTOR                     _UxGT("Hệ số nghiêng")                        // Skew Factor
302
-#define MSG_BLTOUCH                         _UxGT("BLTOUCH")                              // BLTouch
303
-#define MSG_BLTOUCH_SELFTEST                _UxGT("Tự kiểm tra BLTOUCH ")                 // BLTouch Self-Test
304
-#define MSG_BLTOUCH_RESET                   _UxGT("Bặt lại BLTouch")                      // Reset BLTouch
305
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("Đem BLTouch")                          // Deploy BLTouch
306
-#define MSG_BLTOUCH_STOW                    _UxGT("Cất BLTouch")                          // Stow BLTouch
307
-#define MSG_MANUAL_DEPLOY                   _UxGT("Đem Đầu Dò-Z")                         // Deploy Z-Probe
308
-#define MSG_MANUAL_STOW                     _UxGT("Cất Đầu Dò-Z")                         // Stow Z-Probe
309
-#define MSG_HOME_FIRST                      _UxGT("Về nhà %s%s%s Trước")
310
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Đầu Dò Bù Đắp Z")                      // Probe Z Offset
311
-#define MSG_BABYSTEP_X                      _UxGT("Nhít X")                               // Babystep X
312
-#define MSG_BABYSTEP_Y                      _UxGT("Nhít Y")
313
-#define MSG_BABYSTEP_Z                      _UxGT("Nhít Z")
314
-#define MSG_ENDSTOP_ABORT                   _UxGT("Hủy bỏ công tắc")                      // Endstop abort
315
-#define MSG_HEATING_FAILED_LCD              _UxGT("Sưởi đầu phun không thành công")       // Heating failed
316
-#define MSG_HEATING_FAILED_LCD_BED          _UxGT("Sưởi bàn không thành công")            // Bed heating failed
317
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("Điều sai: nhiệt độ dư")                // Err: REDUNDANT TEMP
318
-#define MSG_THERMAL_RUNAWAY                 _UxGT("Vấn đề nhiệt")                         // THERMAL RUNAWAY | problem
319
-#define MSG_THERMAL_RUNAWAY_BED             _UxGT("Vấn đề nhiệt bàn")                     // BED THERMAL RUNAWAY
320
-#define MSG_ERR_MAXTEMP                     _UxGT("Điều sai: nhiệt độ tối đa")            // Err: MAXTEMP
321
-#define MSG_ERR_MINTEMP                     _UxGT("Điều sai: nhiệt độ tối thiểu")         // Err: MINTEMP
322
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("Điều sai: nhiệt độ bàn tối đa")        // Err: MAXTEMP BED
323
-#define MSG_ERR_MINTEMP_BED                 _UxGT("Điều sai: nhiệt độ bàn tối thiểu")     // Err: MINTEMP BED
324
-#define MSG_ERR_Z_HOMING                    _UxGT("Về nhà XY Trước")                      // Home XY First
325
-#define MSG_HALTED                          _UxGT("MÁY IN ĐÃ DỪNG LẠI")                   // PRINTER HALTED
326
-#define MSG_PLEASE_RESET                    _UxGT("Xin bặt lại")                          // Please reset
327
-#define MSG_SHORT_DAY                       _UxGT("n")                                    // d - ngày - One character only
328
-#define MSG_SHORT_HOUR                      _UxGT("g")                                    // h - giờ  - One character only
329
-#define MSG_SHORT_MINUTE                    _UxGT("p")                                    // m - phút - One character only
330
-#define MSG_HEATING                         _UxGT("Đang sưởi nóng...")                    // heating
331
-#define MSG_COOLING                         _UxGT("Đang làm nguội...")                    // cooling
332
-#define MSG_BED_HEATING                     _UxGT("Đang sưởi nong bàn...")                // bed heating
333
-#define MSG_BED_COOLING                     _UxGT("Đang làm nguội bàn...")                // bed cooling
334
-#define MSG_DELTA_CALIBRATE                 _UxGT("Cân Chỉnh Delta")                      // Delta calibration
335
-#define MSG_DELTA_CALIBRATE_X               _UxGT("Chỉnh X lại")
336
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("Chỉnh Y lại")
337
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("Chỉnh Z lại")
338
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Chỉnh Z Center")                       // Calibrate Center
339
-#define MSG_DELTA_SETTINGS                  _UxGT("Cài Đặt Delta")                        // Delta Settings
340
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Cân Chỉnh Tự Động")                    // Auto Calibration
341
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Đặt Chiều Cao Delta")                  // Set Delta Height
342
-#define MSG_DELTA_Z_OFFSET_CALIBRATE        _UxGT("Đầu Dò Z-Bù Đắp")                      // Probe Z-offset
343
-#define MSG_DELTA_DIAG_ROD                  _UxGT("Gậy Chéo")                             // Diag Rod
344
-#define MSG_DELTA_HEIGHT                    _UxGT("Chiều Cao")                            // Height
345
-#define MSG_DELTA_RADIUS                    _UxGT("Bán Kính")                             // Radius
346
-#define MSG_INFO_MENU                       _UxGT("Về Máy In")
347
-#define MSG_INFO_PRINTER_MENU               _UxGT("Thông Tin Máy In")                     // Printer Info
348
-#define MSG_3POINT_LEVELING                 _UxGT("San lấp 3-Điểm")                       // 3-Point Leveling
349
-#define MSG_LINEAR_LEVELING                 _UxGT("San Lấp Tuyến Tính")                   // Linear Leveling
350
-#define MSG_BILINEAR_LEVELING               _UxGT("San Lấp Song Tuyến")                   // Bilinear Leveling
351
-#define MSG_UBL_LEVELING                    _UxGT("San Lấp Bàn Thống Nhất")               // Unified Bed Leveling
352
-#define MSG_MESH_LEVELING                   _UxGT("Lưới San Lấp")                         // Mesh Leveling
353
-#define MSG_INFO_STATS_MENU                 _UxGT("Thống Kê Máy In")                      // Printer Stats
354
-#define MSG_INFO_BOARD_MENU                 _UxGT("Thông Tin Bo Mạch")                    // Board Info
355
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Điện Trở Nhiệt")                       // Thermistors
356
-#define MSG_INFO_EXTRUDERS                  _UxGT("Máy đùn")                              // Extruders
357
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")                                 // Baud
358
-#define MSG_INFO_PROTOCOL                   _UxGT("Giao Thức")                            // Protocol
359
-#define MSG_CASE_LIGHT                      _UxGT("Đèn Khuông")                           // Case light
360
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Độ Sáng")                              // Light Brightness
361
-#if LCD_WIDTH >= 20
362
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Số In")                                // Print Count
363
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Đã hoàn thành")
364
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tổng số thời gian in")                // Total print time
365
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Thời gian việc lâu nhất")              // Longest job time
366
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Tổng số đùn")                          // Extruded total
367
-#else
368
-  #define MSG_INFO_PRINT_COUNT              _UxGT("In")                                   // prints
369
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Đã hoàn thành")                        // Completed
370
-  #define MSG_INFO_PRINT_TIME               _UxGT("Tổng số")                             // total
371
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("Dài nhất")                             // Longest
372
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Đã ép đùn")
373
-#endif
374
-#define MSG_INFO_MIN_TEMP                   _UxGT("Nhiệt độ tối thiểu")                   // Min Temp
375
-#define MSG_INFO_MAX_TEMP                   _UxGT("Nhiệt độ tối đa")                      // Max temp
376
-#define MSG_INFO_PSU                        _UxGT("Bộ nguồn")                             // PSU
377
-#define MSG_DRIVE_STRENGTH                  _UxGT("Sức mạnh ổ đĩa")                       // Drive Strength
378
-#define MSG_DAC_PERCENT                     _UxGT("% trình điều khiển")                   // Driver %
379
-#define MSG_DAC_EEPROM_WRITE                _UxGT("Ghi DAC EEPROM")                       // DAC EEPROM Write
380
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("In tạm dừng")                          // PRINT PAUSED
381
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("Nạp dây nhựa")
382
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("Dỡ dây nhựa")                          // unload filament
383
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("Tùy chọn hồi phục:")                   // RESUME OPTIONS
384
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("Xả thêm")                              // Purge more
385
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Tiếp tục")                             // continue
386
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Đầu Phun: ")                         // Nozzle
387
-#define MSG_RUNOUT_SENSOR_ENABLE            _UxGT("Cảm Biến Hết")                         // Runout Sensor
388
-#define MSG_ERR_HOMING_FAILED               _UxGT("Sự nhà không thành công")              // Homing failed
389
-#define MSG_ERR_PROBING_FAILED              _UxGT(" không thành công")                    // Probing failed
390
-#define MSG_M600_TOO_COLD                   _UxGT("M600: Quá lạnh")
511
+  //
512
+  // Filament Change screens show up to 3 lines on a 4-line display
513
+  //                        ...or up to 2 lines on a 3-line display
514
+  //
515
+  #if LCD_HEIGHT >= 4
516
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_2_LINE("Nhấn nút", "để tiếp tục in")); // Press button to resume print
517
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("Chờ cho sự", "thay đổi dây nhựa", "bắt đầu")); // wait for filament change to start
518
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("Đút dây nhựa vào", "và nhấn nút", "để tiếp tục")); // insert filament and press button to continue                       //
519
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("Nhấn nút", "để làm nóng đầu phun")); // Press button to heat nozzle
520
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("Đầu phun đang nóng lên", "Xin chờ...")); // Nozzle heating Please wait
521
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra"));   // Wait for filament unload
522
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào"));  // Wait for filament load
523
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa"));   // wait for filament purge
524
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_2_LINE("Nhấn nút để kết thúc", "xả dây nhựa")); // Click to finish dây nhựa purge
525
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("Chờ tro in", "tiếp tục...")); // Wait for print to resume
526
+  #else // LCD_HEIGHT < 4
527
+    PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING        = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục"));     // Click to continue
528
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("Xin chờ..."));
529
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("Chèn và nhấn"));             // Insert and Click
530
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_1_LINE("Nhấn để sưởi"));             // Click to heat
531
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("Đang sưởi nóng"));           // Heating
532
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("Đang dỡ ra..."));            // Ejecting
533
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("Đang nạp..."));              // Loading
534
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("Đang xả..."));               // Purging
535
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE    = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc"));     // Click to finish
536
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("Đang tiếp tục..."));         // Resuming
537
+  #endif // LCD_HEIGHT < 4
391 538
 
392
-//
393
-// Filament Change screens show up to 3 lines on a 4-line display
394
-//                        ...or up to 2 lines on a 3-line display
395
-//
396
-#if LCD_HEIGHT >= 4
397
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Nhấn nút")                             // Press button
398
-  #define MSG_ADVANCED_PAUSE_WAITING_2      _UxGT("để tiếp tục in")                       // to resume print
399
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Chờ cho sự")                           // wait for
400
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("thay đổi dây nhựa")                    // filament change
401
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("bắt đầu")                              // to start
402
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Đút dây nhựa vào")                     // insert filament
403
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("và nhấn nút")                          // and press button
404
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("để tiếp tục")                          // to continue
405
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Nhấn nút")                             // Press button
406
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("để làm nóng đầu phun")                 // to heat nozzle
407
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Đầu phun đang nóng lên")               // Nozzle heating
408
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Xin chờ...")                           // Please wait
409
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Chờ tro")                              // Wait for
410
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("dây nhựa ra")                          // filament unload
411
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Chờ tro")
412
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("dây nhựa vào")
413
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Chờ tro")                              // wait for filament purge
414
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("xả dây nhựa")
415
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Nhấn nút để kết thúc")                 // Click to finish
416
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_2  _UxGT("xả dây nhựa")                          // dây nhựa purge
417
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Chờ tro in")                           // Wait for print to resume
418
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("tiếp tục...")
419
-#else // LCD_HEIGHT < 4
420
-  #define MSG_ADVANCED_PAUSE_WAITING_1      _UxGT("Nhấn nút để tiếp tục")                 // Click to continue
421
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Xin chờ...")
422
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Chèn và nhấn")                         // Insert and Click
423
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Nhấn để sưởi")                         // Click to heat
424
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Đang sưởi nóng")                       // Heating
425
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Đang dỡ ra...")                        // Ejecting
426
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Đang nạp...")                          // Loading
427
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("Đang xả...")                           // Purging
428
-  #define MSG_FILAMENT_CHANGE_CONT_PURGE_1  _UxGT("Nhấn nút để kết thúc")                 // Click to finish
429
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Đang tiếp tục...")                     // Resuming
430
-#endif // LCD_HEIGHT < 4
431
-
432
-#define MSG_TMC_DRIVERS                     _UxGT("Trình điều khiển TMC")                 // TMC drivers
433
-#define MSG_TMC_CURRENT                     _UxGT("Dòng điện trình điều khiển")           // Driver current
434
-#define MSG_TMC_HYBRID_THRS                 _UxGT("Ngưỡng Hỗn Hợp")                       // Hybrid threshold
435
-#define MSG_TMC_HOMING_THRS                 _UxGT("Vô cảm biến")                          // Sensorless homing
436
-#define MSG_TMC_STEPPING_MODE               _UxGT("Chế độ từng bước")                     // Stepping mode
437
-#define MSG_TMC_STEALTH_ENABLED             _UxGT("CắtTàngHình được kích hoạt")           // StealthChop enabled
539
+  PROGMEM Language_Str MSG_TMC_DRIVERS                     = _UxGT("Trình điều khiển TMC");                 // TMC drivers
540
+  PROGMEM Language_Str MSG_TMC_CURRENT                     = _UxGT("Dòng điện trình điều khiển");           // Driver current
541
+  PROGMEM Language_Str MSG_TMC_HYBRID_THRS                 = _UxGT("Ngưỡng Hỗn Hợp");                       // Hybrid threshold
542
+  PROGMEM Language_Str MSG_TMC_HOMING_THRS                 = _UxGT("Vô cảm biến");                          // Sensorless homing
543
+  PROGMEM Language_Str MSG_TMC_STEPPING_MODE               = _UxGT("Chế độ từng bước");                     // Stepping mode
544
+  PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED             = _UxGT("CắtTàngHình được kích hoạt");           // StealthChop enabled
545
+}

+ 450
- 344
Marlin/src/lcd/language/language_zh_CN.h Zobrazit soubor

@@ -28,357 +28,463 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+namespace Language_zh_CN {
32
+  using namespace Language_en;  // Inherit undefined strings from English
31 33
 
32
-#define CHARSIZE 3
34
+  constexpr uint8_t    CHARSIZE                            = 3;
35
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Simplified Chinese");
33 36
 
34
-#define WELCOME_MSG                         MACHINE_NAME _UxGT("已就绪.")  //" ready."
35
-#define MSG_BACK                            _UxGT("返回")         // ”Back“
36
-#define MSG_MEDIA_INSERTED                  _UxGT("存储卡已插入")  //"Card inserted"
37
-#define MSG_MEDIA_REMOVED                   _UxGT("存储卡被拔出")  //"Card removed"
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("挡块")  //"Endstops" // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("主菜单")  //"Main"
40
-#define MSG_AUTOSTART                       _UxGT("自动开始")  //"Autostart"
41
-#define MSG_DISABLE_STEPPERS                _UxGT("关闭步进电机")  //"Disable steppers"
42
-#define MSG_DEBUG_MENU                      _UxGT("调试菜单")    // "Debug Menu"
43
-#define MSG_PROGRESS_BAR_TEST               _UxGT("进度条测试")  // "Progress Bar Test"
44
-#define MSG_AUTO_HOME                       _UxGT("回原点")  //"Auto home"
45
-#define MSG_AUTO_HOME_X                     _UxGT("回X原位")  //"Home X"
46
-#define MSG_AUTO_HOME_Y                     _UxGT("回Y原位")  //"Home Y"
47
-#define MSG_AUTO_HOME_Z                     _UxGT("回Z原位")  //"Home Z"
48
-#define MSG_LEVEL_BED_HOMING                _UxGT("平台调平XYZ归原位")  //"Homing XYZ"
49
-#define MSG_LEVEL_BED_WAITING               _UxGT("单击开始热床调平")  //"Click to Begin"
50
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("下个热床调平点")  //"Next Point"
51
-#define MSG_LEVEL_BED_DONE                  _UxGT("完成热床调平")  //"Leveling Done!"
52
-#define MSG_Z_FADE_HEIGHT                   _UxGT("淡出高度")     // "Fade Height"
53
-#define MSG_SET_HOME_OFFSETS                _UxGT("设置原点偏移")  //"Set home offsets"
54
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("偏移已启用")  //"Offsets applied"
55
-#define MSG_SET_ORIGIN                      _UxGT("设置原点")  //"Set origin"
56
-#define MSG_PREHEAT_1                       _UxGT("预热" PREHEAT_1_LABEL)  //"Preheat PREHEAT_2_LABEL"
57
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")  //MSG_PREHEAT_1 " "
58
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" 全部")  //MSG_PREHEAT_1 " All"
59
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" 热床")  //MSG_PREHEAT_1 " Bed"
60
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" 设置")  //MSG_PREHEAT_1 " conf"
61
-#define MSG_PREHEAT_2                       _UxGT("预热" PREHEAT_2_LABEL)  //"Preheat PREHEAT_2_LABEL"
62
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")  //MSG_PREHEAT_2 " "
63
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" 全部")  //MSG_PREHEAT_2 " All"
64
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" 热床")  //MSG_PREHEAT_2 " Bed"
65
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" 设置")  //MSG_PREHEAT_2 " conf"
66
-#define MSG_COOLDOWN                        _UxGT("降温")  //"Cooldown"
67
-#define MSG_SWITCH_PS_ON                    _UxGT("电源打开")  //"Switch power on"
68
-#define MSG_SWITCH_PS_OFF                   _UxGT("电源关闭")  //"Switch power off"
69
-#define MSG_EXTRUDE                         _UxGT("挤出")  //"Extrude"
70
-#define MSG_RETRACT                         _UxGT("回抽")  //"Retract"
71
-#define MSG_MOVE_AXIS                       _UxGT("移动轴")  //"Move axis"
72
-#define MSG_BED_LEVELING                    _UxGT("调平热床")  //"Bed leveling"
73
-#define MSG_LEVEL_BED                       _UxGT("调平热床")  //"Level bed"
74
-#define MSG_LEVEL_CORNERS                   _UxGT("调平边角") // "Level corners"
37
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT("已就绪.");     //" ready."
38
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("返回");     // ”Back“
39
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("存储卡已插入");     //"Card inserted"
40
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("存储卡被拔出");     //"Card removed"
41
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("挡块");     //"Endstops" // Max length 8 characters
42
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("主菜单");     //"Main"
43
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("自动开始");     //"Autostart"
44
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("关闭步进电机");     //"Disable steppers"
45
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("调试菜单");     // "Debug Menu"
46
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("进度条测试");     // "Progress Bar Test"
47
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("回原点");     //"Auto home"
48
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("回X原位");     //"Home X"
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("回Y原位");     //"Home Y"
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("回Z原位");     //"Home Z"
51
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("平台调平XYZ归原位");     //"Homing XYZ"
52
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("单击开始热床调平");     //"Click to Begin"
53
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("下个热床调平点");     //"Next Point"
54
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("完成热床调平");     //"Leveling Done!"
55
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("淡出高度");     // "Fade Height"
56
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("设置原点偏移");     //"Set home offsets"
57
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("偏移已启用");     //"Offsets applied"
58
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("设置原点");     //"Set origin"
59
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("预热 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_2_LABEL"
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N0;     //"Preheat PREHEAT_2_LABEL"
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N1;     //"Preheat PREHEAT_2_LABEL"
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N2;     //"Preheat PREHEAT_2_LABEL"
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N3;     //"Preheat PREHEAT_2_LABEL"
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N4;     //"Preheat PREHEAT_2_LABEL"
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N5;     //"Preheat PREHEAT_2_LABEL"
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴");     //MSG_PREHEAT_1 " "
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N0;     //MSG_PREHEAT_1 " "
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N1;     //MSG_PREHEAT_1 " "
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N2;     //MSG_PREHEAT_1 " "
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N3;     //MSG_PREHEAT_1 " "
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N4;     //MSG_PREHEAT_1 " "
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N5;     //MSG_PREHEAT_1 " "
73
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
74
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床");     //MSG_PREHEAT_1 " Bed"
75
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置");     //MSG_PREHEAT_1 " conf"
76
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("预热 ") PREHEAT_2_LABEL;     //"Preheat PREHEAT_2_LABEL"
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N0;     //"Preheat PREHEAT_2_LABEL"
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N1;     //"Preheat PREHEAT_2_LABEL"
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N2;     //"Preheat PREHEAT_2_LABEL"
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N3;     //"Preheat PREHEAT_2_LABEL"
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N4;     //"Preheat PREHEAT_2_LABEL"
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N5;     //"Preheat PREHEAT_2_LABEL"
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴");     //MSG_PREHEAT_2 " "
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N0;     //MSG_PREHEAT_2 " "
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N1;     //MSG_PREHEAT_2 " "
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N2;     //MSG_PREHEAT_2 " "
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N3;     //MSG_PREHEAT_2 " "
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N4;     //MSG_PREHEAT_2 " "
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N5;     //MSG_PREHEAT_2 " "
90
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 全部");     //MSG_PREHEAT_2 " All"
91
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 热床");     //MSG_PREHEAT_2 " Bed"
92
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 设置");     //MSG_PREHEAT_2 " conf"
93
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("降温");     //"Cooldown"
94
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("电源打开");     //"Switch power on"
95
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("电源关闭");     //"Switch power off"
96
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("挤出");     //"Extrude"
97
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("回抽");     //"Retract"
98
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("移动轴");     //"Move axis"
99
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("调平热床");     //"Bed leveling"
100
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("调平热床");     //"Level bed"
101
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("调平边角");     // "Level corners"
75 102
 
76
-#define MSG_NEXT_CORNER                     _UxGT("下个边角") // "Next corner"
77
-#define MSG_EDIT_MESH                       _UxGT("编辑网格") // "Edit Mesh"
78
-#define MSG_EDITING_STOPPED                 _UxGT("网格编辑已停止") // "Mesh Editing Stopped"
79
-#define MSG_USER_MENU                       _UxGT("定制命令") // "Custom Commands"
103
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("下个边角");     // "Next corner"
104
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("编辑网格");     // "Edit Mesh"
105
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("网格编辑已停止");     // "Mesh Editing Stopped"
106
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("定制命令");     // "Custom Commands"
80 107
 
81
-#define MSG_UBL_DOING_G29                   _UxGT("执行G29") // "Doing G29"
82
-#define MSG_UBL_TOOLS                       _UxGT("UBL工具") // "UBL Tools"
83
-#define MSG_UBL_LEVEL_BED                   _UxGT("统一热床调平(UBL)") // "Unified Bed Leveling"
84
-#define MSG_UBL_MANUAL_MESH                 _UxGT("手工创设网格") // "Manually Build Mesh"
85
-#define MSG_UBL_BC_INSERT                   _UxGT("放置垫片并测量") // "Place shim & measure"
86
-#define MSG_UBL_BC_INSERT2                  _UxGT("测量") // "Measure"
87
-#define MSG_UBL_BC_REMOVE                   _UxGT("移除并测量热床") // "Remove & measure bed"
88
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("移动到下一个") // "Moving to next"
89
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("激活UBL") // "Activate UBL"
90
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("关闭UBL") // "Deactivate UBL"
91
-#define MSG_UBL_SET_TEMP_BED                _UxGT("设置热床温度") // "Bed Temp"
92
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("热端温度") // "Hotend Temp"
93
-#define MSG_UBL_MESH_EDIT                   _UxGT("网格编辑") // "Mesh Edit"
94
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("编辑客户网格") // "Edit Custom Mesh"
95
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("细调网格") // "Fine Tuning Mesh"
96
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("完成编辑网格") // "Done Editing Mesh"
97
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("创设客户网格") // "Build Custom Mesh"
98
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("创设网格") // "Build Mesh"
99
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("创设" PREHEAT_1_LABEL "网格") // "Build PREHEAT_1_LABEL Mesh"
100
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("创设" PREHEAT_2_LABEL "网格") // "Build PREHEAT_2_LABEL Mesh"
101
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("创设冷网格") // "Build Cold Mesh"
102
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("调整网格高度") // "Adjust Mesh Height"
103
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("高度合计") // "Height Amount"
104
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("批准网格") // "Validate Mesh"
105
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("批准" PREHEAT_1_LABEL "网格") // "Validate PREHEAT_1_LABEL Mesh"
106
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("批准" PREHEAT_2_LABEL "网格") // "Validate PREHEAT_2_LABEL Mesh"
107
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("批准客户网格") // "Validate Custom Mesh"
108
-#define MSG_UBL_CONTINUE_MESH               _UxGT("继续热床网格") // "Continue Bed Mesh"
109
-#define MSG_UBL_MESH_LEVELING               _UxGT("网格调平") // "Mesh Leveling"
110
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("三点调平") // "3-Point Leveling"
111
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("格子网格调平") // "Grid Mesh Leveling"
112
-#define MSG_UBL_MESH_LEVEL                  _UxGT("调平网格") // "Level Mesh"
113
-#define MSG_UBL_SIDE_POINTS                 _UxGT("边点") // "Side Points"
114
-#define MSG_UBL_MAP_TYPE                    _UxGT("图类型") // "Map Type"
115
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("输出网格图") // "Output Mesh Map"
116
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("输出到主机") // "Output for Host"
117
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("输出到CSV") // "Output for CSV"
118
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("输出到备份") // "Off Printer Backup"
119
-#define MSG_UBL_INFO_UBL                    _UxGT("输出UBL信息") // "Output UBL Info"
120
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("填充合计") // "Fill-in Amount"
121
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("手工填充") // "Manual Fill-in"
122
-#define MSG_UBL_SMART_FILLIN                _UxGT("聪明填充") // "Smart Fill-in"
123
-#define MSG_UBL_FILLIN_MESH                 _UxGT("填充网格") // "Fill-in Mesh"
124
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("作废所有的") // "Invalidate All"
125
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("作废最近的") // "Invalidate Closest"
126
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("细调所有的") // "Fine Tune All"
127
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("细调最近的") // "Fine Tune Closest"
128
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("网格存储") // "Mesh Storage"
129
-#define MSG_UBL_STORAGE_SLOT                _UxGT("存储槽") // "Memory Slot"
130
-#define MSG_UBL_LOAD_MESH                   _UxGT("装载热床网格") // "Load Bed Mesh"
131
-#define MSG_UBL_SAVE_MESH                   _UxGT("保存热床网格") // "Save Bed Mesh"
132
-#define MSG_MESH_LOADED                     _UxGT("网格 %i 已装载") // "Mesh %i loaded"
133
-#define MSG_MESH_SAVED                      _UxGT("网格 %i 已保存") // "Mesh %i saved"
134
-#define MSG_UBL_NO_STORAGE                  _UxGT("没有存储") // "No storage"
135
-#define MSG_UBL_SAVE_ERROR                  _UxGT("错误: UBL保存") // "Err: UBL Save"
136
-#define MSG_UBL_RESTORE_ERROR               _UxGT("错误: UBL还原") // "Err: UBL Restore"
137
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z偏移已停止") // "Z-Offset Stopped"
138
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("一步步UBL") // "Step-By-Step UBL"
108
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("执行G29");     // "Doing G29"
109
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("UBL工具");     // "UBL Tools"
110
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("统一热床调平(UBL)");     // "Unified Bed Leveling"
111
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("手工创设网格");     // "Manually Build Mesh"
112
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("放置垫片并测量");     // "Place shim & measure"
113
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("测量");     // "Measure"
114
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("移除并测量热床");     // "Remove & measure bed"
115
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("移动到下一个");     // "Moving to next"
116
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("激活UBL");     // "Activate UBL"
117
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("关闭UBL");     // "Deactivate UBL"
118
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("设置热床温度");     // "Bed Temp"
119
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("热端温度");     // "Hotend Temp"
120
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("网格编辑");     // "Mesh Edit"
121
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("编辑客户网格");     // "Edit Custom Mesh"
122
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("细调网格");     // "Fine Tuning Mesh"
123
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("完成编辑网格");     // "Done Editing Mesh"
124
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("创设客户网格");     // "Build Custom Mesh"
125
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("创设网格");     // "Build Mesh"
126
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("创设 ") PREHEAT_1_LABEL _UxGT(" 网格");     // "Build PREHEAT_1_LABEL Mesh"
127
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("创设 ") PREHEAT_2_LABEL _UxGT(" 网格");     // "Build PREHEAT_2_LABEL Mesh"
128
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("创设冷网格");     // "Build Cold Mesh"
129
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("调整网格高度");     // "Adjust Mesh Height"
130
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("高度合计");     // "Height Amount"
131
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("批准网格");     // "Validate Mesh"
132
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 网格");     // "Validate PREHEAT_1_LABEL Mesh"
133
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 网格");     // "Validate PREHEAT_2_LABEL Mesh"
134
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("批准客户网格");     // "Validate Custom Mesh"
135
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("继续热床网格");     // "Continue Bed Mesh"
136
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("网格调平");     // "Mesh Leveling"
137
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("三点调平");     // "3-Point Leveling"
138
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("格子网格调平");     // "Grid Mesh Leveling"
139
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("调平网格");     // "Level Mesh"
140
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("边点");     // "Side Points"
141
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("图类型");     // "Map Type"
142
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("输出网格图");     // "Output Mesh Map"
143
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("输出到主机");     // "Output for Host"
144
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("输出到CSV");     // "Output for CSV"
145
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("输出到备份");     // "Off Printer Backup"
146
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("输出UBL信息");     // "Output UBL Info"
147
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("填充合计");     // "Fill-in Amount"
148
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("手工填充");     // "Manual Fill-in"
149
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("聪明填充");     // "Smart Fill-in"
150
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("填充网格");     // "Fill-in Mesh"
151
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("作废所有的");     // "Invalidate All"
152
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("作废最近的");     // "Invalidate Closest"
153
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("细调所有的");     // "Fine Tune All"
154
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("细调最近的");     // "Fine Tune Closest"
155
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("网格存储");     // "Mesh Storage"
156
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("存储槽");     // "Memory Slot"
157
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("装载热床网格");     // "Load Bed Mesh"
158
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("保存热床网格");     // "Save Bed Mesh"
159
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 网格 %i 已装载");     // "Mesh %i loaded"
160
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 网格 %i 已保存");     // "Mesh %i saved"
161
+  PROGMEM Language_Str MSG_UBL_NO_STORAGE                  = _UxGT("没有存储");     // "No storage"
162
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("错误: UBL保存");     // "Err: UBL Save"
163
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("错误: UBL还原");     // "Err: UBL Restore"
164
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Z偏移已停止");     // "Z-Offset Stopped"
165
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("一步步UBL");     // "Step-By-Step UBL"
166
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1. 创设冷网格");
167
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2. 聪明填充");
168
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3. 批准网格");
169
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4. 细调所有的");
170
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5. 批准网格");
171
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6. 细调所有的");
172
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7. 保存热床网格");
139 173
 
140
-#define MSG_LED_CONTROL                     _UxGT("灯管控制") // "LED Control")
141
-#define MSG_LEDS                            _UxGT("灯") // "Lights")
142
-#define MSG_LED_PRESETS                     _UxGT("灯预置") // "Light Presets")
143
-#define MSG_SET_LEDS_RED                    _UxGT("红") // "Red")
144
-#define MSG_SET_LEDS_ORANGE                 _UxGT("橙") // "Orange")
145
-#define MSG_SET_LEDS_YELLOW                 _UxGT("黄") // "Yellow")
146
-#define MSG_SET_LEDS_GREEN                  _UxGT("绿") // "Green")
147
-#define MSG_SET_LEDS_BLUE                   _UxGT("蓝") // "Blue")
148
-#define MSG_SET_LEDS_INDIGO                 _UxGT("青") // "Indigo")
149
-#define MSG_SET_LEDS_VIOLET                 _UxGT("紫") // "Violet")
150
-#define MSG_SET_LEDS_WHITE                  _UxGT("白") // "White")
151
-#define MSG_SET_LEDS_DEFAULT                _UxGT("缺省") // "Default")
152
-#define MSG_CUSTOM_LEDS                     _UxGT("定制灯") // "Custom Lights")
153
-#define MSG_INTENSITY_R                     _UxGT("红饱和度") // "Red Intensity")
154
-#define MSG_INTENSITY_G                     _UxGT("绿饱和度") // "Green Intensity")
155
-#define MSG_INTENSITY_B                     _UxGT("蓝饱和度") // "Blue Intensity")
156
-#define MSG_INTENSITY_W                     _UxGT("白饱和度") // "White Intensity")
157
-#define MSG_LED_BRIGHTNESS                  _UxGT("亮度") // "Brightness")
174
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("灯管控制");     // "LED Control")
175
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("灯");     // "Lights")
176
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("灯预置");     // "Light Presets")
177
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("红");     // "Red")
178
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("橙");     // "Orange")
179
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("黄");     // "Yellow")
180
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("绿");     // "Green")
181
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("蓝");     // "Blue")
182
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("青");     // "Indigo")
183
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("紫");     // "Violet")
184
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("白");     // "White")
185
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("缺省");     // "Default")
186
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("定制灯");     // "Custom Lights")
187
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("红饱和度");     // "Red Intensity")
188
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("绿饱和度");     // "Green Intensity")
189
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("蓝饱和度");     // "Blue Intensity")
190
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("白饱和度");     // "White Intensity")
191
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("亮度");     // "Brightness")
158 192
 
159
-#define MSG_MOVING                          _UxGT("移动 ...") // "Moving...")
160
-#define MSG_FREE_XY                         _UxGT("释放 XY") // "Free XY")
161
-#define MSG_MOVE_X                          _UxGT("移动X")  //"Move X"
162
-#define MSG_MOVE_Y                          _UxGT("移动Y")  //"Move Y"
163
-#define MSG_MOVE_Z                          _UxGT("移动Z")  //"Move Z"
164
-#define MSG_MOVE_E                          _UxGT("挤出机")  //"Extruder"
165
-#define MSG_MOVE_Z_DIST                     _UxGT("移动 %s mm")  //"Move 0.025mm"
166
-#define MSG_MOVE_01MM                       _UxGT("移动 0.1 mm")  //"Move 0.1mm"
167
-#define MSG_MOVE_1MM                        _UxGT("移动 1 mm")  //"Move 1mm"
168
-#define MSG_MOVE_10MM                       _UxGT("移动 10 mm")  //"Move 10mm"
169
-#define MSG_SPEED                           _UxGT("速率")  //"Speed"
170
-#define MSG_BED_Z                           _UxGT("热床Z")  //"Bed Z"
171
-#define MSG_NOZZLE                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 喷嘴")  //"Nozzle" 噴嘴
172
-#define MSG_BED                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 热床")  //"Bed"
173
-#define MSG_FAN_SPEED                       _UxGT("风扇速率")  //"Fan speed"
174
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("额外风扇速率") // "Extra fan speed"
175
-#define MSG_FLOW                            _UxGT("挤出速率")  //"Flow"
176
-#define MSG_CONTROL                         _UxGT("控制")  //"Control"
177
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最小") //" " LCD_STR_THERMOMETER " Min"
178
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最大")  //" " LCD_STR_THERMOMETER " Max"
179
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 因数")  //" " LCD_STR_THERMOMETER " Fact"
180
-#define MSG_AUTOTEMP                        _UxGT("自动控温")  //"Autotemp"
181
-#define MSG_LCD_ON                          _UxGT("开")  //"On"
182
-#define MSG_LCD_OFF                         _UxGT("关")  //"Off"
183
-#define MSG_PID_P                           _UxGT("PID-P")  //"PID-P"
184
-#define MSG_PID_I                           _UxGT("PID-I")  //"PID-I"
185
-#define MSG_PID_D                           _UxGT("PID-D")  //"PID-D"
186
-#define MSG_PID_C                           _UxGT("PID-C")  //"PID-C"
187
-#define MSG_SELECT                          _UxGT("选择")  //"Select"
188
-#define MSG_ACC                             _UxGT("加速度")  //"Accel" acceleration
189
-#define MSG_JERK                            _UxGT("抖动速率")  // "Jerk"
190
-#if IS_KINEMATIC
191
-  #define MSG_VA_JERK                       _UxGT("A轴抖动速率")  //"Va-jerk"
192
-  #define MSG_VB_JERK                       _UxGT("B轴抖动速率")  //"Vb-jerk"
193
-  #define MSG_VC_JERK                       _UxGT("C轴抖动速率")  //"Vc-jerk"
194
-#else
195
-  #define MSG_VA_JERK                       _UxGT("X轴抖动速率")  //"Vx-jerk"
196
-  #define MSG_VB_JERK                       _UxGT("Y轴抖动速率")  //"Vy-jerk"
197
-  #define MSG_VC_JERK                       _UxGT("Z轴抖动速率")  //"Vz-jerk"
198
-#endif
199
-#define MSG_VE_JERK                         _UxGT("挤出机抖动速率")  //"Ve-jerk"
200
-#define MSG_VELOCITY                        _UxGT("速度")          // "Velocity"
201
-#define MSG_VMAX                            _UxGT("最大进料速率")  //"Vmax " max_feedrate_mm_s
202
-#define MSG_VMIN                            _UxGT("最小进料速率")  //"Vmin"  min_feedrate_mm_s
203
-#define MSG_VTRAV_MIN                       _UxGT("最小移动速率")  //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
204
-#define MSG_ACCELERATION                    _UxGT("加速度")       // "Acceleration"
205
-#define MSG_AMAX                            _UxGT("最大打印加速度")  //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
206
-#define MSG_A_RETRACT                       _UxGT("收进加速度")  //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
207
-#define MSG_A_TRAVEL                        _UxGT("非打印移动加速度")  //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
208
-#define MSG_STEPS_PER_MM                    _UxGT("轴步数/mm")  //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
209
-#if IS_KINEMATIC
210
-  #define MSG_ASTEPS                        _UxGT("A轴步数/mm")  //"Asteps/mm"
211
-  #define MSG_BSTEPS                        _UxGT("B轴步数/mm")  //"Bsteps/mm"
212
-  #define MSG_CSTEPS                        _UxGT("C轴步数/mm")  //"Csteps/mm"
213
-#else
214
-  #define MSG_ASTEPS                        _UxGT("X轴步数/mm")  //"Xsteps/mm"
215
-  #define MSG_BSTEPS                        _UxGT("Y轴步数/mm")  //"Ysteps/mm"
216
-  #define MSG_CSTEPS                        _UxGT("Z轴步数/mm")  //"Zsteps/mm"
217
-#endif
218
-#define MSG_ESTEPS                          _UxGT("挤出机步数/mm")  //"Esteps/mm"
219
-#define MSG_E0_STEPS                        _UxGT("挤出机1步数/mm") //"E1steps/mm"
220
-#define MSG_E1_STEPS                        _UxGT("挤出机2步数/mm") //"E2steps/mm"
221
-#define MSG_E2_STEPS                        _UxGT("挤出机3步数/mm") //"E3steps/mm"
222
-#define MSG_E3_STEPS                        _UxGT("挤出机4步数/mm") //"E4steps/mm"
223
-#define MSG_E4_STEPS                        _UxGT("挤出机5步数/mm") //"E5steps/mm"
224
-#define MSG_E5_STEPS                        _UxGT("挤出机6步数/mm") //"E6steps/mm"
225
-#define MSG_TEMPERATURE                     _UxGT("温度")  //"Temperature"
226
-#define MSG_MOTION                          _UxGT("运动")  //"Motion"
227
-#define MSG_FILAMENT                        _UxGT("丝料测容")  //"Filament" menu_advanced_filament
228
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("测容积mm³")  //"E in mm3" volumetric_enabled
229
-#define MSG_FILAMENT_DIAM                   _UxGT("丝料直径")  //"Fil. Dia."
230
-#define MSG_FILAMENT_UNLOAD                 _UxGT("卸载 mm") // "Unload mm"
231
-#define MSG_FILAMENT_LOAD                   _UxGT("装载 mm")   // "Load mm"
232
-#define MSG_ADVANCE_K                       _UxGT("Advance K") // "Advance K"
233
-#define MSG_CONTRAST                        _UxGT("LCD对比度")  //"LCD contrast"
234
-#define MSG_STORE_EEPROM                    _UxGT("保存设置")  //"Store memory"
235
-#define MSG_LOAD_EEPROM                     _UxGT("装载设置")  //"Load memory"
236
-#define MSG_RESTORE_FAILSAFE                _UxGT("恢复安全值")  //"Restore failsafe"
237
-#define MSG_INIT_EEPROM                     _UxGT("初始化设置") // "Initialize EEPROM"
238
-#define MSG_REFRESH                         _UxGT("刷新")  //"Refresh"
239
-#define MSG_WATCH                           _UxGT("信息屏")  //"Info screen"
240
-#define MSG_PREPARE                         _UxGT("准备")  //"Prepare"
241
-#define MSG_TUNE                            _UxGT("调整")  //"Tune"
242
-#define MSG_PAUSE_PRINT                     _UxGT("暂停打印")  //"Pause print"
243
-#define MSG_RESUME_PRINT                    _UxGT("恢复打印")  //"Resume print"
244
-#define MSG_STOP_PRINT                      _UxGT("停止打印")  //"Stop print"
245
-#define MSG_MEDIA_MENU                      _UxGT("从存储卡上打印")  //"Print from SD"
246
-#define MSG_NO_MEDIA                        _UxGT("无存储卡")  //"No SD card"
247
-#define MSG_DWELL                           _UxGT("休眠中 ...")  //"Sleep..."
248
-#define MSG_USERWAIT                        _UxGT("点击继续 ...")  //"Click to resume..."
249
-#define MSG_PRINT_PAUSED                    _UxGT("暫停打印") // "Print paused"
250
-#define MSG_PRINT_ABORTED                   _UxGT("已取消打印")  //"Print aborted"
251
-#define MSG_NO_MOVE                         _UxGT("无移动")  //"No move."
252
-#define MSG_KILLED                          _UxGT("已杀掉")  //"KILLED. "
253
-#define MSG_STOPPED                         _UxGT("已停止")  //"STOPPED. "
254
-#define MSG_CONTROL_RETRACT                 _UxGT("回抽长度mm")  //"Retract mm" retract_length, retract length (positive mm)
255
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("换手回抽长度mm")  //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
256
-#define MSG_CONTROL_RETRACTF                _UxGT("回抽速率mm/s")  //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
257
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Hop mm")  //"Hop mm" retract_zraise, retract Z-lift
258
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("回抽恢复长度mm")  //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
259
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("换手回抽恢复长度mm")  //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
260
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("回抽恢复后进料速率mm/s")  //"UnRet  V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
261
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("S UnRet V") // "S UnRet V"
262
-#define MSG_AUTORETRACT                     _UxGT("自动抽回")  //"AutoRetr." autoretract_enabled,
263
-#define MSG_FILAMENTCHANGE                  _UxGT("更换丝料")  //"Change filament"
264
-#define MSG_FILAMENTLOAD                    _UxGT("装载丝料") // "Load filament"
265
-#define MSG_FILAMENTUNLOAD                  _UxGT("卸载丝料") // "Unload filament"
266
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("卸载全部") // "Unload All"
267
-#define MSG_INIT_MEDIA                      _UxGT("初始化存储卡")  //"Init. SD card"
268
-#define MSG_CHANGE_MEDIA                    _UxGT("更换存储卡")  //"Change SD card"
269
-#define MSG_ZPROBE_OUT                      _UxGT("Z探针在热床之外")  //"Z probe out. bed" Z probe is not within the physical limits
270
-#define MSG_SKEW_FACTOR                     _UxGT("偏斜因数") // "Skew Factor"
271
-#define MSG_BLTOUCH                         _UxGT("BLTouch")     // "BLTouch"
272
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch 自检") // "BLTouch Self-Test"
273
-#define MSG_BLTOUCH_RESET                   _UxGT("重置BLTouch")  // "Reset BLTouch"
274
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("部署BLTouch") // "Deploy BLTouch"
275
-#define MSG_BLTOUCH_STOW                    _UxGT("装载BLTouch")   // "Stow BLTouch"
276
-#define MSG_HOME_FIRST                      _UxGT("归位 %s%s%s 先")  //"Home ... first"
277
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z偏移")  //"Z Offset"
278
-#define MSG_BABYSTEP_X                      _UxGT("微量调整X轴")  //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
279
-#define MSG_BABYSTEP_Y                      _UxGT("微量调整Y轴")  //"Babystep Y"
280
-#define MSG_BABYSTEP_Z                      _UxGT("微量调整Z轴")  //"Babystep Z"
281
-#define MSG_ENDSTOP_ABORT                   _UxGT("挡块终止")  //"Endstop abort"
282
-#define MSG_HEATING_FAILED_LCD              _UxGT("加热失败")  //"Heating failed"
283
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("错误:REDUNDANT TEMP")  //"Err: REDUNDANT TEMP"
284
-#define MSG_THERMAL_RUNAWAY                 _UxGT("温控失控")  //"THERMAL RUNAWAY"
285
-#define MSG_ERR_MAXTEMP                     _UxGT("错误:最高温度")  //"Err: MAXTEMP"
286
-#define MSG_ERR_MINTEMP                     _UxGT("错误:最低温度")  //"Err: MINTEMP"
287
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("错误:最高热床温度")  //"Err: MAXTEMP BED"
288
-#define MSG_ERR_MINTEMP_BED                 _UxGT("错误:最低热床温度")  //"Err: MINTEMP BED"
289
-#define MSG_ERR_Z_HOMING                    _UxGT("归位 XY 先")   // "Home XY First"
290
-#define MSG_HALTED                          _UxGT("打印停机")  //"PRINTER HALTED"
291
-#define MSG_PLEASE_RESET                    _UxGT("请重置")  //"Please reset"
292
-#define MSG_SHORT_DAY                       _UxGT("天")  //"d" // One character only
293
-#define MSG_SHORT_HOUR                      _UxGT("时")  //"h" // One character only
294
-#define MSG_SHORT_MINUTE                    _UxGT("分")  //"m" // One character only
295
-#define MSG_HEATING                         _UxGT("加热中 ...")  //"Heating..."
296
-#define MSG_BED_HEATING                     _UxGT("加热热床中 ...")  //"Bed Heating..."
297
-#define MSG_DELTA_CALIBRATE                 _UxGT("⊿校准")  //"Delta Calibration"
298
-#define MSG_DELTA_CALIBRATE_X               _UxGT("⊿校准X")  //"Calibrate X"
299
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("⊿校准Y")  //"Calibrate Y"
300
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("⊿校准Z")  //"Calibrate Z"
301
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("⊿校准中心")  //"Calibrate Center"
302
-#define MSG_DELTA_SETTINGS                  _UxGT("⊿设置") // "Delta Settings"
303
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("⊿自动校准") // "Auto Calibration"
304
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("设置⊿高度") // "Set Delta Height"
305
-#define MSG_DELTA_DIAG_ROD                  _UxGT("⊿斜柱") // "Diag Rod"
306
-#define MSG_DELTA_HEIGHT                    _UxGT("⊿高度") // "Height"
307
-#define MSG_DELTA_RADIUS                    _UxGT("⊿半径") // "Radius"
308
-#define MSG_INFO_MENU                       _UxGT("关于打印机")  //"About Printer"
309
-#define MSG_INFO_PRINTER_MENU               _UxGT("打印机信息")  //"Printer Info"
310
-#define MSG_3POINT_LEVELING                 _UxGT("三点调平") // "3-Point Leveling"
311
-#define MSG_LINEAR_LEVELING                 _UxGT("线性调平") // "Linear Leveling"
312
-#define MSG_BILINEAR_LEVELING               _UxGT("双线性调平") // "Bilinear Leveling"
313
-#define MSG_UBL_LEVELING                    _UxGT("统一热床调平(UBL)") // "Unified Bed Leveling"
314
-#define MSG_MESH_LEVELING                   _UxGT("网格调平") // "Mesh Leveling"
315
-#define MSG_INFO_STATS_MENU                 _UxGT("打印机统计")  //"Printer Stats"
316
-#define MSG_INFO_BOARD_MENU                 _UxGT("主板信息")  //"Board Info"
317
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("温度计")  //"Thermistors"
318
-#define MSG_INFO_EXTRUDERS                  _UxGT("挤出机")  //"Extruders"
319
-#define MSG_INFO_BAUDRATE                   _UxGT("波特率")  //"Baud"
320
-#define MSG_INFO_PROTOCOL                   _UxGT("协议")  //"Protocol"
321
-#define MSG_CASE_LIGHT                      _UxGT("外壳灯") // "Case light"
322
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("灯亮度") // "Light BRIGHTNESS"
193
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("移动 ...");     // "Moving...")
194
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("释放 XY");     // "Free XY")
195
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("移动X");     //"Move X"
196
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("移动Y");     //"Move Y"
197
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("移动Z");     //"Move Z"
198
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("挤出机");     //"Extruder"
199
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("挤出机 ") LCD_STR_E0;     //"Extruder"
200
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("挤出机 ") LCD_STR_E1;     //"Extruder"
201
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("挤出机 ") LCD_STR_E2;     //"Extruder"
202
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("挤出机 ") LCD_STR_E3;     //"Extruder"
203
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("挤出机 ") LCD_STR_E4;     //"Extruder"
204
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("挤出机 ") LCD_STR_E5;     //"Extruder"
205
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("移动 %s mm");     //"Move 0.025mm"
206
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("移动 0.1 mm");     //"Move 0.1mm"
207
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("移动 1 mm");     //"Move 1mm"
208
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("移动 10 mm");     //"Move 10mm"
209
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("速率");     //"Speed"
210
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("热床Z");     //"Bed Z"
211
+  PROGMEM Language_Str MSG_NOZZLE                          = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴");     //"Nozzle" 噴嘴
212
+  PROGMEM Language_Str MSG_NOZZLE_0                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N0;     //"Nozzle" 噴嘴
213
+  PROGMEM Language_Str MSG_NOZZLE_1                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N1;     //"Nozzle" 噴嘴
214
+  PROGMEM Language_Str MSG_NOZZLE_2                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N2;     //"Nozzle" 噴嘴
215
+  PROGMEM Language_Str MSG_NOZZLE_3                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N3;     //"Nozzle" 噴嘴
216
+  PROGMEM Language_Str MSG_NOZZLE_4                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N4;     //"Nozzle" 噴嘴
217
+  PROGMEM Language_Str MSG_NOZZLE_5                        = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N5;     //"Nozzle" 噴嘴
218
+  PROGMEM Language_Str MSG_BED                             = " " LCD_STR_THERMOMETER _UxGT(" 热床");     //"Bed"
219
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("风扇速率");     //"Fan speed"
220
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("风扇速率 1");     //"Fan speed"
221
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("风扇速率 2");     //"Fan speed"
222
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("风扇速率 3");     //"Fan speed"
223
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("额外风扇速率");     // "Extra fan speed"
224
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("额外风扇速率 1");     // "Extra fan speed"
225
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("额外风扇速率 2");     // "Extra fan speed"
226
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("额外风扇速率 3");     // "Extra fan speed"
227
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("挤出速率");     //"Flow"
228
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("挤出速率 ") LCD_STR_N0;     //"Flow"
229
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("挤出速率 ") LCD_STR_N1;     //"Flow"
230
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("挤出速率 ") LCD_STR_N2;     //"Flow"
231
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("挤出速率 ") LCD_STR_N3;     //"Flow"
232
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("挤出速率 ") LCD_STR_N4;     //"Flow"
233
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("挤出速率 ") LCD_STR_N5;     //"Flow"
234
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("控制");     //"Control"
235
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" 最小");     //" " LCD_STR_THERMOMETER " Min"
236
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" 最大");     //" " LCD_STR_THERMOMETER " Max"
237
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" 因数");     //" " LCD_STR_THERMOMETER " Fact"
238
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("自动控温");     //"Autotemp"
239
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("开");     //"On"
240
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("关");     //"Off"
241
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");     //"PID-P"
242
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
243
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
244
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
245
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
246
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
247
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
248
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");     //"PID-I"
249
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
250
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
251
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
252
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
253
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
254
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
255
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");     //"PID-D"
256
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
257
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
258
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
259
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
260
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
261
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
262
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");     //"PID-C"
263
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
264
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
265
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
266
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
267
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
268
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
269
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("选择");     //"Select"
270
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("选择 ") LCD_STR_E0;
271
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("选择 ") LCD_STR_E1;
272
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("选择 ") LCD_STR_E2;
273
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("选择 ") LCD_STR_E3;
274
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("选择 ") LCD_STR_E4;
275
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("选择 ") LCD_STR_E5;
276
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("加速度");     //"Accel" acceleration
277
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("抖动速率");     // "Jerk"
278
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("轴抖动速率") LCD_STR_A;     //"Va-jerk"
279
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("轴抖动速率") LCD_STR_B;     //"Vb-jerk"
280
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("轴抖动速率") LCD_STR_C;     //"Vc-jerk"
281
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("挤出机抖动速率");     //"Ve-jerk"
282
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("速度");     // "Velocity"
283
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("最大进料速率") LCD_STR_A;     //"Vmax " max_feedrate_mm_s
284
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("最大进料速率") LCD_STR_B;     //"Vmax " max_feedrate_mm_s
285
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("最大进料速率") LCD_STR_C;     //"Vmax " max_feedrate_mm_s
286
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("最大进料速率") LCD_STR_E;     //"Vmax " max_feedrate_mm_s
287
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("最大进料速率 ") LCD_STR_E0;     //"Vmax " max_feedrate_mm_s
288
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("最大进料速率 ") LCD_STR_E1;     //"Vmax " max_feedrate_mm_s
289
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("最大进料速率 ") LCD_STR_E2;     //"Vmax " max_feedrate_mm_s
290
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("最大进料速率 ") LCD_STR_E3;     //"Vmax " max_feedrate_mm_s
291
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("最大进料速率 ") LCD_STR_E4;     //"Vmax " max_feedrate_mm_s
292
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("最大进料速率 ") LCD_STR_E5;     //"Vmax " max_feedrate_mm_s
293
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("最小进料速率");     //"Vmin"  min_feedrate_mm_s
294
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("最小移动速率");     //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
295
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("加速度");     // "Acceleration"
296
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("最大打印加速度") LCD_STR_A;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
297
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("最大打印加速度") LCD_STR_B;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
298
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("最大打印加速度") LCD_STR_C;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
299
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("最大打印加速度") LCD_STR_E;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
300
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("最大打印加速度 ") LCD_STR_E0;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
301
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("最大打印加速度 ") LCD_STR_E1;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
302
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("最大打印加速度 ") LCD_STR_E2;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
303
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("最大打印加速度 ") LCD_STR_E3;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
304
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("最大打印加速度 ") LCD_STR_E4;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
305
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("最大打印加速度 ") LCD_STR_E5;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
306
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("收进加速度");     //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
307
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("非打印移动加速度");     //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
308
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("轴步数/mm");     //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
309
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("轴步数/mm");     //"Asteps/mm"
310
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("轴步数/mm");     //"Bsteps/mm"
311
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("轴步数/mm");     //"Csteps/mm"
312
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("挤出机步数/mm");     //"Esteps/mm"
313
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("挤出机") LCD_STR_N0 _UxGT("步数/mm");
314
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("挤出机") LCD_STR_N1 _UxGT("步数/mm");
315
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("挤出机") LCD_STR_N2 _UxGT("步数/mm");
316
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("挤出机") LCD_STR_N3 _UxGT("步数/mm");
317
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("挤出机") LCD_STR_N4 _UxGT("步数/mm");
318
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("挤出机") LCD_STR_N5 _UxGT("步数/mm");
319
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("温度");     //"Temperature"
320
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("运动");     //"Motion"
321
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("丝料测容");     //"Filament" menu_advanced_filament
322
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("测容积mm³");     //"E in mm3" volumetric_enabled
323
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("丝料直径");     //"Fil. Dia."
324
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("丝料直径 ") LCD_STR_E0;
325
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("丝料直径 ") LCD_STR_E1;
326
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("丝料直径 ") LCD_STR_E2;
327
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("丝料直径 ") LCD_STR_E3;
328
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("丝料直径 ") LCD_STR_E4;
329
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("丝料直径 ") LCD_STR_E5;
330
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("卸载 mm");     // "Unload mm"
331
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("装载 mm");     // "Load mm"
332
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD对比度");     //"LCD contrast"
333
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("保存设置");     //"Store memory"
334
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("装载设置");     //"Load memory"
335
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("恢复安全值");     //"Restore failsafe"
336
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("初始化设置");     // "Initialize EEPROM"
337
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("刷新");     //"Refresh"
338
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("信息屏");     //"Info screen"
339
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("准备");     //"Prepare"
340
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("调整");     //"Tune"
341
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("暂停打印");     //"Pause print"
342
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("恢复打印");     //"Resume print"
343
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("停止打印");     //"Stop print"
344
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("从存储卡上打印");     //"Print from SD"
345
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("无存储卡");     //"No SD card"
346
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("休眠中 ...");     //"Sleep..."
347
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("点击继续 ...");     //"Click to resume..."
348
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("暫停打印");     // "Print paused"
349
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("已取消打印");     //"Print aborted"
350
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("无移动");     //"No move."
351
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("已杀掉");     //"KILLED. "
352
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("已停止");     //"STOPPED. "
353
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("回抽长度mm");     //"Retract mm" retract_length, retract length (positive mm)
354
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("换手回抽长度mm");     //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
355
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("回抽速率mm/s");     //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
356
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Hop mm");     //"Hop mm" retract_zraise, retract Z-lift
357
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("回抽恢复长度mm");     //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
358
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("换手回抽恢复长度mm");     //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
359
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("回抽恢复后进料速率mm/s");     //"UnRet  V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
360
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("S UnRet V");     // "S UnRet V"
361
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("自动抽回");     //"AutoRetr." autoretract_enabled,
362
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("更换丝料");     //"Change filament"
363
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("更换丝料 ") LCD_STR_E0;     //"Change filament"
364
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("更换丝料 ") LCD_STR_E1;     //"Change filament"
365
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("更换丝料 ") LCD_STR_E2;     //"Change filament"
366
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("更换丝料 ") LCD_STR_E3;     //"Change filament"
367
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("更换丝料 ") LCD_STR_E4;     //"Change filament"
368
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("更换丝料 ") LCD_STR_E5;     //"Change filament"
369
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("装载丝料 ") LCD_STR_E0;     // "Load filament"
370
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("装载丝料 ") LCD_STR_E1;     // "Load filament"
371
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("装载丝料 ") LCD_STR_E2;     // "Load filament"
372
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("装载丝料 ") LCD_STR_E3;     // "Load filament"
373
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("装载丝料 ") LCD_STR_E4;     // "Load filament"
374
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("装载丝料 ") LCD_STR_E5;     // "Load filament"
375
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("卸载丝料 ") LCD_STR_E0;     // "Unload filament"
376
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("卸载丝料 ") LCD_STR_E1;     // "Unload filament"
377
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("卸载丝料 ") LCD_STR_E2;     // "Unload filament"
378
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("卸载丝料 ") LCD_STR_E3;     // "Unload filament"
379
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("卸载丝料 ") LCD_STR_E4;     // "Unload filament"
380
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("卸载丝料 ") LCD_STR_E5;     // "Unload filament"
381
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("卸载全部");     // "Unload All"
382
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("初始化存储卡");     //"Init. SD card"
383
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("更换存储卡");     //"Change SD card"
384
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z探针在热床之外");     //"Z probe out. bed" Z probe is not within the physical limits
385
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("偏斜因数");     // "Skew Factor"
386
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");     // "BLTouch"
387
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch 自检");     // "BLTouch Self-Test"
388
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("重置BLTouch");     // "Reset BLTouch"
389
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("部署BLTouch");     // "Deploy BLTouch"
390
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("装载BLTouch");     // "Stow BLTouch"
391
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("归位 %s%s%s 先");     //"Home ... first"
392
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Z偏移");     //"Z Offset"
393
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("微量调整X轴");     //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
394
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("微量调整Y轴");     //"Babystep Y"
395
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("微量调整Z轴");     //"Babystep Z"
396
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("挡块终止");     //"Endstop abort"
397
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("加热失败");     //"Heating failed"
398
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("错误:REDUNDANT TEMP");     //"Err: REDUNDANT TEMP"
399
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("温控失控");     //"THERMAL RUNAWAY"
400
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("错误:最高温度");     //"Err: MAXTEMP"
401
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("错误:最低温度");     //"Err: MINTEMP"
402
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("错误:最高热床温度");     //"Err: MAXTEMP BED"
403
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("错误:最低热床温度");     //"Err: MINTEMP BED"
404
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("归位 XY 先");     // "Home XY First"
405
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("打印停机");     //"PRINTER HALTED"
406
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("请重置");     //"Please reset"
407
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("天");     //"d" // One character only
408
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("时");     //"h" // One character only
409
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("分");     //"m" // One character only
410
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("加热中 ...");     //"Heating..."
411
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("加热热床中 ...");     //"Bed Heating..."
412
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("⊿校准");     //"Delta Calibration"
413
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("⊿校准X");     //"Calibrate X"
414
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("⊿校准Y");     //"Calibrate Y"
415
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("⊿校准Z");     //"Calibrate Z"
416
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("⊿校准中心");     //"Calibrate Center"
417
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("⊿设置");     // "Delta Settings"
418
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("⊿自动校准");     // "Auto Calibration"
419
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("设置⊿高度");     // "Set Delta Height"
420
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("⊿斜柱");     // "Diag Rod"
421
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("⊿高度");     // "Height"
422
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("⊿半径");     // "Radius"
423
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("关于打印机");     //"About Printer"
424
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("打印机信息");     //"Printer Info"
425
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("三点调平");     // "3-Point Leveling"
426
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("线性调平");     // "Linear Leveling"
427
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("双线性调平");     // "Bilinear Leveling"
428
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("统一热床调平(UBL)");     // "Unified Bed Leveling"
429
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("网格调平");     // "Mesh Leveling"
430
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("打印机统计");     //"Printer Stats"
431
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("主板信息");     //"Board Info"
432
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("温度计");     //"Thermistors"
433
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("挤出机");     //"Extruders"
434
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("波特率");     //"Baud"
435
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("协议");     //"Protocol"
436
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("外壳灯");     // "Case light"
437
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("灯亮度");     // "Light BRIGHTNESS"
323 438
 
324
-#define MSG_EXPECTED_PRINTER                _UxGT("打印机不正确") // "The printer is incorrect"
439
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("打印机不正确");     // "The printer is incorrect"
325 440
 
326
-#if LCD_WIDTH >= 20
327
-  #define MSG_INFO_PRINT_COUNT              _UxGT("打印计数")  //"Print Count"
328
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("完成了")  //"Completed"
329
-  #define MSG_INFO_PRINT_TIME               _UxGT("总打印时间")  //"Total print time"
330
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("最长工作时间")  //"Longest job time"
331
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("总计挤出")  //"Extruded total"
332
-#else
333
-  #define MSG_INFO_PRINT_COUNT              _UxGT("打印数")  //"Prints"
334
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("完成")  //"Completed"
335
-  #define MSG_INFO_PRINT_TIME               _UxGT("总共")  //"Total"
336
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("最长")  //"Longest"
337
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("已挤出")  //"Extruded"
338
-#endif
441
+  #if LCD_WIDTH >= 20
442
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("打印计数");     //"Print Count"
443
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("完成了");     //"Completed"
444
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("总打印时间");     //"Total print time"
445
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("最长工作时间");     //"Longest job time"
446
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("总计挤出");     //"Extruded total"
447
+  #else
448
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("打印数");     //"Prints"
449
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("完成");     //"Completed"
450
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("总共");     //"Total"
451
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("最长");     //"Longest"
452
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("已挤出");     //"Extruded"
453
+  #endif
339 454
 
340
-#define MSG_INFO_MIN_TEMP                   _UxGT("最低温度")  //"Min Temp"
341
-#define MSG_INFO_MAX_TEMP                   _UxGT("最高温度")  //"Max Temp"
342
-#define MSG_INFO_PSU                        _UxGT("电源供应")  //"Power Supply"
343
-#define MSG_DRIVE_STRENGTH                  _UxGT("驱动力度") // "Drive Strength"
344
-#define MSG_DAC_PERCENT                     _UxGT("驱动 %") // "Driver %"
345
-#define MSG_DAC_EEPROM_WRITE                _UxGT("保存驱动设置") // "DAC EEPROM Write"
346
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("打印已暂停") // "PRINT PAUSED"
347
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("装载丝料") // "LOAD FILAMENT"
348
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("卸载丝料") // "UNLOAD FILAMENT"
349
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("恢复选项:") // "RESUME OPTIONS:"
350
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("清除更多") // "Purge more"
351
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("恢复打印")  //"Resume print"
352
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  喷嘴: ") // "  Nozzle: "
353
-#define MSG_ERR_HOMING_FAILED               _UxGT("归原位失败") // "Homing failed"
354
-#define MSG_ERR_PROBING_FAILED              _UxGT("探针探测失败") // "Probing failed"
355
-#define MSG_M600_TOO_COLD                   _UxGT("M600: 太凉") // "M600: Too cold"
455
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("最低温度");     //"Min Temp"
456
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("最高温度");     //"Max Temp"
457
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("电源供应");     //"Power Supply"
458
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("驱动力度");     // "Drive Strength"
459
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("驱动 %");     // "Driver %"
460
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("保存驱动设置");     // "DAC EEPROM Write"
461
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("打印已暂停");     // "PRINT PAUSED"
462
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("装载丝料");     // "LOAD FILAMENT"
463
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("卸载丝料");     // "UNLOAD FILAMENT"
464
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("恢复选项:");     // "RESUME OPTIONS:"
465
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("清除更多");     // "Purge more"
466
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("恢复打印");     //"Resume print"
467
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  喷嘴: ");     // "  Nozzle: "
468
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("归原位失败");     // "Homing failed"
469
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("探针探测失败");     // "Probing failed"
470
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: 太凉");     // "M600: Too cold"
356 471
 
357
-#if LCD_HEIGHT >= 4
358
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("等待开始")  //"Wait for start"
359
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("丝料")  //"of the filament"
360
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("变更")  //"change"
361
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("等待")  //"Wait for"
362
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("卸下丝料")  //"filament unload"
363
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("插入丝料")  //"Insert filament"
364
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("并按键")  //"and press button"
365
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("来继续 ...")  //"to continue..."
366
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("按下按钮来") // "Press button to"
367
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("加热喷嘴.") // "heat nozzle."
368
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("加热喷嘴") // "Heating nozzle"
369
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("请等待 ...") // "Please wait..."
370
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("等待")  //"Wait for"
371
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("进料")  //"filament load"
372
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("等待") // "Wait for"
373
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("丝料清除") // "filament purge"
374
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("等待打印")  //"Wait for print"
375
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("恢复")  //"to resume"
376
-#else // LCD_HEIGHT < 4
377
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("请等待 ...")  //"Please wait..."
378
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("退出中 ...")  //"Ejecting..."
379
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("插入并单击")  //"Insert and Click"
380
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("加热中 ...") // "Heating..."
381
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("装载中 ...")  //"Loading..."
382
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("清除中 ...") // "Purging..."
383
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("恢复中 ...")  //"Resuming..."
384
-#endif // LCD_HEIGHT < 4
472
+  #if LCD_HEIGHT >= 4
473
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更"));     // "Wait for start of the filament change"
474
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("等待", "卸下丝料"));     // "Wait for filament unload"
475
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("插入丝料", "并按键", "来继续 ..."));     // "Insert filament and press button to continue..."
476
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴."));     // "Press button to heat nozzle."
477
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ..."));     // "Heating nozzle Please wait..."
478
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("等待", "进料"));     // "Wait for filament load"
479
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_2_LINE("等待", "丝料清除"));     // "Wait for filament purge"
480
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("等待打印", "恢复"));     // "Wait for print to resume"
481
+  #else
482
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("请等待 ..."));     //"Please wait..."
483
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("退出中 ..."));     //"Ejecting..."
484
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("插入并单击"));     //"Insert and Click"
485
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("加热中 ..."));     // "Heating..."
486
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("装载中 ..."));     //"Loading..."
487
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("清除中 ..."));     // "Purging..."
488
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("恢复中 ..."));     //"Resuming..."
489
+  #endif
490
+}

+ 451
- 344
Marlin/src/lcd/language/language_zh_TW.h Zobrazit soubor

@@ -28,357 +28,464 @@
28 28
  * See also http://marlinfw.org/docs/development/lcd_language.html
29 29
  *
30 30
  */
31
+namespace Language_zh_TW {
32
+  using namespace Language_en;  // Inherit undefined strings from English
31 33
 
32
-#define CHARSIZE 3
34
+  constexpr uint8_t    CHARSIZE                            = 3;
35
+  PROGMEM Language_Str LANGUAGE                            = _UxGT("Traditional Chinese");
33 36
 
34
-#define WELCOME_MSG                         MACHINE_NAME _UxGT("已就緒.")  //" ready."
35
-#define MSG_BACK                            _UxGT("返回")         // ”Back“
36
-#define MSG_MEDIA_INSERTED                  _UxGT("記憶卡已插入")  //"Card inserted"
37
-#define MSG_MEDIA_REMOVED                   _UxGT("記憶卡被拔出")  //"Card removed"
38
-#define MSG_LCD_ENDSTOPS                    _UxGT("擋塊")  //"Endstops" // Max length 8 characters
39
-#define MSG_MAIN                            _UxGT("主選單")  //"Main"
40
-#define MSG_AUTOSTART                       _UxGT("自動開始")  //"Autostart"
41
-#define MSG_DISABLE_STEPPERS                _UxGT("關閉步進馬達")  //"Disable steppers"
42
-#define MSG_DEBUG_MENU                      _UxGT("除錯選單")    // "Debug Menu"
43
-#define MSG_PROGRESS_BAR_TEST               _UxGT("進度條測試")  // "Progress Bar Test"
44
-#define MSG_AUTO_HOME                       _UxGT("自動回原點")  //"Auto home"
45
-#define MSG_AUTO_HOME_X                     _UxGT("回X原點")  //"Home X"
46
-#define MSG_AUTO_HOME_Y                     _UxGT("回Y原點")  //"Home Y"
47
-#define MSG_AUTO_HOME_Z                     _UxGT("回Z原點")  //"Home Z"
48
-#define MSG_LEVEL_BED_HOMING                _UxGT("平台調平XYZ歸原點")  //"Homing XYZ"
49
-#define MSG_LEVEL_BED_WAITING               _UxGT("單擊開始熱床調平")  //"Click to Begin"
50
-#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("下個熱床調平點")  //"Next Point"
51
-#define MSG_LEVEL_BED_DONE                  _UxGT("完成熱床調平")  //"Leveling Done!"
52
-#define MSG_Z_FADE_HEIGHT                   _UxGT("淡出高度")     // "Fade Height"
53
-#define MSG_SET_HOME_OFFSETS                _UxGT("設置原點偏移")  //"Set home offsets"
54
-#define MSG_HOME_OFFSETS_APPLIED            _UxGT("偏移已啟用")  //"Offsets applied"
55
-#define MSG_SET_ORIGIN                      _UxGT("設置原點")  //"Set origin"
56
-#define MSG_PREHEAT_1                       _UxGT("預熱" PREHEAT_1_LABEL)  //"Preheat PREHEAT_1_LABEL"
57
-#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")  //MSG_PREHEAT_1 " "
58
-#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" 全部")  //MSG_PREHEAT_1 " All"
59
-#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" 熱床")  //MSG_PREHEAT_1 " Bed"
60
-#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" 設置")  //MSG_PREHEAT_1 " conf"
61
-#define MSG_PREHEAT_2                       _UxGT("預熱" PREHEAT_2_LABEL)  //"Preheat PREHEAT_2_LABEL"
62
-#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")  //MSG_PREHEAT_2 " "
63
-#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" 全部")  //MSG_PREHEAT_2 " All"
64
-#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" 熱床")  //MSG_PREHEAT_2 " Bed"
65
-#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" 設置")  //MSG_PREHEAT_2 " conf"
66
-#define MSG_COOLDOWN                        _UxGT("降溫")  //"Cooldown"
67
-#define MSG_SWITCH_PS_ON                    _UxGT("電源打開")  //"Switch power on"
68
-#define MSG_SWITCH_PS_OFF                   _UxGT("電源關閉")  //"Switch power off"
69
-#define MSG_EXTRUDE                         _UxGT("擠出")  //"Extrude"
70
-#define MSG_RETRACT                         _UxGT("回縮")  //"Retract"
71
-#define MSG_MOVE_AXIS                       _UxGT("移動軸")  //"Move axis"
72
-#define MSG_BED_LEVELING                    _UxGT("調平熱床")  //"Bed leveling"
73
-#define MSG_LEVEL_BED                       _UxGT("調平熱床")  //"Level bed"
74
-#define MSG_LEVEL_CORNERS                   _UxGT("調平邊角") // "Level corners"
37
+  PROGMEM Language_Str WELCOME_MSG                         = MACHINE_NAME _UxGT("已就緒.");     //" ready."
38
+  PROGMEM Language_Str MSG_BACK                            = _UxGT("返回");     // ”Back“
39
+  PROGMEM Language_Str MSG_MEDIA_INSERTED                  = _UxGT("記憶卡已插入");     //"Card inserted"
40
+  PROGMEM Language_Str MSG_MEDIA_REMOVED                   = _UxGT("記憶卡被拔出");     //"Card removed"
41
+  PROGMEM Language_Str MSG_LCD_ENDSTOPS                    = _UxGT("擋塊");     //"Endstops" // Max length 8 characters
42
+  PROGMEM Language_Str MSG_MAIN                            = _UxGT("主選單");     //"Main"
43
+  PROGMEM Language_Str MSG_AUTOSTART                       = _UxGT("自動開始");     //"Autostart"
44
+  PROGMEM Language_Str MSG_DISABLE_STEPPERS                = _UxGT("關閉步進馬達");     //"Disable steppers"
45
+  PROGMEM Language_Str MSG_DEBUG_MENU                      = _UxGT("除錯選單");     // "Debug Menu"
46
+  PROGMEM Language_Str MSG_PROGRESS_BAR_TEST               = _UxGT("進度條測試");     // "Progress Bar Test"
47
+  PROGMEM Language_Str MSG_AUTO_HOME                       = _UxGT("自動回原點");     //"Auto home"
48
+  PROGMEM Language_Str MSG_AUTO_HOME_X                     = _UxGT("回X原點");     //"Home X"
49
+  PROGMEM Language_Str MSG_AUTO_HOME_Y                     = _UxGT("回Y原點");     //"Home Y"
50
+  PROGMEM Language_Str MSG_AUTO_HOME_Z                     = _UxGT("回Z原點");     //"Home Z"
51
+  PROGMEM Language_Str MSG_LEVEL_BED_HOMING                = _UxGT("平台調平XYZ歸原點");     //"Homing XYZ"
52
+  PROGMEM Language_Str MSG_LEVEL_BED_WAITING               = _UxGT("單擊開始熱床調平");     //"Click to Begin"
53
+  PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT            = _UxGT("下個熱床調平點");     //"Next Point"
54
+  PROGMEM Language_Str MSG_LEVEL_BED_DONE                  = _UxGT("完成熱床調平");     //"Leveling Done!"
55
+  PROGMEM Language_Str MSG_Z_FADE_HEIGHT                   = _UxGT("淡出高度");     // "Fade Height"
56
+  PROGMEM Language_Str MSG_SET_HOME_OFFSETS                = _UxGT("設置原點偏移");     //"Set home offsets"
57
+  PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED            = _UxGT("偏移已啟用");     //"Offsets applied"
58
+  PROGMEM Language_Str MSG_SET_ORIGIN                      = _UxGT("設置原點");     //"Set origin"
59
+  PROGMEM Language_Str MSG_PREHEAT_1                       = _UxGT("預熱 ") PREHEAT_1_LABEL;     //"Preheat PREHEAT_1_LABEL"
60
+  PROGMEM Language_Str MSG_PREHEAT_1_H0                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N0;     //"Preheat PREHEAT_1_LABEL"
61
+  PROGMEM Language_Str MSG_PREHEAT_1_H1                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N1;     //"Preheat PREHEAT_1_LABEL"
62
+  PROGMEM Language_Str MSG_PREHEAT_1_H2                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N2;     //"Preheat PREHEAT_1_LABEL"
63
+  PROGMEM Language_Str MSG_PREHEAT_1_H3                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N3;     //"Preheat PREHEAT_1_LABEL"
64
+  PROGMEM Language_Str MSG_PREHEAT_1_H4                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N4;     //"Preheat PREHEAT_1_LABEL"
65
+  PROGMEM Language_Str MSG_PREHEAT_1_H5                    = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N5;     //"Preheat PREHEAT_1_LABEL"
66
+  PROGMEM Language_Str MSG_PREHEAT_1_END                   = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴");     //MSG_PREHEAT_1 " "
67
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E0                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N0;     //MSG_PREHEAT_1 " "
68
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E1                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N1;     //MSG_PREHEAT_1 " "
69
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E2                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N2;     //MSG_PREHEAT_1 " "
70
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E3                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N3;     //MSG_PREHEAT_1 " "
71
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E4                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N4;     //MSG_PREHEAT_1 " "
72
+  PROGMEM Language_Str MSG_PREHEAT_1_END_E5                = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N5;     //MSG_PREHEAT_1 " "
73
+  PROGMEM Language_Str MSG_PREHEAT_1_ALL                   = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部");     //MSG_PREHEAT_1 " All"
74
+  PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY               = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床");     //MSG_PREHEAT_1 " Bed"
75
+  PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS              = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置");     //MSG_PREHEAT_1 " conf"
76
+  PROGMEM Language_Str MSG_PREHEAT_2                       = _UxGT("預熱 ") PREHEAT_2_LABEL;     //"Preheat PREHEAT_2_LABEL"
77
+  PROGMEM Language_Str MSG_PREHEAT_2_H0                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N0;     //"Preheat PREHEAT_2_LABEL"
78
+  PROGMEM Language_Str MSG_PREHEAT_2_H1                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N1;     //"Preheat PREHEAT_2_LABEL"
79
+  PROGMEM Language_Str MSG_PREHEAT_2_H2                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N2;     //"Preheat PREHEAT_2_LABEL"
80
+  PROGMEM Language_Str MSG_PREHEAT_2_H3                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N3;     //"Preheat PREHEAT_2_LABEL"
81
+  PROGMEM Language_Str MSG_PREHEAT_2_H4                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N4;     //"Preheat PREHEAT_2_LABEL"
82
+  PROGMEM Language_Str MSG_PREHEAT_2_H5                    = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N5;     //"Preheat PREHEAT_2_LABEL"
83
+  PROGMEM Language_Str MSG_PREHEAT_2_END                   = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴");     //MSG_PREHEAT_2 " "
84
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E0                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N0;     //MSG_PREHEAT_2 " "
85
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E1                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N1;     //MSG_PREHEAT_2 " "
86
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E2                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N2;     //MSG_PREHEAT_2 " "
87
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E3                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N3;     //MSG_PREHEAT_2 " "
88
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E4                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N4;     //MSG_PREHEAT_2 " "
89
+  PROGMEM Language_Str MSG_PREHEAT_2_END_E5                = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N5;     //MSG_PREHEAT_2 " "
90
+  PROGMEM Language_Str MSG_PREHEAT_2_ALL                   = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 全部");     //MSG_PREHEAT_2 " All"
91
+  PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY               = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 熱床");     //MSG_PREHEAT_2 " Bed"
92
+  PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS              = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 設置");     //MSG_PREHEAT_2 " conf"
93
+  PROGMEM Language_Str MSG_COOLDOWN                        = _UxGT("降溫");     //"Cooldown"
94
+  PROGMEM Language_Str MSG_SWITCH_PS_ON                    = _UxGT("電源打開");     //"Switch power on"
95
+  PROGMEM Language_Str MSG_SWITCH_PS_OFF                   = _UxGT("電源關閉");     //"Switch power off"
96
+  PROGMEM Language_Str MSG_EXTRUDE                         = _UxGT("擠出");     //"Extrude"
97
+  PROGMEM Language_Str MSG_RETRACT                         = _UxGT("回縮");     //"Retract"
98
+  PROGMEM Language_Str MSG_MOVE_AXIS                       = _UxGT("移動軸");     //"Move axis"
99
+  PROGMEM Language_Str MSG_BED_LEVELING                    = _UxGT("調平熱床");     //"Bed leveling"
100
+  PROGMEM Language_Str MSG_LEVEL_BED                       = _UxGT("調平熱床");     //"Level bed"
101
+  PROGMEM Language_Str MSG_LEVEL_CORNERS                   = _UxGT("調平邊角");     // "Level corners"
75 102
 
76
-#define MSG_NEXT_CORNER                     _UxGT("下个邊角") // "Next corner"
77
-#define MSG_EDIT_MESH                       _UxGT("編輯網格") // "Edit Mesh"
78
-#define MSG_EDITING_STOPPED                 _UxGT("網格編輯已停止") // "Mesh Editing Stopped"
79
-#define MSG_USER_MENU                       _UxGT("客制命令") // "Custom Commands"
103
+  PROGMEM Language_Str MSG_NEXT_CORNER                     = _UxGT("下個邊角");     // "Next corner"
104
+  PROGMEM Language_Str MSG_EDIT_MESH                       = _UxGT("編輯網格");     // "Edit Mesh"
105
+  PROGMEM Language_Str MSG_EDITING_STOPPED                 = _UxGT("網格編輯已停止");     // "Mesh Editing Stopped"
106
+  PROGMEM Language_Str MSG_USER_MENU                       = _UxGT("客制命令");     // "Custom Commands"
80 107
 
81
-#define MSG_UBL_DOING_G29                   _UxGT("执行G29") // "Doing G29"
82
-#define MSG_UBL_TOOLS                       _UxGT("UBL工具") // "UBL Tools"
83
-#define MSG_UBL_LEVEL_BED                   _UxGT("統一熱床調平(UBL)") // "Unified Bed Leveling"
84
-#define MSG_UBL_MANUAL_MESH                 _UxGT("手工建网") // "Manually Build Mesh"
85
-#define MSG_UBL_BC_INSERT                   _UxGT("放置墊片並測量") // "Place shim & measure"
86
-#define MSG_UBL_BC_INSERT2                  _UxGT("測量") // "Measure"
87
-#define MSG_UBL_BC_REMOVE                   _UxGT("移除並測量熱床") // "Remove & measure bed"
88
-#define MSG_UBL_MOVING_TO_NEXT              _UxGT("移動到下一個") // "Moving to next"
89
-#define MSG_UBL_ACTIVATE_MESH               _UxGT("激活UBL") // "Activate UBL"
90
-#define MSG_UBL_DEACTIVATE_MESH             _UxGT("關閉UBL") // "Deactivate UBL"
91
-#define MSG_UBL_SET_TEMP_BED                _UxGT("設置熱床溫度") // "Bed Temp"
92
-#define MSG_UBL_SET_TEMP_HOTEND             _UxGT("熱端溫度") // "Hotend Temp"
93
-#define MSG_UBL_MESH_EDIT                   _UxGT("網格編輯") // "Mesh Edit"
94
-#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("編輯客戶網格") // "Edit Custom Mesh"
95
-#define MSG_UBL_FINE_TUNE_MESH              _UxGT("細調網格") // "Fine Tuning Mesh"
96
-#define MSG_UBL_DONE_EDITING_MESH           _UxGT("完成編輯網格") // "Done Editing Mesh"
97
-#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("創設客戶網格") // "Build Custom Mesh"
98
-#define MSG_UBL_BUILD_MESH_MENU             _UxGT("創設網格") // "Build Mesh"
99
-#define MSG_UBL_BUILD_MESH_M1               _UxGT("創設" PREHEAT_1_LABEL "網格") // "Build PREHEAT_1_LABEL Mesh"
100
-#define MSG_UBL_BUILD_MESH_M2               _UxGT("創設" PREHEAT_2_LABEL "網格") // "Build PREHEAT_2_LABEL Mesh"
101
-#define MSG_UBL_BUILD_COLD_MESH             _UxGT("創設冷網格") // "Build Cold Mesh"
102
-#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("調整網格高度") // "Adjust Mesh Height"
103
-#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("高度合計") // "Height Amount"
104
-#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("批准網格") // "Validate Mesh"
105
-#define MSG_UBL_VALIDATE_MESH_M1            _UxGT("批准" PREHEAT_1_LABEL "網格") // "Validate PREHEAT_1_LABEL Mesh"
106
-#define MSG_UBL_VALIDATE_MESH_M2            _UxGT("批准" PREHEAT_2_LABEL "網格") // "Validate PREHEAT_2_LABEL Mesh"
107
-#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("批准客戶網格") // "Validate Custom Mesh"
108
-#define MSG_UBL_CONTINUE_MESH               _UxGT("繼續熱床網格") // "Continue Bed Mesh"
109
-#define MSG_UBL_MESH_LEVELING               _UxGT("網格調平") // "Mesh Leveling"
110
-#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("三點調平") // "3-Point Leveling"
111
-#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("格子網格調平") // "Grid Mesh Leveling"
112
-#define MSG_UBL_MESH_LEVEL                  _UxGT("調平網格") // "Level Mesh"
113
-#define MSG_UBL_SIDE_POINTS                 _UxGT("邊點") // "Side Points"
114
-#define MSG_UBL_MAP_TYPE                    _UxGT("圖類型") // "Map Type"
115
-#define MSG_UBL_OUTPUT_MAP                  _UxGT("輸出網格圖") // "Output Mesh Map"
116
-#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("輸出到主機") // "Output for Host"
117
-#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("輸出到CSV") // "Output for CSV"
118
-#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("輸出到備份") // "Off Printer Backup"
119
-#define MSG_UBL_INFO_UBL                    _UxGT("輸出UBL信息") // "Output UBL Info"
120
-#define MSG_UBL_FILLIN_AMOUNT               _UxGT("填充合計") // "Fill-in Amount"
121
-#define MSG_UBL_MANUAL_FILLIN               _UxGT("手工填充") // "Manual Fill-in"
122
-#define MSG_UBL_SMART_FILLIN                _UxGT("聰明填充") // "Smart Fill-in"
123
-#define MSG_UBL_FILLIN_MESH                 _UxGT("填充網格") // "Fill-in Mesh"
124
-#define MSG_UBL_INVALIDATE_ALL              _UxGT("作廢所有的") // "Invalidate All"
125
-#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("作廢最近的") // "Invalidate Closest"
126
-#define MSG_UBL_FINE_TUNE_ALL               _UxGT("細調所有的") // "Fine Tune All"
127
-#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("細調最近的") // "Fine Tune Closest"
128
-#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("網格存儲") // "Mesh Storage"
129
-#define MSG_UBL_STORAGE_SLOT                _UxGT("存儲槽") // "Memory Slot"
130
-#define MSG_UBL_LOAD_MESH                   _UxGT("裝載熱床網格") // "Load Bed Mesh"
131
-#define MSG_UBL_SAVE_MESH                   _UxGT("保存熱床網格") // "Save Bed Mesh"
132
-#define MSG_MESH_LOADED                     _UxGT("網格 %i 已裝載") // "Mesh %i loaded"
133
-#define MSG_MESH_SAVED                      _UxGT("網格 %i 已保存") // "Mesh %i saved"
134
-#define MSG_UBL_NO_STORAGE                  _UxGT("沒有存儲") // "No storage"
135
-#define MSG_UBL_SAVE_ERROR                  _UxGT("錯誤: UBL保存") // "Err: UBL Save"
136
-#define MSG_UBL_RESTORE_ERROR               _UxGT("錯誤: UBL還原") // "Err: UBL Restore"
137
-#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z偏移已停止") // "Z-Offset Stopped"
138
-#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("一步步UBL") // "Step-By-Step UBL"
108
+  PROGMEM Language_Str MSG_UBL_DOING_G29                   = _UxGT("執行G29");     // "Doing G29"
109
+  PROGMEM Language_Str MSG_UBL_TOOLS                       = _UxGT("UBL工具");     // "UBL Tools"
110
+  PROGMEM Language_Str MSG_UBL_LEVEL_BED                   = _UxGT("統一熱床調平(UBL)");     // "Unified Bed Leveling"
111
+  PROGMEM Language_Str MSG_UBL_MANUAL_MESH                 = _UxGT("手工建網");     // "Manually Build Mesh"
112
+  PROGMEM Language_Str MSG_UBL_BC_INSERT                   = _UxGT("放置墊片並測量");     // "Place shim & measure"
113
+  PROGMEM Language_Str MSG_UBL_BC_INSERT2                  = _UxGT("測量");     // "Measure"
114
+  PROGMEM Language_Str MSG_UBL_BC_REMOVE                   = _UxGT("移除並測量熱床");     // "Remove & measure bed"
115
+  PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT              = _UxGT("移動到下一個");     // "Moving to next"
116
+  PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH               = _UxGT("啟動UBL");     // "Activate UBL"
117
+  PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH             = _UxGT("關閉UBL");     // "Deactivate UBL"
118
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_BED                = _UxGT("設置熱床溫度");     // "Bed Temp"
119
+  PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND             = _UxGT("熱端溫度");     // "Hotend Temp"
120
+  PROGMEM Language_Str MSG_UBL_MESH_EDIT                   = _UxGT("網格編輯");     // "Mesh Edit"
121
+  PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH            = _UxGT("編輯客戶網格");     // "Edit Custom Mesh"
122
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH              = _UxGT("細調網格");     // "Fine Tuning Mesh"
123
+  PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH           = _UxGT("完成編輯網格");     // "Done Editing Mesh"
124
+  PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH           = _UxGT("創設客戶網格");     // "Build Custom Mesh"
125
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU             = _UxGT("創設網格");     // "Build Mesh"
126
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1               = _UxGT("創設 ") PREHEAT_1_LABEL _UxGT(" 網格");     // "Build PREHEAT_1_LABEL Mesh"
127
+  PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2               = _UxGT("創設 ") PREHEAT_2_LABEL _UxGT(" 網格");     // "Build PREHEAT_2_LABEL Mesh"
128
+  PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH             = _UxGT("創設冷網格");     // "Build Cold Mesh"
129
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST          = _UxGT("調整網格高度");     // "Adjust Mesh Height"
130
+  PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT          = _UxGT("高度合計");     // "Height Amount"
131
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU          = _UxGT("批准網格");     // "Validate Mesh"
132
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1            = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 網格");     // "Validate PREHEAT_1_LABEL Mesh"
133
+  PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2            = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 網格");     // "Validate PREHEAT_2_LABEL Mesh"
134
+  PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH        = _UxGT("批准客戶網格");     // "Validate Custom Mesh"
135
+  PROGMEM Language_Str MSG_UBL_CONTINUE_MESH               = _UxGT("繼續熱床網格");     // "Continue Bed Mesh"
136
+  PROGMEM Language_Str MSG_UBL_MESH_LEVELING               = _UxGT("網格調平");     // "Mesh Leveling"
137
+  PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING        = _UxGT("三點調平");     // "3-Point Leveling"
138
+  PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING          = _UxGT("格子網格調平");     // "Grid Mesh Leveling"
139
+  PROGMEM Language_Str MSG_UBL_MESH_LEVEL                  = _UxGT("調平網格");     // "Level Mesh"
140
+  PROGMEM Language_Str MSG_UBL_SIDE_POINTS                 = _UxGT("邊點");     // "Side Points"
141
+  PROGMEM Language_Str MSG_UBL_MAP_TYPE                    = _UxGT("圖類型");     // "Map Type"
142
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP                  = _UxGT("輸出網格圖");     // "Output Mesh Map"
143
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST             = _UxGT("輸出到主機");     // "Output for Host"
144
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV              = _UxGT("輸出到CSV");     // "Output for CSV"
145
+  PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP           = _UxGT("輸出到備份");     // "Off Printer Backup"
146
+  PROGMEM Language_Str MSG_UBL_INFO_UBL                    = _UxGT("輸出UBL信息");     // "Output UBL Info"
147
+  PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT               = _UxGT("填充合計");     // "Fill-in Amount"
148
+  PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN               = _UxGT("手工填充");     // "Manual Fill-in"
149
+  PROGMEM Language_Str MSG_UBL_SMART_FILLIN                = _UxGT("聰明填充");     // "Smart Fill-in"
150
+  PROGMEM Language_Str MSG_UBL_FILLIN_MESH                 = _UxGT("填充網格");     // "Fill-in Mesh"
151
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL              = _UxGT("作廢所有的");     // "Invalidate All"
152
+  PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST          = _UxGT("作廢最近的");     // "Invalidate Closest"
153
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL               = _UxGT("細調所有的");     // "Fine Tune All"
154
+  PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST           = _UxGT("細調最近的");     // "Fine Tune Closest"
155
+  PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU           = _UxGT("網格存儲");     // "Mesh Storage"
156
+  PROGMEM Language_Str MSG_UBL_STORAGE_SLOT                = _UxGT("存儲槽");     // "Memory Slot"
157
+  PROGMEM Language_Str MSG_UBL_LOAD_MESH                   = _UxGT("裝載熱床網格");     // "Load Bed Mesh"
158
+  PROGMEM Language_Str MSG_UBL_SAVE_MESH                   = _UxGT("保存熱床網格");     // "Save Bed Mesh"
159
+  PROGMEM Language_Str MSG_MESH_LOADED                     = _UxGT("M117 網格 %i 已裝載");     // "Mesh %i loaded"
160
+  PROGMEM Language_Str MSG_MESH_SAVED                      = _UxGT("M117 網格 %i 已保存");     // "Mesh %i saved"
161
+  PROGMEM Language_Str MSG_UBL_NO_STORAGE                  = _UxGT("沒有存儲");     // "No storage"
162
+  PROGMEM Language_Str MSG_UBL_SAVE_ERROR                  = _UxGT("錯誤: UBL保存");     // "Err: UBL Save"
163
+  PROGMEM Language_Str MSG_UBL_RESTORE_ERROR               = _UxGT("錯誤: UBL還原");     // "Err: UBL Restore"
164
+  PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED            = _UxGT("Z偏移已停止");     // "Z-Offset Stopped"
165
+  PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU           = _UxGT("一步步UBL");     // "Step-By-Step UBL"
166
+  PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH           = _UxGT("1. 創設冷網格");
167
+  PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN              = _UxGT("2. 聰明填充");
168
+  PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU        = _UxGT("3. 批准網格");
169
+  PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL             = _UxGT("4. 細調所有的");
170
+  PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU        = _UxGT("5. 批准網格");
171
+  PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL             = _UxGT("6. 細調所有的");
172
+  PROGMEM Language_Str MSG_UBL_7_SAVE_MESH                 = _UxGT("7. 保存熱床網格");
139 173
 
140
-#define MSG_LED_CONTROL                     _UxGT("灯管控制") // "LED Control")
141
-#define MSG_LEDS                            _UxGT("灯") // "Lights")
142
-#define MSG_LED_PRESETS                     _UxGT("灯预置") // "Light Presets")
143
-#define MSG_SET_LEDS_RED                    _UxGT("红") // "Red")
144
-#define MSG_SET_LEDS_ORANGE                 _UxGT("橙") // "Orange")
145
-#define MSG_SET_LEDS_YELLOW                 _UxGT("黄") // "Yellow")
146
-#define MSG_SET_LEDS_GREEN                  _UxGT("绿") // "Green")
147
-#define MSG_SET_LEDS_BLUE                   _UxGT("蓝") // "Blue")
148
-#define MSG_SET_LEDS_INDIGO                 _UxGT("青") // "Indigo")
149
-#define MSG_SET_LEDS_VIOLET                 _UxGT("紫") // "Violet")
150
-#define MSG_SET_LEDS_WHITE                  _UxGT("白") // "White")
151
-#define MSG_SET_LEDS_DEFAULT                _UxGT("缺省") // "Default")
152
-#define MSG_CUSTOM_LEDS                     _UxGT("定制灯") // "Custom Lights")
153
-#define MSG_INTENSITY_R                     _UxGT("红飽和度") // "Red Intensity")
154
-#define MSG_INTENSITY_G                     _UxGT("绿飽和度") // "Green Intensity")
155
-#define MSG_INTENSITY_B                     _UxGT("蓝飽和度") // "Blue Intensity")
156
-#define MSG_INTENSITY_W                     _UxGT("白飽和度") // "White Intensity")
157
-#define MSG_LED_BRIGHTNESS                  _UxGT("亮度") // "Brightness")
174
+  PROGMEM Language_Str MSG_LED_CONTROL                     = _UxGT("燈管控制");     // "LED Control")
175
+  PROGMEM Language_Str MSG_LEDS                            = _UxGT("燈");     // "Lights")
176
+  PROGMEM Language_Str MSG_LED_PRESETS                     = _UxGT("燈預置");     // "Light Presets")
177
+  PROGMEM Language_Str MSG_SET_LEDS_RED                    = _UxGT("红");     // "Red")
178
+  PROGMEM Language_Str MSG_SET_LEDS_ORANGE                 = _UxGT("橙");     // "Orange")
179
+  PROGMEM Language_Str MSG_SET_LEDS_YELLOW                 = _UxGT("黃");     // "Yellow")
180
+  PROGMEM Language_Str MSG_SET_LEDS_GREEN                  = _UxGT("綠");     // "Green")
181
+  PROGMEM Language_Str MSG_SET_LEDS_BLUE                   = _UxGT("藍");     // "Blue")
182
+  PROGMEM Language_Str MSG_SET_LEDS_INDIGO                 = _UxGT("青");     // "Indigo")
183
+  PROGMEM Language_Str MSG_SET_LEDS_VIOLET                 = _UxGT("紫");     // "Violet")
184
+  PROGMEM Language_Str MSG_SET_LEDS_WHITE                  = _UxGT("白");     // "White")
185
+  PROGMEM Language_Str MSG_SET_LEDS_DEFAULT                = _UxGT("缺省");     // "Default")
186
+  PROGMEM Language_Str MSG_CUSTOM_LEDS                     = _UxGT("定制燈");     // "Custom Lights")
187
+  PROGMEM Language_Str MSG_INTENSITY_R                     = _UxGT("紅飽和度");     // "Red Intensity")
188
+  PROGMEM Language_Str MSG_INTENSITY_G                     = _UxGT("綠飽和度");     // "Green Intensity")
189
+  PROGMEM Language_Str MSG_INTENSITY_B                     = _UxGT("藍飽和度");     // "Blue Intensity")
190
+  PROGMEM Language_Str MSG_INTENSITY_W                     = _UxGT("白飽和度");     // "White Intensity")
191
+  PROGMEM Language_Str MSG_LED_BRIGHTNESS                  = _UxGT("亮度");     // "Brightness")
158 192
 
159
-#define MSG_MOVING                          _UxGT("移动 ...") // "Moving...")
160
-#define MSG_FREE_XY                         _UxGT("释放 XY") // "Free XY")
161
-#define MSG_MOVE_X                          _UxGT("移動X")  //"Move X"
162
-#define MSG_MOVE_Y                          _UxGT("移動Y")  //"Move Y"
163
-#define MSG_MOVE_Z                          _UxGT("移動Z")  //"Move Z"
164
-#define MSG_MOVE_E                          _UxGT("擠出機")  //"Extruder"
165
-#define MSG_MOVE_Z_DIST                     _UxGT("移動 %s mm")  //"Move 0.025mm"
166
-#define MSG_MOVE_01MM                       _UxGT("移動 0.1 mm")  //"Move 0.1mm"
167
-#define MSG_MOVE_1MM                        _UxGT("移動 1 mm")  //"Move 1mm"
168
-#define MSG_MOVE_10MM                       _UxGT("移動 10 mm")  //"Move 10mm"
169
-#define MSG_SPEED                           _UxGT("速率")  //"Speed"
170
-#define MSG_BED_Z                           _UxGT("熱床Z")  //"Bed Z"
171
-#define MSG_NOZZLE                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 噴嘴")  //"Nozzle" 噴嘴
172
-#define MSG_BED                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 熱床")  //"Bed"
173
-#define MSG_FAN_SPEED                       _UxGT("風扇速率")  //"Fan speed"
174
-#define MSG_EXTRA_FAN_SPEED                 _UxGT("額外風扇速率") // "Extra fan speed"
175
-#define MSG_FLOW                            _UxGT("擠出速率")  //"Flow"
176
-#define MSG_CONTROL                         _UxGT("控制")  //"Control"
177
-#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最小") //" " LCD_STR_THERMOMETER " Min"
178
-#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最大")  //" " LCD_STR_THERMOMETER " Max"
179
-#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 系數")  //" " LCD_STR_THERMOMETER " Fact"
180
-#define MSG_AUTOTEMP                        _UxGT("自動控溫")  //"Autotemp"
181
-#define MSG_LCD_ON                          _UxGT("開")  //"On"
182
-#define MSG_LCD_OFF                         _UxGT("關")  //"Off"
183
-#define MSG_PID_P                           _UxGT("PID-P")  //"PID-P"
184
-#define MSG_PID_I                           _UxGT("PID-I")  //"PID-I"
185
-#define MSG_PID_D                           _UxGT("PID-D")  //"PID-D"
186
-#define MSG_PID_C                           _UxGT("PID-C")  //"PID-C"
187
-#define MSG_SELECT                          _UxGT("選擇")  //"Select"
188
-#define MSG_ACC                             _UxGT("加速度")  //"Accel" acceleration
189
-#define MSG_JERK                            _UxGT("抖動速率")  //"Jerk"
190
-#if IS_KINEMATIC
191
-  #define MSG_VA_JERK                       _UxGT("A軸抖動速率")  //"Va-jerk"
192
-  #define MSG_VB_JERK                       _UxGT("B軸抖動速率")  //"Vb-jerk"
193
-  #define MSG_VC_JERK                       _UxGT("C軸抖動速率")  //"Vc-jerk"
194
-#else
195
-  #define MSG_VA_JERK                       _UxGT("X軸抖動速率")  //"Vx-jerk"
196
-  #define MSG_VB_JERK                       _UxGT("Y軸抖動速率")  //"Vy-jerk"
197
-  #define MSG_VC_JERK                       _UxGT("Z軸抖動速率")  //"Vz-jerk"
198
-#endif
199
-#define MSG_VE_JERK                         _UxGT("擠出機抖動速率")  //"Ve-jerk"
200
-#define MSG_VELOCITY                        _UxGT("速度")          // "Velocity"
201
-#define MSG_VMAX                            _UxGT("最大進料速率")  //"Vmax " max_feedrate_mm_s
202
-#define MSG_VMIN                            _UxGT("最小進料速率")  //"Vmin"  min_feedrate_mm_s
203
-#define MSG_VTRAV_MIN                       _UxGT("最小移動速率")  //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
204
-#define MSG_ACCELERATION                    _UxGT("加速度")       // "Acceleration"
205
-#define MSG_AMAX                            _UxGT("最大列印加速度")  //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
206
-#define MSG_A_RETRACT                       _UxGT("回縮加速度")  //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
207
-#define MSG_A_TRAVEL                        _UxGT("非列印移動加速度")  //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
208
-#define MSG_STEPS_PER_MM                    _UxGT("軸步數/mm")  //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
209
-#if IS_KINEMATIC
210
-  #define MSG_ASTEPS                        _UxGT("A軸步數/mm")  //"Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
211
-  #define MSG_BSTEPS                        _UxGT("B軸步數/mm")  //"Bsteps/mm"
212
-  #define MSG_CSTEPS                        _UxGT("C軸步數/mm")  //"Csteps/mm"
213
-#else
214
-  #define MSG_ASTEPS                        _UxGT("X軸步數/mm")  //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
215
-  #define MSG_BSTEPS                        _UxGT("Y軸步數/mm")  //"Ysteps/mm"
216
-  #define MSG_CSTEPS                        _UxGT("Z軸步數/mm")  //"Zsteps/mm"
217
-#endif
218
-#define MSG_ESTEPS                          _UxGT("擠出機步數/mm")  //"Esteps/mm"
219
-#define MSG_E0_STEPS                        _UxGT("擠出機1步數/mm") //"E1steps/mm"
220
-#define MSG_E1_STEPS                        _UxGT("擠出機2步數/mm") //"E2steps/mm"
221
-#define MSG_E2_STEPS                        _UxGT("擠出機3步數/mm") //"E3steps/mm"
222
-#define MSG_E3_STEPS                        _UxGT("擠出機4步數/mm") //"E4steps/mm"
223
-#define MSG_E4_STEPS                        _UxGT("擠出機5步數/mm") //"E5steps/mm"
224
-#define MSG_E5_STEPS                        _UxGT("擠出機6步數/mm") //"E6steps/mm"
225
-#define MSG_TEMPERATURE                     _UxGT("溫度")  //"Temperature"
226
-#define MSG_MOTION                          _UxGT("運作")  //"Motion"
227
-#define MSG_FILAMENT                        _UxGT("絲料測容")  //"Filament" menu_control_volumetric
228
-#define MSG_VOLUMETRIC_ENABLED              _UxGT("測容積mm³")  //"E in mm3" volumetric_enabled
229
-#define MSG_FILAMENT_DIAM                   _UxGT("絲料直徑")  //"Fil. Dia."
230
-#define MSG_FILAMENT_UNLOAD                 _UxGT("卸載 mm") // "Unload mm"
231
-#define MSG_FILAMENT_LOAD                   _UxGT("装載 mm")   // "Load mm"
232
-#define MSG_ADVANCE_K                       _UxGT("Advance K") // "Advance K"
233
-#define MSG_CONTRAST                        _UxGT("LCD對比度")  //"LCD contrast"
234
-#define MSG_STORE_EEPROM                    _UxGT("保存設置")  //"Store memory"
235
-#define MSG_LOAD_EEPROM                     _UxGT("載入設置")  //"Load memory"
236
-#define MSG_RESTORE_FAILSAFE                _UxGT("恢復安全值")  //"Restore failsafe"
237
-#define MSG_INIT_EEPROM                     _UxGT("初始化設置") // "Initialize EEPROM"
238
-#define MSG_REFRESH                         _UxGT("刷新")  //"Refresh"
239
-#define MSG_WATCH                           _UxGT("資訊界面")  //"Info screen"
240
-#define MSG_PREPARE                         _UxGT("準備")  //"Prepare"
241
-#define MSG_TUNE                            _UxGT("調整")  //"Tune"
242
-#define MSG_PAUSE_PRINT                     _UxGT("暫停列印")  //"Pause print"
243
-#define MSG_RESUME_PRINT                    _UxGT("恢復列印")  //"Resume print"
244
-#define MSG_STOP_PRINT                      _UxGT("停止列印")  //"Stop print"
245
-#define MSG_MEDIA_MENU                      _UxGT("從記憶卡上列印")  //"Print from SD"
246
-#define MSG_NO_MEDIA                        _UxGT("無記憶卡")  //"No SD card"
247
-#define MSG_DWELL                           _UxGT("休眠 ...")  //"Sleep..."
248
-#define MSG_USERWAIT                        _UxGT("點擊繼續 ...")  //"Click to resume..."
249
-#define MSG_PRINT_PAUSED                    _UxGT("列印已暫停") // "Print paused"
250
-#define MSG_PRINT_ABORTED                   _UxGT("已取消列印")  //"Print aborted"
251
-#define MSG_NO_MOVE                         _UxGT("無移動")  //"No move."
252
-#define MSG_KILLED                          _UxGT("已砍掉")  //"KILLED. "
253
-#define MSG_STOPPED                         _UxGT("已停止")  //"STOPPED. "
254
-#define MSG_CONTROL_RETRACT                 _UxGT("回縮長度mm")  //"Retract mm" retract_length, retract length (positive mm)
255
-#define MSG_CONTROL_RETRACT_SWAP            _UxGT("換手回抽長度mm")  //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
256
-#define MSG_CONTROL_RETRACTF                _UxGT("回縮速率mm/s")  //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
257
-#define MSG_CONTROL_RETRACT_ZHOP            _UxGT("Hop mm")  //"Hop mm" retract_zraise, retract Z-lift
258
-#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("回縮恢復長度mm")  //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
259
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("換手回縮恢復長度mm")  //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
260
-#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("回縮恢復後進料速率mm/s")  //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
261
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF   _UxGT("S UnRet V") // "S UnRet V"
262
-#define MSG_AUTORETRACT                     _UxGT("自動回縮")  //"AutoRetr." autoretract_enabled,
263
-#define MSG_FILAMENTCHANGE                  _UxGT("更換絲料")  //"Change filament"
264
-#define MSG_FILAMENTLOAD                    _UxGT("裝載絲料") // "Load filament"
265
-#define MSG_FILAMENTUNLOAD                  _UxGT("卸載絲料") // "Unload filament"
266
-#define MSG_FILAMENTUNLOAD_ALL              _UxGT("卸載全部") // "Unload All"
267
-#define MSG_INIT_MEDIA                      _UxGT("初始化記憶卡")  //"Init. SD card"
268
-#define MSG_CHANGE_MEDIA                    _UxGT("更換記憶卡")  //"Change SD card"
269
-#define MSG_ZPROBE_OUT                      _UxGT("Z探針在熱床之外")  //"Z probe out. bed" Z probe is not within the physical limits
270
-#define MSG_SKEW_FACTOR                     _UxGT("偏斜因數") // "Skew Factor"
271
-#define MSG_BLTOUCH                         _UxGT("BLTouch")     // "BLTouch"
272
-#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch 自檢") // "BLTouch Self-Test"
273
-#define MSG_BLTOUCH_RESET                   _UxGT("重置BLTouch")  // "Reset BLTouch"
274
-#define MSG_BLTOUCH_DEPLOY                  _UxGT("部署BLTouch") // "Deploy BLTouch"
275
-#define MSG_BLTOUCH_STOW                    _UxGT("裝載BLTouch")   // "Stow BLTouch"
276
-#define MSG_HOME_FIRST                      _UxGT("歸位 %s%s%s 先")  //"Home ... first"
277
-#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z偏移")  //"Z Offset"
278
-#define MSG_BABYSTEP_X                      _UxGT("微量調整X軸")  //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
279
-#define MSG_BABYSTEP_Y                      _UxGT("微量調整Y軸")  //"Babystep Y"
280
-#define MSG_BABYSTEP_Z                      _UxGT("微量調整Z軸")  //"Babystep Z"
281
-#define MSG_ENDSTOP_ABORT                   _UxGT("擋塊終止")  //"Endstop abort"
282
-#define MSG_HEATING_FAILED_LCD              _UxGT("加熱失敗")  //"Heating failed"
283
-#define MSG_ERR_REDUNDANT_TEMP              _UxGT("錯誤:REDUNDANT TEMP")  //"Err: REDUNDANT TEMP"
284
-#define MSG_THERMAL_RUNAWAY                 _UxGT("溫控失控")  //"THERMAL RUNAWAY"
285
-#define MSG_ERR_MAXTEMP                     _UxGT("錯誤:最高溫度")  //"Err: MAXTEMP"
286
-#define MSG_ERR_MINTEMP                     _UxGT("錯誤:最低溫度")  //"Err: MINTEMP"
287
-#define MSG_ERR_MAXTEMP_BED                 _UxGT("錯誤:最高熱床溫度")  //"Err: MAXTEMP BED"
288
-#define MSG_ERR_MINTEMP_BED                 _UxGT("錯誤:最低熱床溫度")  //"Err: MINTEMP BED"
289
-#define MSG_ERR_Z_HOMING                    _UxGT("歸位 XY 先")  //"Home XY First"
290
-#define MSG_HALTED                          _UxGT("印表機停機")  //"PRINTER HALTED"
291
-#define MSG_PLEASE_RESET                    _UxGT("請重置")  //"Please reset"
292
-#define MSG_SHORT_DAY                       _UxGT("天")  //"d" // One character only
293
-#define MSG_SHORT_HOUR                      _UxGT("時")  //"h" // One character only
294
-#define MSG_SHORT_MINUTE                    _UxGT("分")  //"m" // One character only
295
-#define MSG_HEATING                         _UxGT("加熱中 ...")  //"Heating..."
296
-#define MSG_BED_HEATING                     _UxGT("加熱熱床中 ...")  //"Bed Heating..."
297
-#define MSG_DELTA_CALIBRATE                 _UxGT("⊿校準")  //"Delta Calibration"
298
-#define MSG_DELTA_CALIBRATE_X               _UxGT("⊿校準X")  //"Calibrate X"
299
-#define MSG_DELTA_CALIBRATE_Y               _UxGT("⊿校準Y")  //"Calibrate Y"
300
-#define MSG_DELTA_CALIBRATE_Z               _UxGT("⊿校準Z")  //"Calibrate Z"
301
-#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("⊿校準中心")  //"Calibrate Center"
302
-#define MSG_DELTA_SETTINGS                  _UxGT("⊿設置") // "Delta Settings"
303
-#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("⊿自動校準") // "Auto Calibration"
304
-#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("設置⊿高度") // "Set Delta Height"
305
-#define MSG_DELTA_DIAG_ROD                  _UxGT("⊿斜柱") // "Diag Rod"
306
-#define MSG_DELTA_HEIGHT                    _UxGT("⊿高度") // "Height"
307
-#define MSG_DELTA_RADIUS                    _UxGT("⊿半徑") // "Radius"
308
-#define MSG_INFO_MENU                       _UxGT("關於印表機")  //"About Printer"
309
-#define MSG_INFO_PRINTER_MENU               _UxGT("印表機訊息")  //"Printer Info"
310
-#define MSG_3POINT_LEVELING                 _UxGT("三點調平") // "3-Point Leveling"
311
-#define MSG_LINEAR_LEVELING                 _UxGT("線性調平") // "Linear Leveling"
312
-#define MSG_BILINEAR_LEVELING               _UxGT("雙線性調平") // "Bilinear Leveling"
313
-#define MSG_UBL_LEVELING                    _UxGT("統一熱床調平(UBL)") // "Unified Bed Leveling"
314
-#define MSG_MESH_LEVELING                   _UxGT("網格調平") // "Mesh Leveling"
315
-#define MSG_INFO_STATS_MENU                 _UxGT("印表機統計")  //"Printer Stats"
316
-#define MSG_INFO_BOARD_MENU                 _UxGT("主板訊息")  //"Board Info"
317
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("溫度計")  //"Thermistors"
318
-#define MSG_INFO_EXTRUDERS                  _UxGT("擠出機")  //"Extruders"
319
-#define MSG_INFO_BAUDRATE                   _UxGT("傳輸率")  //"Baud"
320
-#define MSG_INFO_PROTOCOL                   _UxGT("協議")  //"Protocol"
321
-#define MSG_CASE_LIGHT                      _UxGT("外殼燈") // "Case light"
322
-#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("燈亮度") // "Light BRIGHTNESS"
193
+  PROGMEM Language_Str MSG_MOVING                          = _UxGT("移動 ...");     // "Moving...")
194
+  PROGMEM Language_Str MSG_FREE_XY                         = _UxGT("釋放 XY");     // "Free XY")
195
+  PROGMEM Language_Str MSG_MOVE_X                          = _UxGT("移動X");     //"Move X"
196
+  PROGMEM Language_Str MSG_MOVE_Y                          = _UxGT("移動Y");     //"Move Y"
197
+  PROGMEM Language_Str MSG_MOVE_Z                          = _UxGT("移動Z");     //"Move Z"
198
+  PROGMEM Language_Str MSG_MOVE_E                          = _UxGT("擠出機");     //"Extruder"
199
+  PROGMEM Language_Str MSG_MOVE_E0                         = _UxGT("擠出機 ") LCD_STR_E0;
200
+  PROGMEM Language_Str MSG_MOVE_E1                         = _UxGT("擠出機 ") LCD_STR_E1;
201
+  PROGMEM Language_Str MSG_MOVE_E2                         = _UxGT("擠出機 ") LCD_STR_E2;
202
+  PROGMEM Language_Str MSG_MOVE_E3                         = _UxGT("擠出機 ") LCD_STR_E3;
203
+  PROGMEM Language_Str MSG_MOVE_E4                         = _UxGT("擠出機 ") LCD_STR_E4;
204
+  PROGMEM Language_Str MSG_MOVE_E5                         = _UxGT("擠出機 ") LCD_STR_E5;
205
+  PROGMEM Language_Str MSG_MOVE_Z_DIST                     = _UxGT("移動 %s mm");     //"Move 0.025mm"
206
+  PROGMEM Language_Str MSG_MOVE_01MM                       = _UxGT("移動 0.1 mm");     //"Move 0.1mm"
207
+  PROGMEM Language_Str MSG_MOVE_1MM                        = _UxGT("移動 1 mm");     //"Move 1mm"
208
+  PROGMEM Language_Str MSG_MOVE_10MM                       = _UxGT("移動 10 mm");     //"Move 10mm"
209
+  PROGMEM Language_Str MSG_SPEED                           = _UxGT("速率");     //"Speed"
210
+  PROGMEM Language_Str MSG_BED_Z                           = _UxGT("熱床Z");     //"Bed Z"
211
+  PROGMEM Language_Str MSG_NOZZLE                          = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴");     //"Nozzle" 噴嘴
212
+  PROGMEM Language_Str MSG_NOZZLE_0                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N0;
213
+  PROGMEM Language_Str MSG_NOZZLE_1                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N1;
214
+  PROGMEM Language_Str MSG_NOZZLE_2                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N2;
215
+  PROGMEM Language_Str MSG_NOZZLE_3                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N3;
216
+  PROGMEM Language_Str MSG_NOZZLE_4                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N4;
217
+  PROGMEM Language_Str MSG_NOZZLE_5                        = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N5;
218
+  PROGMEM Language_Str MSG_BED                             = " " LCD_STR_THERMOMETER _UxGT(" 熱床");     //"Bed"
219
+  PROGMEM Language_Str MSG_FAN_SPEED                       = _UxGT("風扇速率");     //"Fan speed"
220
+  PROGMEM Language_Str MSG_FAN_SPEED_1                     = _UxGT("風扇速率 1");
221
+  PROGMEM Language_Str MSG_FAN_SPEED_2                     = _UxGT("風扇速率 2");
222
+  PROGMEM Language_Str MSG_FAN_SPEED_3                     = _UxGT("風扇速率 3");
223
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED                 = _UxGT("額外風扇速率");     // "Extra fan speed"
224
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1               = _UxGT("額外風扇速率 1");
225
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2               = _UxGT("額外風扇速率 2");
226
+  PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3               = _UxGT("額外風扇速率 3");
227
+  PROGMEM Language_Str MSG_FLOW                            = _UxGT("擠出速率");
228
+  PROGMEM Language_Str MSG_FLOW_0                          = _UxGT("擠出速率 ") LCD_STR_N0;     //"Flow"
229
+  PROGMEM Language_Str MSG_FLOW_1                          = _UxGT("擠出速率 ") LCD_STR_N1;     //"Flow"
230
+  PROGMEM Language_Str MSG_FLOW_2                          = _UxGT("擠出速率 ") LCD_STR_N2;     //"Flow"
231
+  PROGMEM Language_Str MSG_FLOW_3                          = _UxGT("擠出速率 ") LCD_STR_N3;     //"Flow"
232
+  PROGMEM Language_Str MSG_FLOW_4                          = _UxGT("擠出速率 ") LCD_STR_N4;     //"Flow"
233
+  PROGMEM Language_Str MSG_FLOW_5                          = _UxGT("擠出速率 ") LCD_STR_N5;     //"Flow"
234
+  PROGMEM Language_Str MSG_CONTROL                         = _UxGT("控制");     //"Control"
235
+  PROGMEM Language_Str MSG_MIN                             = " " LCD_STR_THERMOMETER _UxGT(" 最小");     //" " LCD_STR_THERMOMETER " Min"
236
+  PROGMEM Language_Str MSG_MAX                             = " " LCD_STR_THERMOMETER _UxGT(" 最大");     //" " LCD_STR_THERMOMETER " Max"
237
+  PROGMEM Language_Str MSG_FACTOR                          = " " LCD_STR_THERMOMETER _UxGT(" 系數");     //" " LCD_STR_THERMOMETER " Fact"
238
+  PROGMEM Language_Str MSG_AUTOTEMP                        = _UxGT("自動控溫");     //"Autotemp"
239
+  PROGMEM Language_Str MSG_LCD_ON                          = _UxGT("開");     //"On"
240
+  PROGMEM Language_Str MSG_LCD_OFF                         = _UxGT("關");     //"Off"
241
+  PROGMEM Language_Str MSG_PID_P                           = _UxGT("PID-P");     //"PID-P"
242
+  PROGMEM Language_Str MSG_PID_P_E0                        = _UxGT("PID-P ") LCD_STR_E0;
243
+  PROGMEM Language_Str MSG_PID_P_E1                        = _UxGT("PID-P ") LCD_STR_E1;
244
+  PROGMEM Language_Str MSG_PID_P_E2                        = _UxGT("PID-P ") LCD_STR_E2;
245
+  PROGMEM Language_Str MSG_PID_P_E3                        = _UxGT("PID-P ") LCD_STR_E3;
246
+  PROGMEM Language_Str MSG_PID_P_E4                        = _UxGT("PID-P ") LCD_STR_E4;
247
+  PROGMEM Language_Str MSG_PID_P_E5                        = _UxGT("PID-P ") LCD_STR_E5;
248
+  PROGMEM Language_Str MSG_PID_I                           = _UxGT("PID-I");     //"PID-I"
249
+  PROGMEM Language_Str MSG_PID_I_E0                        = _UxGT("PID-I ") LCD_STR_E0;
250
+  PROGMEM Language_Str MSG_PID_I_E1                        = _UxGT("PID-I ") LCD_STR_E1;
251
+  PROGMEM Language_Str MSG_PID_I_E2                        = _UxGT("PID-I ") LCD_STR_E2;
252
+  PROGMEM Language_Str MSG_PID_I_E3                        = _UxGT("PID-I ") LCD_STR_E3;
253
+  PROGMEM Language_Str MSG_PID_I_E4                        = _UxGT("PID-I ") LCD_STR_E4;
254
+  PROGMEM Language_Str MSG_PID_I_E5                        = _UxGT("PID-I ") LCD_STR_E5;
255
+  PROGMEM Language_Str MSG_PID_D                           = _UxGT("PID-D");     //"PID-D"
256
+  PROGMEM Language_Str MSG_PID_D_E0                        = _UxGT("PID-D ") LCD_STR_E0;
257
+  PROGMEM Language_Str MSG_PID_D_E1                        = _UxGT("PID-D ") LCD_STR_E1;
258
+  PROGMEM Language_Str MSG_PID_D_E2                        = _UxGT("PID-D ") LCD_STR_E2;
259
+  PROGMEM Language_Str MSG_PID_D_E3                        = _UxGT("PID-D ") LCD_STR_E3;
260
+  PROGMEM Language_Str MSG_PID_D_E4                        = _UxGT("PID-D ") LCD_STR_E4;
261
+  PROGMEM Language_Str MSG_PID_D_E5                        = _UxGT("PID-D ") LCD_STR_E5;
262
+  PROGMEM Language_Str MSG_PID_C                           = _UxGT("PID-C");     //"PID-C"
263
+  PROGMEM Language_Str MSG_PID_C_E0                        = _UxGT("PID-C ") LCD_STR_E0;
264
+  PROGMEM Language_Str MSG_PID_C_E1                        = _UxGT("PID-C ") LCD_STR_E1;
265
+  PROGMEM Language_Str MSG_PID_C_E2                        = _UxGT("PID-C ") LCD_STR_E2;
266
+  PROGMEM Language_Str MSG_PID_C_E3                        = _UxGT("PID-C ") LCD_STR_E3;
267
+  PROGMEM Language_Str MSG_PID_C_E4                        = _UxGT("PID-C ") LCD_STR_E4;
268
+  PROGMEM Language_Str MSG_PID_C_E5                        = _UxGT("PID-C ") LCD_STR_E5;
269
+  PROGMEM Language_Str MSG_SELECT                          = _UxGT("選擇");     //"Select"
270
+  PROGMEM Language_Str MSG_SELECT_E0                       = _UxGT("選擇 ") LCD_STR_E0;
271
+  PROGMEM Language_Str MSG_SELECT_E1                       = _UxGT("選擇 ") LCD_STR_E1;
272
+  PROGMEM Language_Str MSG_SELECT_E2                       = _UxGT("選擇 ") LCD_STR_E2;
273
+  PROGMEM Language_Str MSG_SELECT_E3                       = _UxGT("選擇 ") LCD_STR_E3;
274
+  PROGMEM Language_Str MSG_SELECT_E4                       = _UxGT("選擇 ") LCD_STR_E4;
275
+  PROGMEM Language_Str MSG_SELECT_E5                       = _UxGT("選擇 ") LCD_STR_E5;
276
+  PROGMEM Language_Str MSG_ACC                             = _UxGT("加速度");     //"Accel" acceleration
277
+  PROGMEM Language_Str MSG_JERK                            = _UxGT("抖動速率");     //"Jerk"
278
+  PROGMEM Language_Str MSG_VA_JERK                         = _UxGT("軸抖動速率") LCD_STR_A;     //"Va-jerk"
279
+  PROGMEM Language_Str MSG_VB_JERK                         = _UxGT("軸抖動速率") LCD_STR_B;     //"Vb-jerk"
280
+  PROGMEM Language_Str MSG_VC_JERK                         = _UxGT("軸抖動速率") LCD_STR_C;     //"Vc-jerk"
281
+  PROGMEM Language_Str MSG_VE_JERK                         = _UxGT("擠出機抖動速率");     //"Ve-jerk"
282
+  PROGMEM Language_Str MSG_VELOCITY                        = _UxGT("速度");     // "Velocity"
283
+  PROGMEM Language_Str MSG_VMAX_A                          = _UxGT("最大進料速率") LCD_STR_A;     //"Vmax " max_feedrate_mm_s
284
+  PROGMEM Language_Str MSG_VMAX_B                          = _UxGT("最大進料速率") LCD_STR_B;
285
+  PROGMEM Language_Str MSG_VMAX_C                          = _UxGT("最大進料速率") LCD_STR_C;
286
+  PROGMEM Language_Str MSG_VMAX_E                          = _UxGT("最大進料速率") LCD_STR_E;
287
+  PROGMEM Language_Str MSG_VMAX_E0                         = _UxGT("最大進料速率 ") LCD_STR_E0;     //"Vmax " max_feedrate_mm_s
288
+  PROGMEM Language_Str MSG_VMAX_E1                         = _UxGT("最大進料速率 ") LCD_STR_E1;
289
+  PROGMEM Language_Str MSG_VMAX_E2                         = _UxGT("最大進料速率 ") LCD_STR_E2;
290
+  PROGMEM Language_Str MSG_VMAX_E3                         = _UxGT("最大進料速率 ") LCD_STR_E3;
291
+  PROGMEM Language_Str MSG_VMAX_E4                         = _UxGT("最大進料速率 ") LCD_STR_E4;
292
+  PROGMEM Language_Str MSG_VMAX_E5                         = _UxGT("最大進料速率 ") LCD_STR_E5;
293
+  PROGMEM Language_Str MSG_VMIN                            = _UxGT("最小進料速率");     //"Vmin"  min_feedrate_mm_s
294
+  PROGMEM Language_Str MSG_VTRAV_MIN                       = _UxGT("最小移動速率");     //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
295
+  PROGMEM Language_Str MSG_ACCELERATION                    = _UxGT("加速度");     // "Acceleration"
296
+  PROGMEM Language_Str MSG_AMAX_A                          = _UxGT("最大列印加速度") LCD_STR_A;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
297
+  PROGMEM Language_Str MSG_AMAX_B                          = _UxGT("最大列印加速度") LCD_STR_B;
298
+  PROGMEM Language_Str MSG_AMAX_C                          = _UxGT("最大列印加速度") LCD_STR_C;
299
+  PROGMEM Language_Str MSG_AMAX_E                          = _UxGT("最大列印加速度") LCD_STR_E;
300
+  PROGMEM Language_Str MSG_AMAX_E0                         = _UxGT("最大列印加速度 ") LCD_STR_E0;     //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
301
+  PROGMEM Language_Str MSG_AMAX_E1                         = _UxGT("最大列印加速度 ") LCD_STR_E1;
302
+  PROGMEM Language_Str MSG_AMAX_E2                         = _UxGT("最大列印加速度 ") LCD_STR_E2;
303
+  PROGMEM Language_Str MSG_AMAX_E3                         = _UxGT("最大列印加速度 ") LCD_STR_E3;
304
+  PROGMEM Language_Str MSG_AMAX_E4                         = _UxGT("最大列印加速度 ") LCD_STR_E4;
305
+  PROGMEM Language_Str MSG_AMAX_E5                         = _UxGT("最大列印加速度 ") LCD_STR_E5;
306
+  PROGMEM Language_Str MSG_A_RETRACT                       = _UxGT("回縮加速度");     //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
307
+  PROGMEM Language_Str MSG_A_TRAVEL                        = _UxGT("非列印移動加速度");     //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
308
+  PROGMEM Language_Str MSG_STEPS_PER_MM                    = _UxGT("軸步數/mm");     //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
309
+  PROGMEM Language_Str MSG_A_STEPS                         = LCD_STR_A _UxGT("軸步數/mm");     //"Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
310
+  PROGMEM Language_Str MSG_B_STEPS                         = LCD_STR_B _UxGT("軸步數/mm");
311
+  PROGMEM Language_Str MSG_C_STEPS                         = LCD_STR_C _UxGT("軸步數/mm");
312
+  PROGMEM Language_Str MSG_E_STEPS                         = _UxGT("擠出機步數/mm");     //"Esteps/mm"
313
+  PROGMEM Language_Str MSG_E0_STEPS                        = _UxGT("擠出機") LCD_STR_N0 _UxGT("步數/mm");
314
+  PROGMEM Language_Str MSG_E1_STEPS                        = _UxGT("擠出機") LCD_STR_N1 _UxGT("步數/mm");
315
+  PROGMEM Language_Str MSG_E2_STEPS                        = _UxGT("擠出機") LCD_STR_N2 _UxGT("步數/mm");
316
+  PROGMEM Language_Str MSG_E3_STEPS                        = _UxGT("擠出機") LCD_STR_N3 _UxGT("步數/mm");
317
+  PROGMEM Language_Str MSG_E4_STEPS                        = _UxGT("擠出機") LCD_STR_N4 _UxGT("步數/mm");
318
+  PROGMEM Language_Str MSG_E5_STEPS                        = _UxGT("擠出機") LCD_STR_N5 _UxGT("步數/mm");
319
+  PROGMEM Language_Str MSG_TEMPERATURE                     = _UxGT("溫度");     //"Temperature"
320
+  PROGMEM Language_Str MSG_MOTION                          = _UxGT("運作");     //"Motion"
321
+  PROGMEM Language_Str MSG_FILAMENT                        = _UxGT("絲料測容");     //"Filament" menu_control_volumetric
322
+  PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED              = _UxGT("測容積mm³");     //"E in mm3" volumetric_enabled
323
+  PROGMEM Language_Str MSG_FILAMENT_DIAM                   = _UxGT("絲料直徑");     //"Fil. Dia."
324
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E0                = _UxGT("絲料直徑 ") LCD_STR_E0;
325
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E1                = _UxGT("絲料直徑 ") LCD_STR_E1;
326
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E2                = _UxGT("絲料直徑 ") LCD_STR_E2;
327
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E3                = _UxGT("絲料直徑 ") LCD_STR_E3;
328
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E4                = _UxGT("絲料直徑 ") LCD_STR_E4;
329
+  PROGMEM Language_Str MSG_FILAMENT_DIAM_E5                = _UxGT("絲料直徑 ") LCD_STR_E5;
330
+  PROGMEM Language_Str MSG_FILAMENT_UNLOAD                 = _UxGT("卸載 mm");     // "Unload mm"
331
+  PROGMEM Language_Str MSG_FILAMENT_LOAD                   = _UxGT("装載 mm");     // "Load mm"
332
+  PROGMEM Language_Str MSG_CONTRAST                        = _UxGT("LCD對比度");     //"LCD contrast"
333
+  PROGMEM Language_Str MSG_STORE_EEPROM                    = _UxGT("保存設置");     //"Store memory"
334
+  PROGMEM Language_Str MSG_LOAD_EEPROM                     = _UxGT("載入設置");     //"Load memory"
335
+  PROGMEM Language_Str MSG_RESTORE_FAILSAFE                = _UxGT("恢復安全值");     //"Restore failsafe"
336
+  PROGMEM Language_Str MSG_INIT_EEPROM                     = _UxGT("初始化設置");     // "Initialize EEPROM"
337
+  PROGMEM Language_Str MSG_REFRESH                         = LCD_STR_REFRESH  _UxGT("刷新");     //"Refresh"
338
+  PROGMEM Language_Str MSG_WATCH                           = _UxGT("資訊界面");     //"Info screen"
339
+  PROGMEM Language_Str MSG_PREPARE                         = _UxGT("準備");     //"Prepare"
340
+  PROGMEM Language_Str MSG_TUNE                            = _UxGT("調整");     //"Tune"
341
+  PROGMEM Language_Str MSG_PAUSE_PRINT                     = _UxGT("暫停列印");     //"Pause print"
342
+  PROGMEM Language_Str MSG_RESUME_PRINT                    = _UxGT("恢復列印");     //"Resume print"
343
+  PROGMEM Language_Str MSG_STOP_PRINT                      = _UxGT("停止列印");     //"Stop print"
344
+  PROGMEM Language_Str MSG_MEDIA_MENU                      = _UxGT("從記憶卡上列印");     //"Print from SD"
345
+  PROGMEM Language_Str MSG_NO_MEDIA                        = _UxGT("無記憶卡");     //"No SD card"
346
+  PROGMEM Language_Str MSG_DWELL                           = _UxGT("休眠 ...");     //"Sleep..."
347
+  PROGMEM Language_Str MSG_USERWAIT                        = _UxGT("點擊繼續 ...");     //"Click to resume..."
348
+  PROGMEM Language_Str MSG_PRINT_PAUSED                    = _UxGT("列印已暫停");     // "Print paused"
349
+  PROGMEM Language_Str MSG_PRINT_ABORTED                   = _UxGT("已取消列印");     //"Print aborted"
350
+  PROGMEM Language_Str MSG_NO_MOVE                         = _UxGT("無移動");     //"No move."
351
+  PROGMEM Language_Str MSG_KILLED                          = _UxGT("已砍掉");     //"KILLED. "
352
+  PROGMEM Language_Str MSG_STOPPED                         = _UxGT("已停止");     //"STOPPED. "
353
+  PROGMEM Language_Str MSG_CONTROL_RETRACT                 = _UxGT("回縮長度mm");     //"Retract mm" retract_length, retract length (positive mm)
354
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP            = _UxGT("換手回抽長度mm");     //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
355
+  PROGMEM Language_Str MSG_CONTROL_RETRACTF                = _UxGT("回縮速率mm/s");     //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
356
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP            = _UxGT("Hop mm");     //"Hop mm" retract_zraise, retract Z-lift
357
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER         = _UxGT("回縮恢復長度mm");     //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
358
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP    = _UxGT("換手回縮恢復長度mm");     //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
359
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF        = _UxGT("回縮恢復後進料速率mm/s");     //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
360
+  PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF   = _UxGT("S UnRet V");     // "S UnRet V"
361
+  PROGMEM Language_Str MSG_AUTORETRACT                     = _UxGT("自動回縮");     //"AutoRetr." autoretract_enabled,
362
+  PROGMEM Language_Str MSG_FILAMENTCHANGE                  = _UxGT("更換絲料");     //"Change filament"
363
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E0               = _UxGT("更換絲料 ") LCD_STR_E0;
364
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E1               = _UxGT("更換絲料 ") LCD_STR_E1;
365
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E2               = _UxGT("更換絲料 ") LCD_STR_E2;
366
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E3               = _UxGT("更換絲料 ") LCD_STR_E3;
367
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E4               = _UxGT("更換絲料 ") LCD_STR_E4;
368
+  PROGMEM Language_Str MSG_FILAMENTCHANGE_E5               = _UxGT("更換絲料 ") LCD_STR_E5;
369
+  PROGMEM Language_Str MSG_FILAMENTLOAD                    = _UxGT("裝載絲料");     // "Load filament"
370
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E0                 = _UxGT("裝載絲料 ") LCD_STR_E0;
371
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E1                 = _UxGT("裝載絲料 ") LCD_STR_E1;
372
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E2                 = _UxGT("裝載絲料 ") LCD_STR_E2;
373
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E3                 = _UxGT("裝載絲料 ") LCD_STR_E3;
374
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E4                 = _UxGT("裝載絲料 ") LCD_STR_E4;
375
+  PROGMEM Language_Str MSG_FILAMENTLOAD_E5                 = _UxGT("裝載絲料 ") LCD_STR_E5;
376
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0               = _UxGT("卸載絲料 ") LCD_STR_E0;     // "Unload filament"
377
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1               = _UxGT("卸載絲料 ") LCD_STR_E1;
378
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2               = _UxGT("卸載絲料 ") LCD_STR_E2;
379
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3               = _UxGT("卸載絲料 ") LCD_STR_E3;
380
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4               = _UxGT("卸載絲料 ") LCD_STR_E4;
381
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5               = _UxGT("卸載絲料 ") LCD_STR_E5;
382
+  PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL              = _UxGT("卸載全部");     // "Unload All"
383
+  PROGMEM Language_Str MSG_INIT_MEDIA                      = _UxGT("初始化記憶卡");     //"Init. SD card"
384
+  PROGMEM Language_Str MSG_CHANGE_MEDIA                    = _UxGT("更換記憶卡");     //"Change SD card"
385
+  PROGMEM Language_Str MSG_ZPROBE_OUT                      = _UxGT("Z探針在熱床之外");     //"Z probe out. bed" Z probe is not within the physical limits
386
+  PROGMEM Language_Str MSG_SKEW_FACTOR                     = _UxGT("偏斜因數");     // "Skew Factor"
387
+  PROGMEM Language_Str MSG_BLTOUCH                         = _UxGT("BLTouch");     // "BLTouch"
388
+  PROGMEM Language_Str MSG_BLTOUCH_SELFTEST                = _UxGT("BLTouch 自檢");     // "BLTouch Self-Test"
389
+  PROGMEM Language_Str MSG_BLTOUCH_RESET                   = _UxGT("重置BLTouch");     // "Reset BLTouch"
390
+  PROGMEM Language_Str MSG_BLTOUCH_DEPLOY                  = _UxGT("部署BLTouch");     // "Deploy BLTouch"
391
+  PROGMEM Language_Str MSG_BLTOUCH_STOW                    = _UxGT("裝載BLTouch");     // "Stow BLTouch"
392
+  PROGMEM Language_Str MSG_HOME_FIRST                      = _UxGT("歸位 %s%s%s 先");     //"Home ... first"
393
+  PROGMEM Language_Str MSG_ZPROBE_ZOFFSET                  = _UxGT("Z偏移");     //"Z Offset"
394
+  PROGMEM Language_Str MSG_BABYSTEP_X                      = _UxGT("微量調整X軸");     //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
395
+  PROGMEM Language_Str MSG_BABYSTEP_Y                      = _UxGT("微量調整Y軸");     //"Babystep Y"
396
+  PROGMEM Language_Str MSG_BABYSTEP_Z                      = _UxGT("微量調整Z軸");     //"Babystep Z"
397
+  PROGMEM Language_Str MSG_ENDSTOP_ABORT                   = _UxGT("擋塊終止");     //"Endstop abort"
398
+  PROGMEM Language_Str MSG_HEATING_FAILED_LCD              = _UxGT("加熱失敗");     //"Heating failed"
399
+  PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP              = _UxGT("錯誤:REDUNDANT TEMP");     //"Err: REDUNDANT TEMP"
400
+  PROGMEM Language_Str MSG_THERMAL_RUNAWAY                 = _UxGT("溫控失控");     //"THERMAL RUNAWAY"
401
+  PROGMEM Language_Str MSG_ERR_MAXTEMP                     = _UxGT("錯誤:最高溫度");     //"Err: MAXTEMP"
402
+  PROGMEM Language_Str MSG_ERR_MINTEMP                     = _UxGT("錯誤:最低溫度");     //"Err: MINTEMP"
403
+  PROGMEM Language_Str MSG_ERR_MAXTEMP_BED                 = _UxGT("錯誤:最高熱床溫度");     //"Err: MAXTEMP BED"
404
+  PROGMEM Language_Str MSG_ERR_MINTEMP_BED                 = _UxGT("錯誤:最低熱床溫度");     //"Err: MINTEMP BED"
405
+  PROGMEM Language_Str MSG_ERR_Z_HOMING                    = _UxGT("歸位 XY 先");     //"Home XY First"
406
+  PROGMEM Language_Str MSG_HALTED                          = _UxGT("印表機停機");     //"PRINTER HALTED"
407
+  PROGMEM Language_Str MSG_PLEASE_RESET                    = _UxGT("請重置");     //"Please reset"
408
+  PROGMEM Language_Str MSG_SHORT_DAY                       = _UxGT("天");     //"d" // One character only
409
+  PROGMEM Language_Str MSG_SHORT_HOUR                      = _UxGT("時");     //"h" // One character only
410
+  PROGMEM Language_Str MSG_SHORT_MINUTE                    = _UxGT("分");     //"m" // One character only
411
+  PROGMEM Language_Str MSG_HEATING                         = _UxGT("加熱中 ...");     //"Heating..."
412
+  PROGMEM Language_Str MSG_BED_HEATING                     = _UxGT("加熱熱床中 ...");     //"Bed Heating..."
413
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE                 = _UxGT("⊿校準");     //"Delta Calibration"
414
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_X               = _UxGT("⊿校準X");     //"Calibrate X"
415
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y               = _UxGT("⊿校準Y");     //"Calibrate Y"
416
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z               = _UxGT("⊿校準Z");     //"Calibrate Z"
417
+  PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER          = _UxGT("⊿校準中心");     //"Calibrate Center"
418
+  PROGMEM Language_Str MSG_DELTA_SETTINGS                  = _UxGT("⊿設置");     // "Delta Settings"
419
+  PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE            = _UxGT("⊿自動校準");     // "Auto Calibration"
420
+  PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE          = _UxGT("設置⊿高度");     // "Set Delta Height"
421
+  PROGMEM Language_Str MSG_DELTA_DIAG_ROD                  = _UxGT("⊿斜柱");     // "Diag Rod"
422
+  PROGMEM Language_Str MSG_DELTA_HEIGHT                    = _UxGT("⊿高度");     // "Height"
423
+  PROGMEM Language_Str MSG_DELTA_RADIUS                    = _UxGT("⊿半徑");     // "Radius"
424
+  PROGMEM Language_Str MSG_INFO_MENU                       = _UxGT("關於印表機");     //"About Printer"
425
+  PROGMEM Language_Str MSG_INFO_PRINTER_MENU               = _UxGT("印表機訊息");     //"Printer Info"
426
+  PROGMEM Language_Str MSG_3POINT_LEVELING                 = _UxGT("三點調平");     // "3-Point Leveling"
427
+  PROGMEM Language_Str MSG_LINEAR_LEVELING                 = _UxGT("線性調平");     // "Linear Leveling"
428
+  PROGMEM Language_Str MSG_BILINEAR_LEVELING               = _UxGT("雙線性調平");     // "Bilinear Leveling"
429
+  PROGMEM Language_Str MSG_UBL_LEVELING                    = _UxGT("統一熱床調平(UBL)");     // "Unified Bed Leveling"
430
+  PROGMEM Language_Str MSG_MESH_LEVELING                   = _UxGT("網格調平");     // "Mesh Leveling"
431
+  PROGMEM Language_Str MSG_INFO_STATS_MENU                 = _UxGT("印表機統計");     //"Printer Stats"
432
+  PROGMEM Language_Str MSG_INFO_BOARD_MENU                 = _UxGT("主板訊息");     //"Board Info"
433
+  PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU            = _UxGT("溫度計");     //"Thermistors"
434
+  PROGMEM Language_Str MSG_INFO_EXTRUDERS                  = _UxGT("擠出機");     //"Extruders"
435
+  PROGMEM Language_Str MSG_INFO_BAUDRATE                   = _UxGT("傳輸率");     //"Baud"
436
+  PROGMEM Language_Str MSG_INFO_PROTOCOL                   = _UxGT("協議");     //"Protocol"
437
+  PROGMEM Language_Str MSG_CASE_LIGHT                      = _UxGT("外殼燈");     // "Case light"
438
+  PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS           = _UxGT("燈亮度");     // "Light BRIGHTNESS"
323 439
 
324
-#define MSG_EXPECTED_PRINTER                _UxGT("打印機不正確") // "The printer is incorrect"
440
+  PROGMEM Language_Str MSG_EXPECTED_PRINTER                = _UxGT("打印機不正確");     // "The printer is incorrect"
325 441
 
326
-#if LCD_WIDTH >= 20
327
-  #define MSG_INFO_PRINT_COUNT              _UxGT("列印計數")  //"Print Count"
328
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("已完成")  //"Completed"
329
-  #define MSG_INFO_PRINT_TIME               _UxGT("總列印時間")  //"Total print time"
330
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("最長工作時間")  //"Longest job time"
331
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("總計擠出")  //"Extruded total"
332
-#else
333
-  #define MSG_INFO_PRINT_COUNT              _UxGT("列印數")  //"Prints"
334
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("完成")  //"Completed"
335
-  #define MSG_INFO_PRINT_TIME               _UxGT("總共")  //"Total"
336
-  #define MSG_INFO_PRINT_LONGEST            _UxGT("最長")  //"Longest"
337
-  #define MSG_INFO_PRINT_FILAMENT           _UxGT("已擠出")  //"Extruded"
338
-#endif
442
+  #if LCD_WIDTH >= 20
443
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("列印計數");     //"Print Count"
444
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("已完成");     //"Completed"
445
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("總列印時間");     //"Total print time"
446
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("最長工作時間");     //"Longest job time"
447
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("總計擠出");     //"Extruded total"
448
+  #else
449
+    PROGMEM Language_Str MSG_INFO_PRINT_COUNT              = _UxGT("列印數");     //"Prints"
450
+    PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS         = _UxGT("完成");     //"Completed"
451
+    PROGMEM Language_Str MSG_INFO_PRINT_TIME               = _UxGT("總共");     //"Total"
452
+    PROGMEM Language_Str MSG_INFO_PRINT_LONGEST            = _UxGT("最長");     //"Longest"
453
+    PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT           = _UxGT("已擠出");     //"Extruded"
454
+  #endif
339 455
 
340
-#define MSG_INFO_MIN_TEMP                   _UxGT("最低溫度")  //"Min Temp"
341
-#define MSG_INFO_MAX_TEMP                   _UxGT("最高溫度")  //"Max Temp"
342
-#define MSG_INFO_PSU                        _UxGT("電源供應")  //"Power Supply"
343
-#define MSG_DRIVE_STRENGTH                  _UxGT("驅動力度") // "Drive Strength"
344
-#define MSG_DAC_PERCENT                     _UxGT("驅動 %") // "Driver %"
345
-#define MSG_DAC_EEPROM_WRITE                _UxGT("保存驅動設置") // "DAC EEPROM Write"
346
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("列印已暫停") // "PRINT PAUSED"
347
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD     _UxGT("裝載絲料") // "LOAD FILAMENT"
348
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD   _UxGT("卸載絲料") // "UNLOAD FILAMENT"
349
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("恢複選項:") // "RESUME OPTIONS:"
350
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("清除更多") // "Purge more"
351
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("恢復列印")  //"Resume print"
352
-#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  噴嘴: ") // "  Nozzle: "
353
-#define MSG_ERR_HOMING_FAILED               _UxGT("歸原位失敗") // "Homing failed"
354
-#define MSG_ERR_PROBING_FAILED              _UxGT("探針探測失敗") // "Probing failed"
355
-#define MSG_M600_TOO_COLD                   _UxGT("M600: 太涼") // "M600: Too cold"
456
+  PROGMEM Language_Str MSG_INFO_MIN_TEMP                   = _UxGT("最低溫度");     //"Min Temp"
457
+  PROGMEM Language_Str MSG_INFO_MAX_TEMP                   = _UxGT("最高溫度");     //"Max Temp"
458
+  PROGMEM Language_Str MSG_INFO_PSU                        = _UxGT("電源供應");     //"Power Supply"
459
+  PROGMEM Language_Str MSG_DRIVE_STRENGTH                  = _UxGT("驅動力度");     // "Drive Strength"
460
+  PROGMEM Language_Str MSG_DAC_PERCENT                     = _UxGT("驅動 %");     // "Driver %"
461
+  PROGMEM Language_Str MSG_DAC_EEPROM_WRITE                = _UxGT("保存驅動設置");     // "DAC EEPROM Write"
462
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE    = _UxGT("列印已暫停");     // "PRINT PAUSED"
463
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD     = _UxGT("裝載絲料");     // "LOAD FILAMENT"
464
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD   = _UxGT("卸載絲料");     // "UNLOAD FILAMENT"
465
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER   = _UxGT("恢複選項:");     // "RESUME OPTIONS:"
466
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE    = _UxGT("清除更多");     // "Purge more"
467
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME   = _UxGT("恢復列印");     //"Resume print"
468
+  PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE          = _UxGT("  噴嘴: ");     // "  Nozzle: "
469
+  PROGMEM Language_Str MSG_LCD_HOMING_FAILED               = _UxGT("歸原位失敗");     // "Homing failed"
470
+  PROGMEM Language_Str MSG_LCD_PROBING_FAILED              = _UxGT("探針探測失敗");     // "Probing failed"
471
+  PROGMEM Language_Str MSG_M600_TOO_COLD                   = _UxGT("M600: 太冷");     // "M600: Too cold"
356 472
 
357
-#if LCD_HEIGHT >= 4
358
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("等待開始")  //"Wait for start"
359
-  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("絲料")  //"of the filament"
360
-  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("變更")  //"change"
361
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("等待")  //"Wait for"
362
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("卸下絲料")  //"filament unload"
363
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("插入絲料")  //"Insert filament"
364
-  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("並按鍵")  //"and press button"
365
-  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("繼續 ...")  //"to continue..."
366
-  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("按下按鈕來") // "Press button to"
367
-  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("加熱噴嘴.") // "heat nozzle."
368
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("加熱噴嘴") // "Heating nozzle"
369
-  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("請等待 ...") // "Please wait..."
370
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("等待")  //"Wait for"
371
-  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("進料")  //"filament load"
372
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("等待") // "Wait for"
373
-  #define MSG_FILAMENT_CHANGE_PURGE_2       _UxGT("絲料清除") // "filament purge"
374
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("等待列印")  //"Wait for print"
375
-  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("恢復")  //"to resume"
376
-#else // LCD_HEIGHT < 4
377
-  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("請等待 ...")  //"Please wait..."
378
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("退出中 ...")  //"Ejecting..."
379
-  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("插入並點擊")  //"Insert and Click"
380
-  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("加熱中 ...") // "Heating..."
381
-  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("載入中 ...")  //"Loading..."
382
-  #define MSG_FILAMENT_CHANGE_PURGE_1       _UxGT("清除中 ...") // "Purging..."
383
-  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("恢復中 ...")  //"Resuming..."
384
-#endif // LCD_HEIGHT < 4
473
+  #if LCD_HEIGHT >= 4
474
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更"));     //"Wait for start of the filament change"
475
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_2_LINE("等待", "卸下絲料"));     //"Wait for filament unload"
476
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ..."));     //"Insert filament and press button to continue..."
477
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT          = _UxGT(MSG_2_LINE("按下按鈕來", "加熱噴嘴."));     // "Press button to heat nozzle."
478
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ..."));     // "Heating nozzle Please wait..."
479
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_2_LINE("等待", "進料"));     //"Wait for filament load"
480
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_2_LINE("等待", "絲料清除"));     // "Wait for filament purge"
481
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_2_LINE("等待列印", "恢復"));     //"Wait for print to resume"
482
+  #else // LCD_HEIGHT < 4
483
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT          = _UxGT(MSG_1_LINE("請等待 ..."));     //"Please wait..."
484
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD        = _UxGT(MSG_1_LINE("退出中 ..."));     //"Ejecting..."
485
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT        = _UxGT(MSG_1_LINE("插入並點擊"));     //"Insert and Click"
486
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING       = _UxGT(MSG_1_LINE("加熱中 ..."));     // "Heating..."
487
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD          = _UxGT(MSG_1_LINE("載入中 ..."));     //"Loading..."
488
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE         = _UxGT(MSG_1_LINE("清除中 ..."));     // "Purging..."
489
+    PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME        = _UxGT(MSG_1_LINE("恢復中 ..."));     //"Resuming..."
490
+  #endif // LCD_HEIGHT < 4
491
+}

+ 5
- 6
Marlin/src/lcd/menu/menu.cpp Zobrazit soubor

@@ -138,7 +138,7 @@ void MenuItem_gcode::action(PGM_P const, PGM_P const pgcode) { queue.inject_P(pg
138 138
  *   EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
139 139
  *
140 140
  * This expands into a more primitive menu item:
141
- *  _MENU_ITEM_P(int3, false, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
141
+ *  _MENU_ITEM_P(int3, false, GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
142 142
  *
143 143
  * ...which calls:
144 144
  *       MenuItem_int3::action(plabel, &feedrate_percentage, 10, 999)
@@ -324,8 +324,7 @@ void MarlinUI::_synchronize() {
324 324
 // Display the synchronize screen with a custom message
325 325
 // ** This blocks the command queue! **
326 326
 void MarlinUI::synchronize(PGM_P const msg/*=nullptr*/) {
327
-  static const char moving[] PROGMEM = MSG_MOVING;
328
-  sync_message = msg ? msg : moving;
327
+  sync_message = msg ?: GET_TEXT(MSG_MOVING);
329 328
   _synchronize();
330 329
 }
331 330
 
@@ -419,10 +418,10 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
419 418
     if (ui.should_draw()) {
420 419
       #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
421 420
         if (!do_probe)
422
-          draw_edit_screen(PSTR(MSG_Z_OFFSET), ftostr43sign(hotend_offset[active_extruder].z));
421
+          draw_edit_screen(GET_TEXT(MSG_Z_OFFSET), ftostr43sign(hotend_offset[active_extruder].z));
423 422
         else
424 423
       #endif
425
-          draw_edit_screen(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(probe_offset.z));
424
+          draw_edit_screen(GET_TEXT(MSG_ZPROBE_ZOFFSET), ftostr43sign(probe_offset.z));
426 425
 
427 426
       #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
428 427
         if (do_probe) _lcd_zoffset_overlay_gfx(probe_offset.z);
@@ -467,7 +466,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
467 466
 
468 467
 void _lcd_draw_homing() {
469 468
   constexpr uint8_t line = (LCD_HEIGHT - 1) / 2;
470
-  if (ui.should_draw()) draw_menu_item_static(line, PSTR(MSG_LEVEL_BED_HOMING));
469
+  if (ui.should_draw()) draw_menu_item_static(line, GET_TEXT(MSG_LEVEL_BED_HOMING));
471 470
   ui.refresh(LCDVIEW_CALL_NO_REDRAW);
472 471
 }
473 472
 

+ 31
- 20
Marlin/src/lcd/menu/menu.h Zobrazit soubor

@@ -75,16 +75,17 @@ typedef void (*selectFunc_t)();
75 75
 void draw_select_screen(PGM_P const yes, PGM_P const no, const bool yesno, PGM_P const pref, const char * const string, PGM_P const suff);
76 76
 void do_select_screen(PGM_P const yes, PGM_P const no, selectFunc_t yesFunc, selectFunc_t noFunc, PGM_P const pref, const char * const string=nullptr, PGM_P const suff=nullptr);
77 77
 inline void do_select_screen_yn(selectFunc_t yesFunc, selectFunc_t noFunc, PGM_P const pref, const char * const string=nullptr, PGM_P const suff=nullptr) {
78
-  do_select_screen(PSTR(MSG_YES), PSTR(MSG_NO), yesFunc, noFunc, pref, string, suff);
78
+  do_select_screen(GET_TEXT(MSG_YES), GET_TEXT(MSG_NO), yesFunc, noFunc, pref, string, suff);
79 79
 }
80 80
 
81
-#define SS_LEFT   0x00
82
-#define SS_CENTER 0x01
83
-#define SS_INVERT 0x02
81
+#define SS_LEFT    0x00
82
+#define SS_CENTER  0x01
83
+#define SS_INVERT  0x02
84
+#define SS_DEFAULT SS_CENTER
84 85
 
85 86
 void draw_edit_screen(PGM_P const pstr, const char* const value=nullptr);
86 87
 void draw_menu_item(const bool sel, const uint8_t row, PGM_P const pstr, const char pre_char, const char post_char);
87
-void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style=SS_CENTER, const char * const valstr=nullptr);
88
+void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style=SS_DEFAULT, const char * const valstr=nullptr);
88 89
 void _draw_menu_item_edit(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm);
89 90
 FORCE_INLINE void draw_menu_item_back(const bool sel, const uint8_t row, PGM_P const pstr) { draw_menu_item(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]); }
90 91
 FORCE_INLINE void draw_menu_item_edit(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data) { _draw_menu_item_edit(sel, row, pstr, data, false); }
@@ -93,7 +94,7 @@ FORCE_INLINE void draw_menu_item_edit_P(const bool sel, const uint8_t row, PGM_P
93 94
 #define draw_menu_item_gcode(sel, row, pstr, gcode)   draw_menu_item(sel, row, pstr, '>', ' ')
94 95
 #define draw_menu_item_function(sel, row, pstr, data) draw_menu_item(sel, row, pstr, '>', ' ')
95 96
 #define DRAW_MENU_ITEM_SETTING_EDIT_GENERIC(VAL)      draw_menu_item_edit(sel, row, pstr, VAL)
96
-#define DRAW_BOOL_SETTING(sel, row, pstr, data)       draw_menu_item_edit_P(sel, row, pstr, (*(data))?PSTR(MSG_LCD_ON):PSTR(MSG_LCD_OFF))
97
+#define DRAW_BOOL_SETTING(sel, row, pstr, data)       draw_menu_item_edit_P(sel, row, pstr, (*(data))?GET_TEXT(MSG_LCD_ON):GET_TEXT(MSG_LCD_OFF))
97 98
 
98 99
 #if ENABLED(SDSUPPORT)
99 100
   class CardReader;
@@ -321,17 +322,17 @@ class MenuItem_bool {
321 322
  * Examples:
322 323
  *   BACK_ITEM(MSG_WATCH)
323 324
  *   MENU_ITEM(back, MSG_WATCH)
324
- *     draw_menu_item_back(sel, row, PSTR(MSG_WATCH))
325
+ *     draw_menu_item_back(sel, row, GET_TEXT(MSG_WATCH))
325 326
  *     MenuItem_back::action()
326 327
  *
327 328
  *   ACTION_ITEM(MSG_PAUSE_PRINT, lcd_sdcard_pause)
328 329
  *   MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause)
329
- *     draw_menu_item_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause)
330
+ *     draw_menu_item_function(sel, row, GET_TEXT(MSG_PAUSE_PRINT), lcd_sdcard_pause)
330 331
  *     MenuItem_function::action(lcd_sdcard_pause)
331 332
  *
332 333
  *   EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
333
- *     draw_menu_item_int3(sel, row, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
334
- *     MenuItem_int3::action(PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
334
+ *     draw_menu_item_int3(sel, row, GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
335
+ *     MenuItem_int3::action(GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
335 336
  *
336 337
  */
337 338
 #define _MENU_ITEM_P(TYPE, USE_MULTIPLIER, PLABEL, V...) do {  \
@@ -370,18 +371,28 @@ class MenuItem_bool {
370 371
 
371 372
 #define MENU_ITEM_ADDON_END() } }while(0)
372 373
 
373
-#define STATIC_ITEM(LABEL, V...) STATIC_ITEM_P(PSTR(LABEL), ##V)
374
+#define STATIC_ITEM(LABEL, V...) STATIC_ITEM_P(GET_TEXT(LABEL), ##V)
374 375
 
375
-#define MENU_ITEM_P(TYPE, PLABEL, V...)   _MENU_ITEM_P(TYPE, false, PLABEL,      ##V)
376
-#define MENU_ITEM(TYPE, LABEL, V...)      _MENU_ITEM_P(TYPE, false, PSTR(LABEL), ##V)
377
-#define EDIT_ITEM(TYPE, LABEL, V...)      _MENU_ITEM_P(TYPE, false, PSTR(LABEL), ##V)
378
-#define EDIT_ITEM_FAST(TYPE, LABEL, V...) _MENU_ITEM_P(TYPE,  true, PSTR(LABEL), ##V)
376
+#define MENU_ITEM_P(TYPE, PLABEL, V...)       _MENU_ITEM_P(TYPE, false, PLABEL, ##V)
377
+#define MENU_ITEM(TYPE, LABEL, V...)           MENU_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
379 378
 
380
-#define SKIP_ITEM()                 (_thisItemNr++)
381
-#define BACK_ITEM(LABEL)            MENU_ITEM(back,LABEL)
382
-#define SUBMENU(LABEL, DEST)        MENU_ITEM(submenu, LABEL, DEST)
383
-#define GCODES_ITEM(LABEL, GCODES)  MENU_ITEM(gcode, LABEL, GCODES)
384
-#define ACTION_ITEM(LABEL, ACTION)  MENU_ITEM(function, LABEL, ACTION)
379
+#define EDIT_ITEM_P(TYPE, PLABEL, V...)        MENU_ITEM_P(TYPE, PLABEL, ##V)
380
+#define EDIT_ITEM(TYPE, LABEL, V...)           EDIT_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
381
+
382
+#define EDIT_ITEM_FAST_P(TYPE, PLABEL, V...)  _MENU_ITEM_P(TYPE, true, PLABEL, ##V)
383
+#define EDIT_ITEM_FAST(TYPE, LABEL, V...) EDIT_ITEM_FAST_P(TYPE, GET_TEXT(LABEL), ##V)
384
+
385
+#define ACTION_ITEM_P(PLABEL, ACTION)          MENU_ITEM_P(function, PLABEL, ACTION)
386
+#define ACTION_ITEM(LABEL, ACTION)           ACTION_ITEM_P(GET_TEXT(LABEL), ACTION)
387
+
388
+#define GCODES_ITEM_P(PLABEL, GCODES)          MENU_ITEM_P(gcode, PLABEL, GCODES)
389
+#define GCODES_ITEM(LABEL, GCODES)           GCODES_ITEM_P(GET_TEXT(LABEL), GCODES)
390
+
391
+#define SUBMENU_P(PLABEL, DEST)                MENU_ITEM_P(submenu, PLABEL, DEST)
392
+#define SUBMENU(LABEL, DEST)                     SUBMENU_P(GET_TEXT(LABEL), DEST)
393
+
394
+#define BACK_ITEM(LABEL)                         MENU_ITEM(back, LABEL)
395
+#define SKIP_ITEM() (_thisItemNr++)
385 396
 
386 397
 ////////////////////////////////////////////
387 398
 /////////////// Menu Screens ///////////////

+ 83
- 44
Marlin/src/lcd/menu/menu_advanced.cpp Zobrazit soubor

@@ -78,7 +78,7 @@ void menu_backlash();
78 78
   void menu_pwm() {
79 79
     START_MENU();
80 80
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
81
-    #define EDIT_CURRENT_PWM(LABEL,I) EDIT_ITEM(long5, LABEL, &stepper.motor_current_setting[I], 100, 2000, stepper.refresh_motor_power)
81
+    #define EDIT_CURRENT_PWM(LABEL,I) EDIT_ITEM_P(long5, PSTR(LABEL), &stepper.motor_current_setting[I], 100, 2000, stepper.refresh_motor_power)
82 82
     #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
83 83
       EDIT_CURRENT_PWM(MSG_X MSG_Y, 0);
84 84
     #endif
@@ -109,7 +109,7 @@ void menu_backlash();
109 109
       #if EXTRUDERS == 1
110 110
         EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
111 111
       #elif EXTRUDERS > 1
112
-        #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
112
+        #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K_E##N, &planner.extruder_advance_K[N], 0, 999)
113 113
         EDIT_ADVANCE_K(0);
114 114
         EDIT_ADVANCE_K(1);
115 115
         #if EXTRUDERS > 2
@@ -134,7 +134,7 @@ void menu_backlash();
134 134
         #if EXTRUDERS == 1
135 135
           EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
136 136
         #else // EXTRUDERS > 1
137
-          #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM LCD_STR_N##N, &planner.filament_size[N], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
137
+          #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM_E##N, &planner.filament_size[N], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
138 138
           EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
139 139
           EDIT_FIL_DIAM(0);
140 140
           EDIT_FIL_DIAM(1);
@@ -166,7 +166,7 @@ void menu_backlash();
166 166
       #if EXTRUDERS == 1
167 167
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[0].unload_length, 0, extrude_maxlength);
168 168
       #elif EXTRUDERS > 1
169
-        #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD LCD_STR_N##N, &fc_settings[N].unload_length, 0, extrude_maxlength)
169
+        #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENTUNLOAD_E##N, &fc_settings[N].unload_length, 0, extrude_maxlength)
170 170
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength);
171 171
         EDIT_FIL_UNLOAD(0);
172 172
         EDIT_FIL_UNLOAD(1);
@@ -187,7 +187,7 @@ void menu_backlash();
187 187
       #if EXTRUDERS == 1
188 188
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[0].load_length, 0, extrude_maxlength);
189 189
       #elif EXTRUDERS > 1
190
-        #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD LCD_STR_N##N, &fc_settings[N].load_length, 0, extrude_maxlength)
190
+        #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENTLOAD_E##N, &fc_settings[N].load_length, 0, extrude_maxlength)
191 191
         EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[active_extruder].load_length, 0, extrude_maxlength);
192 192
         EDIT_FIL_LOAD(0);
193 193
         EDIT_FIL_LOAD(1);
@@ -268,8 +268,43 @@ void menu_backlash();
268 268
     thermalManager.updatePID();
269 269
   }
270 270
 
271
+  #define _DEFINE_PIDTEMP_BASE_FUNCS(N) \
272
+    void copy_and_scalePID_i_E##N() { copy_and_scalePID_i(N); } \
273
+    void copy_and_scalePID_d_E##N() { copy_and_scalePID_d(N); }
274
+
275
+#else
276
+
277
+  #define _DEFINE_PIDTEMP_BASE_FUNCS(N) //
278
+
279
+#endif
280
+
281
+#if ENABLED(PID_AUTOTUNE_MENU)
282
+  #define DEFINE_PIDTEMP_FUNCS(N) \
283
+    _DEFINE_PIDTEMP_BASE_FUNCS(N); \
284
+    void lcd_autotune_callback_E##N() { _lcd_autotune(N); } //
285
+#else
286
+  #define DEFINE_PIDTEMP_FUNCS(N) _DEFINE_PIDTEMP_BASE_FUNCS(N); //
271 287
 #endif
272 288
 
289
+#if HOTENDS
290
+  DEFINE_PIDTEMP_FUNCS(0);
291
+  #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
292
+    DEFINE_PIDTEMP_FUNCS(1);
293
+    #if HOTENDS > 2
294
+      DEFINE_PIDTEMP_FUNCS(2);
295
+      #if HOTENDS > 3
296
+        DEFINE_PIDTEMP_FUNCS(3);
297
+        #if HOTENDS > 4
298
+          DEFINE_PIDTEMP_FUNCS(4);
299
+          #if HOTENDS > 5
300
+            DEFINE_PIDTEMP_FUNCS(5);
301
+          #endif // HOTENDS > 5
302
+        #endif // HOTENDS > 4
303
+      #endif // HOTENDS > 3
304
+    #endif // HOTENDS > 2
305
+  #endif // HOTENDS > 1 && PID_PARAMS_PER_HOTEND
306
+#endif // HOTENDS
307
+
273 308
 #define SHOW_MENU_ADVANCED_TEMPERATURE ((ENABLED(AUTOTEMP) && HAS_TEMP_HOTEND) || EITHER(PID_AUTOTUNE_MENU, PID_EDIT_MENU))
274 309
 
275 310
 //
@@ -300,53 +335,57 @@ void menu_backlash();
300 335
     //
301 336
     #if ENABLED(PID_EDIT_MENU)
302 337
 
303
-      #define _PID_BASE_MENU_ITEMS(ELABEL, eindex) \
304
-        raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
305
-        raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
306
-        EDIT_ITEM(float52sign, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
307
-        EDIT_ITEM(float52sign, MSG_PID_I ELABEL, &raw_Ki, 0.01f, 9990, [](){ copy_and_scalePID_i(eindex); }); \
308
-        EDIT_ITEM(float52sign, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, [](){ copy_and_scalePID_d(eindex); })
338
+      #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
339
+        #define PID_LABEL(MSG,N) MSG##_E##N
340
+      #else
341
+        #define PID_LABEL(MSG,N) MSG
342
+      #endif
343
+
344
+      #define _PID_BASE_MENU_ITEMS(N) \
345
+        raw_Ki = unscalePID_i(PID_PARAM(Ki, N)); \
346
+        raw_Kd = unscalePID_d(PID_PARAM(Kd, N)); \
347
+        EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_P,N), &PID_PARAM(Kp, N), 1, 9990); \
348
+        EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_I,N), &raw_Ki, 0.01f, 9990, [](){ copy_and_scalePID_i(N); }); \
349
+        EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_D,N), &raw_Kd, 1, 9990, [](){ copy_and_scalePID_d(N); })
309 350
 
310 351
       #if ENABLED(PID_EXTRUSION_SCALING)
311
-        #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
312
-          _PID_BASE_MENU_ITEMS(ELABEL, eindex); \
313
-          EDIT_ITEM(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990)
352
+        #define _PID_EDIT_MENU_ITEMS(N) \
353
+          _PID_BASE_MENU_ITEMS(N); \
354
+          EDIT_ITEM(float3, PID_LABEL(MSG_PID_C,N), &PID_PARAM(Kc, N), 1, 9990)
314 355
       #else
315
-        #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) _PID_BASE_MENU_ITEMS(ELABEL, eindex)
356
+        #define _PID_EDIT_MENU_ITEMS(N) _PID_BASE_MENU_ITEMS(N)
316 357
       #endif
317 358
 
318 359
     #else
319 360
 
320
-      #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) NOOP
361
+      #define _PID_EDIT_MENU_ITEMS(N) NOOP
321 362
 
322 363
     #endif
323 364
 
324 365
     #if ENABLED(PID_AUTOTUNE_MENU)
325
-      #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
326
-        _PID_EDIT_MENU_ITEMS(ELABEL, eindex); \
327
-        EDIT_ITEM_FAST(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, [](){ _lcd_autotune(eindex); })
366
+      #define PID_EDIT_MENU_ITEMS(N) \
367
+        _PID_EDIT_MENU_ITEMS(N); \
368
+        EDIT_ITEM_FAST(int3, PID_LABEL(MSG_AUTOTUNE_PID,N), &autotune_temp[N], 150, heater_maxtemp[N] - 15, [](){ _lcd_autotune(N); })
328 369
     #else
329
-      #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) _PID_EDIT_MENU_ITEMS(ELABEL, eindex)
370
+      #define PID_EDIT_MENU_ITEMS(N) _PID_EDIT_MENU_ITEMS(N)
330 371
     #endif
331 372
 
332
-    #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1
333
-      PID_EDIT_MENU_ITEMS(" " LCD_STR_E0, 0);
334
-      PID_EDIT_MENU_ITEMS(" " LCD_STR_E1, 1);
373
+    PID_EDIT_MENU_ITEMS(0);
374
+    #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
375
+      PID_EDIT_MENU_ITEMS(1);
335 376
       #if HOTENDS > 2
336
-        PID_EDIT_MENU_ITEMS(" " LCD_STR_E2, 2);
377
+        PID_EDIT_MENU_ITEMS(2);
337 378
         #if HOTENDS > 3
338
-          PID_EDIT_MENU_ITEMS(" " LCD_STR_E3, 3);
379
+          PID_EDIT_MENU_ITEMS(3);
339 380
           #if HOTENDS > 4
340
-            PID_EDIT_MENU_ITEMS(" " LCD_STR_E4, 4);
381
+            PID_EDIT_MENU_ITEMS(4);
341 382
             #if HOTENDS > 5
342
-              PID_EDIT_MENU_ITEMS(" " LCD_STR_E5, 5);
383
+              PID_EDIT_MENU_ITEMS(5);
343 384
             #endif // HOTENDS > 5
344 385
           #endif // HOTENDS > 4
345 386
         #endif // HOTENDS > 3
346 387
       #endif // HOTENDS > 2
347
-    #else // !PID_PARAMS_PER_HOTEND || HOTENDS == 1
348
-      PID_EDIT_MENU_ITEMS("", 0);
349
-    #endif // !PID_PARAMS_PER_HOTEND || HOTENDS == 1
388
+    #endif // HOTENDS > 1 && PID_PARAMS_PER_HOTEND
350 389
 
351 390
     END_MENU();
352 391
   }
@@ -385,14 +424,14 @@ void menu_backlash();
385 424
     #else
386 425
       const xyze_feedrate_t &max_fr_edit_scaled = max_fr_edit;
387 426
     #endif
388
-    #define EDIT_VMAX(N) EDIT_ITEM_FAST(float3, MSG_VMAX MSG_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
427
+    #define EDIT_VMAX(N) EDIT_ITEM_FAST(float3, MSG_VMAX_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
389 428
     EDIT_VMAX(A);
390 429
     EDIT_VMAX(B);
391 430
     EDIT_VMAX(C);
392 431
 
393 432
     #if ENABLED(DISTINCT_E_FACTORS)
394
-      #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX LCD_STR_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N)], 1, max_fr_edit_scaled.e)
395
-      EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
433
+      #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N)], 1, max_fr_edit_scaled.e)
434
+      EDIT_ITEM_FAST(float3, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
396 435
       EDIT_VMAX_E(0);
397 436
       EDIT_VMAX_E(1);
398 437
       #if E_STEPPERS > 2
@@ -408,7 +447,7 @@ void menu_backlash();
408 447
         #endif // E_STEPPERS > 3
409 448
       #endif // E_STEPPERS > 2
410 449
     #elif E_STEPPERS
411
-      EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, max_fr_edit_scaled.e);
450
+      EDIT_ITEM_FAST(float3, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, max_fr_edit_scaled.e);
412 451
     #endif
413 452
 
414 453
     // M205 S Min Feedrate
@@ -451,15 +490,15 @@ void menu_backlash();
451 490
       const xyze_ulong_t &max_accel_edit_scaled = max_accel_edit;
452 491
     #endif
453 492
 
454
-    #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], [](){ planner.reset_acceleration_rates(); })
493
+    #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], [](){ planner.reset_acceleration_rates(); })
455 494
 
456 495
     EDIT_AMAX(A,100);
457 496
     EDIT_AMAX(B,100);
458 497
     EDIT_AMAX(C, 10);
459 498
 
460 499
     #if ENABLED(DISTINCT_E_FACTORS)
461
-      #define EDIT_AMAX_E(N) EDIT_ITEM_FAST(long5_25, MSG_AMAX LCD_STR_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(N)], 100, max_accel_edit_scaled.e, [](){ _reset_e_acceleration_rate(N); })
462
-      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
500
+      #define EDIT_AMAX_E(N) EDIT_ITEM_FAST(long5_25, MSG_AMAX_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(N)], 100, max_accel_edit_scaled.e, [](){ _reset_e_acceleration_rate(N); })
501
+      EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
463 502
       EDIT_AMAX_E(0);
464 503
       EDIT_AMAX_E(1);
465 504
       #if E_STEPPERS > 2
@@ -475,7 +514,7 @@ void menu_backlash();
475 514
         #endif // E_STEPPERS > 3
476 515
       #endif // E_STEPPERS > 2
477 516
     #elif E_STEPPERS
478
-      EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
517
+      EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
479 518
     #endif
480 519
 
481 520
     END_MENU();
@@ -524,14 +563,14 @@ void menu_backlash();
524 563
     START_MENU();
525 564
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
526 565
 
527
-    #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, [](){ planner.refresh_positioning(); })
566
+    #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##_STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, [](){ planner.refresh_positioning(); })
528 567
     EDIT_QSTEPS(A);
529 568
     EDIT_QSTEPS(B);
530 569
     EDIT_QSTEPS(C);
531 570
 
532 571
     #if ENABLED(DISTINCT_E_FACTORS)
533 572
       #define EDIT_ESTEPS(N) EDIT_ITEM_FAST(float51, MSG_E##N##_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(N)], 5, 9999, [](){ _planner_refresh_e_positioning(N); })
534
-      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, [](){ planner.refresh_positioning(); });
573
+      EDIT_ITEM_FAST(float51, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, [](){ planner.refresh_positioning(); });
535 574
       EDIT_ESTEPS(0);
536 575
       EDIT_ESTEPS(1);
537 576
       #if E_STEPPERS > 2
@@ -547,7 +586,7 @@ void menu_backlash();
547 586
         #endif // E_STEPPERS > 3
548 587
       #endif // E_STEPPERS > 2
549 588
     #elif E_STEPPERS
550
-      EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, [](){ planner.refresh_positioning(); });
589
+      EDIT_ITEM_FAST(float51, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, [](){ planner.refresh_positioning(); });
551 590
     #endif
552 591
 
553 592
     END_MENU();
@@ -559,7 +598,7 @@ void menu_backlash();
559 598
 
560 599
     static void lcd_init_eeprom_confirm() {
561 600
       do_select_screen(
562
-        PSTR(MSG_BUTTON_INIT), PSTR(MSG_BUTTON_CANCEL),
601
+        GET_TEXT(MSG_BUTTON_INIT), GET_TEXT(MSG_BUTTON_CANCEL),
563 602
         []{
564 603
           const bool inited = settings.init_eeprom();
565 604
           #if HAS_BUZZER
@@ -568,7 +607,7 @@ void menu_backlash();
568 607
           UNUSED(inited);
569 608
         },
570 609
         ui.goto_previous_screen,
571
-        PSTR(MSG_INIT_EEPROM), nullptr, PSTR("?")
610
+        GET_TEXT(MSG_INIT_EEPROM), nullptr, PSTR("?")
572 611
       );
573 612
     }
574 613
 
@@ -632,7 +671,7 @@ void menu_advanced_settings() {
632 671
     #if EXTRUDERS == 1
633 672
       EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
634 673
     #elif EXTRUDERS > 1
635
-      #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
674
+      #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K_E##N, &planner.extruder_advance_K[N], 0, 999)
636 675
       EDIT_ADVANCE_K(0);
637 676
       EDIT_ADVANCE_K(1);
638 677
       #if EXTRUDERS > 2

+ 1
- 1
Marlin/src/lcd/menu/menu_backlash.cpp Zobrazit soubor

@@ -38,7 +38,7 @@ void menu_backlash() {
38 38
 
39 39
   EDIT_ITEM_FAST(percent, MSG_BACKLASH_CORRECTION, &backlash.correction, all_off, all_on);
40 40
 
41
-  #define EDIT_BACKLASH_DISTANCE(N) EDIT_ITEM_FAST(float43, MSG_##N, &backlash.distance_mm[_AXIS(N)], 0.0f, 9.9f);
41
+  #define EDIT_BACKLASH_DISTANCE(N) EDIT_ITEM_FAST(float43, MSG_BACKLASH_##N, &backlash.distance_mm[_AXIS(N)], 0.0f, 9.9f);
42 42
   EDIT_BACKLASH_DISTANCE(A);
43 43
   EDIT_BACKLASH_DISTANCE(B);
44 44
   EDIT_BACKLASH_DISTANCE(C);

+ 2
- 2
Marlin/src/lcd/menu/menu_bed_corners.cpp Zobrazit soubor

@@ -86,7 +86,7 @@ static inline void _lcd_goto_next_corner() {
86 86
 
87 87
 static inline void menu_level_bed_corners() {
88 88
   do_select_screen(
89
-    PSTR(MSG_BUTTON_NEXT), PSTR(MSG_BUTTON_DONE),
89
+    GET_TEXT(MSG_BUTTON_NEXT), GET_TEXT(MSG_BUTTON_DONE),
90 90
     _lcd_goto_next_corner,
91 91
     []{
92 92
       #if HAS_LEVELING
@@ -94,7 +94,7 @@ static inline void menu_level_bed_corners() {
94 94
       #endif
95 95
       ui.goto_previous_screen_no_defer();
96 96
     },
97
-    PSTR(
97
+    GET_TEXT(
98 98
       #if ENABLED(LEVEL_CENTER_TOO)
99 99
         MSG_LEVEL_BED_NEXT_POINT
100 100
       #else

+ 5
- 5
Marlin/src/lcd/menu/menu_bed_leveling.cpp Zobrazit soubor

@@ -74,14 +74,14 @@
74 74
       #if MANUAL_PROBE_HEIGHT > 0 && DISABLED(MESH_BED_LEVELING)
75 75
         // Display "Done" screen and wait for moves to complete
76 76
         line_to_z(MANUAL_PROBE_HEIGHT);
77
-        ui.synchronize(PSTR(MSG_LEVEL_BED_DONE));
77
+        ui.synchronize(GET_TEXT(MSG_LEVEL_BED_DONE));
78 78
       #endif
79 79
       ui.goto_previous_screen_no_defer();
80 80
       #if HAS_BUZZER
81 81
         ui.completion_feedback();
82 82
       #endif
83 83
     }
84
-    if (ui.should_draw()) draw_menu_item_static(LCD_HEIGHT >= 4 ? 1 : 0, PSTR(MSG_LEVEL_BED_DONE));
84
+    if (ui.should_draw()) draw_menu_item_static(LCD_HEIGHT >= 4 ? 1 : 0, GET_TEXT(MSG_LEVEL_BED_DONE));
85 85
     ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
86 86
   }
87 87
 
@@ -132,7 +132,7 @@
132 132
     //
133 133
     if (ui.should_draw()) {
134 134
       const float v = current_position.z;
135
-      draw_edit_screen(PSTR(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001f : 0.0001f), '+'));
135
+      draw_edit_screen(GET_TEXT(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001f : 0.0001f), '+'));
136 136
     }
137 137
   }
138 138
 
@@ -143,7 +143,7 @@
143 143
     if (ui.should_draw()) {
144 144
       char msg[10];
145 145
       sprintf_P(msg, PSTR("%i / %u"), (int)(manual_probe_index + 1), total_probe_points);
146
-      draw_edit_screen(PSTR(MSG_LEVEL_BED_NEXT_POINT), msg);
146
+      draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_NEXT_POINT), msg);
147 147
     }
148 148
     ui.refresh(LCDVIEW_CALL_NO_REDRAW);
149 149
     if (!ui.wait_for_bl_move) ui.goto_screen(_lcd_level_bed_get_z);
@@ -169,7 +169,7 @@
169 169
   //         Move to the first probe position
170 170
   //
171 171
   void _lcd_level_bed_homing_done() {
172
-    if (ui.should_draw()) draw_edit_screen(PSTR(MSG_LEVEL_BED_WAITING));
172
+    if (ui.should_draw()) draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_WAITING));
173 173
     if (ui.use_click()) {
174 174
       manual_probe_index = 0;
175 175
       _lcd_level_goto_next_point();

+ 5
- 5
Marlin/src/lcd/menu/menu_configuration.cpp Zobrazit soubor

@@ -68,7 +68,7 @@ void menu_advanced_settings();
68 68
     bar_percent += (int8_t)ui.encoderPosition;
69 69
     LIMIT(bar_percent, 0, 100);
70 70
     ui.encoderPosition = 0;
71
-    draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), SS_CENTER|SS_INVERT);
71
+    draw_menu_item_static(0, GET_TEXT(MSG_PROGRESS_BAR_TEST), SS_CENTER|SS_INVERT);
72 72
     lcd_put_int((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2, bar_percent); lcd_put_wchar('%');
73 73
     lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
74 74
   }
@@ -203,17 +203,17 @@ void menu_advanced_settings();
203 203
     ACTION_ITEM(MSG_BLTOUCH_SW_MODE, bltouch._set_SW_mode);
204 204
     #if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU)
205 205
       SUBMENU(MSG_BLTOUCH_5V_MODE, []{
206
-        do_select_screen(PSTR(MSG_BLTOUCH_5V_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_5V_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
206
+        do_select_screen(GET_TEXT(MSG_BLTOUCH_5V_MODE), GET_TEXT(MSG_BUTTON_CANCEL), bltouch._set_5V_mode, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
207 207
       });
208 208
       SUBMENU(MSG_BLTOUCH_OD_MODE, []{
209
-        do_select_screen(PSTR(MSG_BLTOUCH_OD_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_OD_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
209
+        do_select_screen(GET_TEXT(MSG_BLTOUCH_OD_MODE), GET_TEXT(MSG_BUTTON_CANCEL), bltouch._set_OD_mode, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
210 210
       });
211 211
       ACTION_ITEM(MSG_BLTOUCH_MODE_STORE, bltouch._mode_store);
212 212
       SUBMENU(MSG_BLTOUCH_MODE_STORE_5V, []{
213
-        do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_5V), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_5V, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
213
+        do_select_screen(GET_TEXT(MSG_BLTOUCH_MODE_STORE_5V), GET_TEXT(MSG_BUTTON_CANCEL), bltouch.mode_conv_5V, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
214 214
       });
215 215
       SUBMENU(MSG_BLTOUCH_MODE_STORE_OD, []{
216
-        do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_OD), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_OD, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
216
+        do_select_screen(GET_TEXT(MSG_BLTOUCH_MODE_STORE_OD), GET_TEXT(MSG_BUTTON_CANCEL), bltouch.mode_conv_OD, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
217 217
       });
218 218
       ACTION_ITEM(MSG_BLTOUCH_MODE_ECHO, bltouch_report);
219 219
     #endif

+ 5
- 5
Marlin/src/lcd/menu/menu_custom.cpp Zobrazit soubor

@@ -51,19 +51,19 @@ void menu_user() {
51 51
   START_MENU();
52 52
   BACK_ITEM(MSG_MAIN);
53 53
   #if defined(USER_DESC_1) && defined(USER_GCODE_1)
54
-    ACTION_ITEM(USER_DESC_1, [](){ _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); });
54
+    ACTION_ITEM_P(PSTR(USER_DESC_1), [](){ _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); });
55 55
   #endif
56 56
   #if defined(USER_DESC_2) && defined(USER_GCODE_2)
57
-    ACTION_ITEM(USER_DESC_2, [](){ _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); });
57
+    ACTION_ITEM_P(PSTR(USER_DESC_2), [](){ _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); });
58 58
   #endif
59 59
   #if defined(USER_DESC_3) && defined(USER_GCODE_3)
60
-    ACTION_ITEM(USER_DESC_3, [](){ _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); });
60
+    ACTION_ITEM_P(PSTR(USER_DESC_3), [](){ _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); });
61 61
   #endif
62 62
   #if defined(USER_DESC_4) && defined(USER_GCODE_4)
63
-    ACTION_ITEM(USER_DESC_4, [](){ _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); });
63
+    ACTION_ITEM_P(PSTR(USER_DESC_4), [](){ _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); });
64 64
   #endif
65 65
   #if defined(USER_DESC_5) && defined(USER_GCODE_5)
66
-    ACTION_ITEM(USER_DESC_5, [](){ _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); });
66
+    ACTION_ITEM_P(PSTR(USER_DESC_5), [](){ _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); });
67 67
   #endif
68 68
   END_MENU();
69 69
 }

+ 3
- 3
Marlin/src/lcd/menu/menu_delta_calibrate.cpp Zobrazit soubor

@@ -60,7 +60,7 @@ void _man_probe_pt(const xy_pos_t &xy) {
60 60
       host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Delta Calibration in progress"), PSTR("Continue"));
61 61
     #endif
62 62
     #if ENABLED(EXTENSIBLE_UI)
63
-      ExtUI::onUserConfirmRequired(PSTR("Delta Calibration in progress"));
63
+      ExtUI::onUserConfirmRequired_P(PSTR("Delta Calibration in progress"));
64 64
     #endif
65 65
     while (wait_for_user) idle();
66 66
     ui.goto_previous_screen_no_defer();
@@ -104,12 +104,12 @@ void lcd_delta_settings() {
104 104
   START_MENU();
105 105
   BACK_ITEM(MSG_DELTA_CALIBRATE);
106 106
   EDIT_ITEM(float52sign, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10, delta_height + 10, _recalc_delta_settings);
107
-  #define EDIT_ENDSTOP_ADJ(LABEL,N) EDIT_ITEM(float43, LABEL, &delta_endstop_adj.N, -5, 5, _recalc_delta_settings)
107
+  #define EDIT_ENDSTOP_ADJ(LABEL,N) EDIT_ITEM_P(float43, PSTR(LABEL), &delta_endstop_adj.N, -5, 5, _recalc_delta_settings)
108 108
   EDIT_ENDSTOP_ADJ("Ex",a);
109 109
   EDIT_ENDSTOP_ADJ("Ey",b);
110 110
   EDIT_ENDSTOP_ADJ("Ez",c);
111 111
   EDIT_ITEM(float52sign, MSG_DELTA_RADIUS, &delta_radius, delta_radius - 5, delta_radius + 5, _recalc_delta_settings);
112
-  #define EDIT_ANGLE_TRIM(LABEL,N) EDIT_ITEM(float43, LABEL, &delta_tower_angle_trim.N, -5, 5, _recalc_delta_settings)
112
+  #define EDIT_ANGLE_TRIM(LABEL,N) EDIT_ITEM_P(float43, PSTR(LABEL), &delta_tower_angle_trim.N, -5, 5, _recalc_delta_settings)
113 113
   EDIT_ANGLE_TRIM("Tx",a);
114 114
   EDIT_ANGLE_TRIM("Ty",b);
115 115
   EDIT_ANGLE_TRIM("Tz",c);

+ 64
- 160
Marlin/src/lcd/menu/menu_filament.cpp Zobrazit soubor

@@ -52,7 +52,7 @@ inline PGM_P _change_filament_temp_command() {
52 52
     default:
53 53
       return PSTR("M600 B0 T%d");
54 54
   }
55
-  return PSTR(MSG_FILAMENTCHANGE);
55
+  return GET_TEXT(MSG_FILAMENTCHANGE);
56 56
 }
57 57
 
58 58
 // Initiate Filament Load/Unload/Change at the specified temperature
@@ -70,12 +70,12 @@ static void _change_filament_temp(const uint16_t temperature) {
70 70
 inline PGM_P change_filament_header(const PauseMode mode) {
71 71
   switch (mode) {
72 72
     case PAUSE_MODE_LOAD_FILAMENT:
73
-      return PSTR(MSG_FILAMENTLOAD);
73
+      return GET_TEXT(MSG_FILAMENTLOAD);
74 74
     case PAUSE_MODE_UNLOAD_FILAMENT:
75
-      return PSTR(MSG_FILAMENTUNLOAD);
75
+      return GET_TEXT(MSG_FILAMENTUNLOAD);
76 76
     default: break;
77 77
   }
78
-  return PSTR(MSG_FILAMENTCHANGE);
78
+  return GET_TEXT(MSG_FILAMENTCHANGE);
79 79
 }
80 80
 
81 81
 void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
@@ -107,14 +107,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
107 107
 
108 108
     // Change filament
109 109
     #if E_STEPPERS == 1
110
-      PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE);
110
+      PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE);
111 111
       if (thermalManager.targetTooColdToExtrude(active_extruder))
112 112
         MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
113 113
       else
114 114
         MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
115 115
     #else
116
-      PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E0);
117
-      PGM_P const msg1 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E1);
116
+      PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE_E0);
117
+      PGM_P const msg1 = GET_TEXT(MSG_FILAMENTCHANGE_E1);
118 118
       if (thermalManager.targetTooColdToExtrude(0))
119 119
         MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
120 120
       else
@@ -124,25 +124,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
124 124
       else
125 125
         MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
126 126
       #if E_STEPPERS > 2
127
-        PGM_P const msg2 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E2);
127
+        PGM_P const msg2 = GET_TEXT(MSG_FILAMENTCHANGE_E2);
128 128
         if (thermalManager.targetTooColdToExtrude(2))
129 129
           MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 2); });
130 130
         else
131 131
           MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
132 132
         #if E_STEPPERS > 3
133
-          PGM_P const msg3 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E3);
133
+          PGM_P const msg3 = GET_TEXT(MSG_FILAMENTCHANGE_E3);
134 134
           if (thermalManager.targetTooColdToExtrude(3))
135 135
             MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 3); });
136 136
           else
137 137
             MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
138 138
           #if E_STEPPERS > 4
139
-            PGM_P const msg4 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E4);
139
+            PGM_P const msg4 = GET_TEXT(MSG_FILAMENTCHANGE_E4);
140 140
             if (thermalManager.targetTooColdToExtrude(4))
141 141
               MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 4); });
142 142
             else
143 143
               MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
144 144
             #if E_STEPPERS > 5
145
-              PGM_P const msg5 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E5);
145
+              PGM_P const msg5 = GET_TEXT(MSG_FILAMENTCHANGE_E5);
146 146
               if (thermalManager.targetTooColdToExtrude(5))
147 147
                 MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 5); });
148 148
               else
@@ -157,14 +157,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
157 157
       if (!printer_busy()) {
158 158
         // Load filament
159 159
         #if E_STEPPERS == 1
160
-          PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD);
160
+          PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD);
161 161
           if (thermalManager.targetTooColdToExtrude(active_extruder))
162 162
             MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
163 163
           else
164 164
             MENU_ITEM_P(gcode, msg0, PSTR("M701"));
165 165
         #else
166
-          PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E0);
167
-          PGM_P const msg1 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E1);
166
+          PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD_E0);
167
+          PGM_P const msg1 = GET_TEXT(MSG_FILAMENTLOAD_E1);
168 168
           if (thermalManager.targetTooColdToExtrude(0))
169 169
             MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
170 170
           else
@@ -174,25 +174,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
174 174
           else
175 175
             MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
176 176
           #if E_STEPPERS > 2
177
-            PGM_P const msg2 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E2);
177
+            PGM_P const msg2 = GET_TEXT(MSG_FILAMENTLOAD_E2);
178 178
             if (thermalManager.targetTooColdToExtrude(2))
179 179
               MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 2); });
180 180
             else
181 181
               MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
182 182
             #if E_STEPPERS > 3
183
-              PGM_P const msg3 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E3);
183
+              PGM_P const msg3 = GET_TEXT(MSG_FILAMENTLOAD_E3);
184 184
               if (thermalManager.targetTooColdToExtrude(3))
185 185
                 MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 3); });
186 186
               else
187 187
                 MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
188 188
               #if E_STEPPERS > 4
189
-                PGM_P const msg4 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E4);
189
+                PGM_P const msg4 = GET_TEXT(MSG_FILAMENTLOAD_E4);
190 190
                 if (thermalManager.targetTooColdToExtrude(4))
191 191
                   MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 4); });
192 192
                 else
193 193
                   MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
194 194
                 #if E_STEPPERS > 5
195
-                  PGM_P const msg5 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E5);
195
+                  PGM_P const msg5 = GET_TEXT(MSG_FILAMENTLOAD_E5);
196 196
                   if (thermalManager.targetTooColdToExtrude(5))
197 197
                     MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 5); });
198 198
                   else
@@ -223,33 +223,33 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
223 223
             SUBMENU(MSG_FILAMENTUNLOAD_ALL, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, -1); });
224 224
           #endif
225 225
           if (thermalManager.targetHotEnoughToExtrude(0))
226
-            GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E0, PSTR("M702 T0"));
226
+            GCODES_ITEM(MSG_FILAMENTUNLOAD_E0, PSTR("M702 T0"));
227 227
           else
228
-            SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
228
+            SUBMENU(MSG_FILAMENTUNLOAD_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
229 229
           if (thermalManager.targetHotEnoughToExtrude(1))
230
-            GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E1, PSTR("M702 T1"));
230
+            GCODES_ITEM(MSG_FILAMENTUNLOAD_E1, PSTR("M702 T1"));
231 231
           else
232
-            SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
232
+            SUBMENU(MSG_FILAMENTUNLOAD_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
233 233
           #if E_STEPPERS > 2
234 234
             if (thermalManager.targetHotEnoughToExtrude(2))
235
-              GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E2, PSTR("M702 T2"));
235
+              GCODES_ITEM(MSG_FILAMENTUNLOAD_E2, PSTR("M702 T2"));
236 236
             else
237
-              SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
237
+              SUBMENU(MSG_FILAMENTUNLOAD_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
238 238
             #if E_STEPPERS > 3
239 239
               if (thermalManager.targetHotEnoughToExtrude(3))
240
-                GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E3, PSTR("M702 T3"));
240
+                GCODES_ITEM(MSG_FILAMENTUNLOAD_E3, PSTR("M702 T3"));
241 241
               else
242
-                SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
242
+                SUBMENU(MSG_FILAMENTUNLOAD_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
243 243
               #if E_STEPPERS > 4
244 244
                 if (thermalManager.targetHotEnoughToExtrude(4))
245
-                  GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E4, PSTR("M702 T4"));
245
+                  GCODES_ITEM(MSG_FILAMENTUNLOAD_E4, PSTR("M702 T4"));
246 246
                 else
247
-                  SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
247
+                  SUBMENU(MSG_FILAMENTUNLOAD_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
248 248
                 #if E_STEPPERS > 5
249 249
                   if (thermalManager.targetHotEnoughToExtrude(5))
250
-                    GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E5, PSTR("M702 T5"));
250
+                    GCODES_ITEM(MSG_FILAMENTUNLOAD_E5, PSTR("M702 T5"));
251 251
                   else
252
-                    SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
252
+                    SUBMENU(MSG_FILAMENTUNLOAD_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
253 253
                 #endif // E_STEPPERS > 5
254 254
               #endif // E_STEPPERS > 4
255 255
             #endif // E_STEPPERS > 3
@@ -267,22 +267,21 @@ static uint8_t hotend_status_extruder = 0;
267 267
 static PGM_P pause_header() {
268 268
   switch (pause_mode) {
269 269
     case PAUSE_MODE_CHANGE_FILAMENT:
270
-      return PSTR(MSG_FILAMENT_CHANGE_HEADER);
270
+      return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER);
271 271
     case PAUSE_MODE_LOAD_FILAMENT:
272
-      return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
272
+      return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_LOAD);
273 273
     case PAUSE_MODE_UNLOAD_FILAMENT:
274
-      return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
275
-    case PAUSE_MODE_PAUSE_PRINT:
274
+      return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
276 275
     default: break;
277 276
   }
278
-  return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
277
+  return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
279 278
 }
280 279
 
281 280
 // Portions from STATIC_ITEM...
282 281
 #define HOTEND_STATUS_ITEM() do { \
283 282
   if (_menuLineNr == _thisItemNr) { \
284 283
     if (ui.should_draw()) { \
285
-      draw_menu_item_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
284
+      draw_menu_item_static(_lcdLineNr, GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
286 285
       ui.draw_hotend_status(_lcdLineNr, hotend_status_extruder); \
287 286
     } \
288 287
     if (_skipStatic && encoderLine <= _thisItemNr) { \
@@ -312,137 +311,42 @@ void menu_pause_option() {
312 311
 //
313 312
 // ADVANCED_PAUSE_FEATURE message screens
314 313
 //
314
+// Warning: msg must have three null bytes to delimit lines!
315
+//
316
+void _lcd_pause_message(PGM_P const msg) {
317
+  PGM_P const msg1 = msg;
318
+  PGM_P const msg2 = msg1 + strlen_P(msg1) + 1;
319
+  PGM_P const msg3 = msg2 + strlen_P(msg2) + 1;
320
+  const bool has2 = msg2[0], has3 = msg3[0],
321
+             skip1 = !has2 && (LCD_HEIGHT) >= 5;
315 322
 
316
-void _lcd_pause_message(PGM_P const msg1, PGM_P const msg2=nullptr, PGM_P const msg3=nullptr) {
317 323
   START_SCREEN();
318
-  STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT);
319
-  STATIC_ITEM_P(msg1);
320
-  if (msg2) STATIC_ITEM_P(msg2);
321
-  if (msg3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3);
322
-  if ((!!msg2) + (!!msg3) + 2 < (LCD_HEIGHT) - 1) STATIC_ITEM(" ");
323
-  HOTEND_STATUS_ITEM();
324
+  STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT);           // 1: Header
325
+  if (skip1) SKIP_ITEM();                                       // Move a single-line message down
326
+  STATIC_ITEM_P(msg1);                                          // 2: Message Line 1
327
+  if (has2) STATIC_ITEM_P(msg2);                                // 3: Message Line 2
328
+  if (has3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3);           // 4: Message Line 3 (if LCD has 5 lines)
329
+  if (skip1 + 1 + has2 + has3 < (LCD_HEIGHT) - 2) SKIP_ITEM();  // Push Hotend Status down, if needed
330
+  HOTEND_STATUS_ITEM();                                         // 5: Hotend Status
324 331
   END_SCREEN();
325 332
 }
326 333
 
327
-void lcd_pause_pausing_message() {
328
-  _lcd_pause_message(PSTR(MSG_PAUSE_PRINT_INIT_1)
329
-    #ifdef MSG_PAUSE_PRINT_INIT_2
330
-      , PSTR(MSG_PAUSE_PRINT_INIT_2)
331
-      #ifdef MSG_PAUSE_PRINT_INIT_3
332
-        , PSTR(MSG_PAUSE_PRINT_INIT_3)
333
-      #endif
334
-    #endif
335
-  );
336
-}
337
-
338
-void lcd_pause_changing_message() {
339
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INIT_1)
340
-    #ifdef MSG_FILAMENT_CHANGE_INIT_2
341
-      , PSTR(MSG_FILAMENT_CHANGE_INIT_2)
342
-      #ifdef MSG_FILAMENT_CHANGE_INIT_3
343
-        , PSTR(MSG_FILAMENT_CHANGE_INIT_3)
344
-      #endif
345
-    #endif
346
-  );
347
-}
348
-
349
-void lcd_pause_unload_message() {
350
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_UNLOAD_1)
351
-    #ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
352
-      , PSTR(MSG_FILAMENT_CHANGE_UNLOAD_2)
353
-      #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
354
-        , PSTR(MSG_FILAMENT_CHANGE_UNLOAD_3)
355
-      #endif
356
-    #endif
357
-  );
358
-}
359
-
360
-void lcd_pause_heating_message() {
361
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEATING_1)
362
-    #ifdef MSG_FILAMENT_CHANGE_HEATING_2
363
-      , PSTR(MSG_FILAMENT_CHANGE_HEATING_2)
364
-      #ifdef MSG_FILAMENT_CHANGE_HEATING_3
365
-        , PSTR(MSG_FILAMENT_CHANGE_HEATING_3)
366
-      #endif
367
-    #endif
368
-  );
369
-}
370
-
371
-void lcd_pause_heat_message() {
372
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEAT_1)
373
-    #ifdef MSG_FILAMENT_CHANGE_HEAT_2
374
-      , PSTR(MSG_FILAMENT_CHANGE_HEAT_2)
375
-      #ifdef MSG_FILAMENT_CHANGE_HEAT_3
376
-        , PSTR(MSG_FILAMENT_CHANGE_HEAT_3)
377
-      #endif
378
-    #endif
379
-  );
380
-}
381
-
382
-void lcd_pause_insert_message() {
383
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INSERT_1)
384
-    #ifdef MSG_FILAMENT_CHANGE_INSERT_2
385
-      , PSTR(MSG_FILAMENT_CHANGE_INSERT_2)
386
-      #ifdef MSG_FILAMENT_CHANGE_INSERT_3
387
-        , PSTR(MSG_FILAMENT_CHANGE_INSERT_3)
388
-      #endif
389
-    #endif
390
-  );
391
-}
392
-
393
-void lcd_pause_load_message() {
394
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_LOAD_1)
395
-    #ifdef MSG_FILAMENT_CHANGE_LOAD_2
396
-      , PSTR(MSG_FILAMENT_CHANGE_LOAD_2)
397
-      #ifdef MSG_FILAMENT_CHANGE_LOAD_3
398
-        , PSTR(MSG_FILAMENT_CHANGE_LOAD_3)
399
-      #endif
400
-    #endif
401
-  );
402
-}
403
-
404
-void lcd_pause_waiting_message() {
405
-  _lcd_pause_message(PSTR(MSG_ADVANCED_PAUSE_WAITING_1)
406
-    #ifdef MSG_ADVANCED_PAUSE_WAITING_2
407
-      , PSTR(MSG_ADVANCED_PAUSE_WAITING_2)
408
-      #ifdef MSG_ADVANCED_PAUSE_WAITING_3
409
-        , PSTR(MSG_ADVANCED_PAUSE_WAITING_3)
410
-      #endif
411
-    #endif
412
-  );
413
-}
414
-
415
-void lcd_pause_resume_message() {
416
-  _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_RESUME_1)
417
-    #ifdef MSG_FILAMENT_CHANGE_RESUME_2
418
-      , PSTR(MSG_FILAMENT_CHANGE_RESUME_2)
419
-      #ifdef MSG_FILAMENT_CHANGE_RESUME_3
420
-        , PSTR(MSG_FILAMENT_CHANGE_RESUME_3)
421
-      #endif
422
-    #endif
423
-  );
424
-}
334
+void lcd_pause_pausing_message()  { _lcd_pause_message(GET_TEXT(MSG_PAUSE_PRINT_INIT));        }
335
+void lcd_pause_changing_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INIT));    }
336
+void lcd_pause_unload_message()   { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_UNLOAD));  }
337
+void lcd_pause_heating_message()  { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEATING)); }
338
+void lcd_pause_heat_message()     { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEAT));    }
339
+void lcd_pause_insert_message()   { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INSERT));  }
340
+void lcd_pause_load_message()     { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_LOAD));    }
341
+void lcd_pause_waiting_message()  { _lcd_pause_message(GET_TEXT(MSG_ADVANCED_PAUSE_WAITING));  }
342
+void lcd_pause_resume_message()   { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_RESUME));  }
425 343
 
426 344
 void lcd_pause_purge_message() {
427
-  _lcd_pause_message(
428
-    #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
429
-      PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_1)
430
-      #ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_2
431
-        , PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_2)
432
-        #ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_3
433
-          , PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_3)
434
-        #endif
435
-      #endif
436
-    #else
437
-      PSTR(MSG_FILAMENT_CHANGE_PURGE_1)
438
-      #ifdef MSG_FILAMENT_CHANGE_PURGE_2
439
-        , PSTR(MSG_FILAMENT_CHANGE_PURGE_2)
440
-        #ifdef MSG_FILAMENT_CHANGE_PURGE_3
441
-          , PSTR(MSG_FILAMENT_CHANGE_PURGE_3)
442
-        #endif
443
-      #endif
444
-    #endif
445
-  );
345
+  #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
346
+    _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_CONT_PURGE));
347
+  #else
348
+    _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE));
349
+  #endif
446 350
 }
447 351
 
448 352
 FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) {

+ 59
- 54
Marlin/src/lcd/menu/menu_info.cpp Zobrazit soubor

@@ -34,8 +34,8 @@
34 34
   #include "game/game.h"
35 35
 #endif
36 36
 
37
-#define STATIC_PAIR(MSG, VALUE, STYL)    do{ strcpy_P(buffer, PSTR(": ")); strcpy(buffer + 2, VALUE); STATIC_ITEM(MSG, STYL, buffer); }while(0)
38
-#define STATIC_PAIR_P(MSG, PVALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy_P(buffer + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, STYL, buffer); }while(0)
37
+#define VALUE_ITEM(MSG, VALUE, STYL)    do{ strcpy_P(buffer, PSTR(": ")); strcpy(buffer + 2, VALUE); STATIC_ITEM(MSG, STYL, buffer); }while(0)
38
+#define VALUE_ITEM_P(MSG, PVALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy_P(buffer + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, STYL, buffer); }while(0)
39 39
 
40 40
 #if ENABLED(PRINTCOUNTER)
41 41
 
@@ -51,37 +51,41 @@
51 51
       #endif
52 52
     );
53 53
 
54
-    char buffer[21];  // for STATIC_PAIR_P
54
+    char buffer[21];  // For macro usage
55 55
 
56 56
     printStatistics stats = print_job_timer.getStats();
57 57
 
58 58
     START_SCREEN();                                                                           // 12345678901234567890
59
-    STATIC_PAIR(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT);             // Print Count: 999
60
-    STATIC_PAIR(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT);     // Completed  : 666
59
+    VALUE_ITEM(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT);              // Print Count: 999
60
+    VALUE_ITEM(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT);      // Completed  : 666
61 61
 
62
-    STATIC_PAIR_P(MSG_INFO_PRINT_TIME, "", SS_LEFT);                                          // Total print Time:
63
-    STATIC_ITEM("> ", SS_LEFT, duration_t(stats.printTime).toString(buffer));                 // > 99y 364d 23h 59m 59s
62
+    STATIC_ITEM(MSG_INFO_PRINT_TIME, SS_LEFT);                                                // Total print Time:
63
+    STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.printTime).toString(buffer));         // > 99y 364d 23h 59m 59s
64 64
 
65
-    STATIC_PAIR_P(MSG_INFO_PRINT_LONGEST, "", SS_LEFT);                                       // Longest job time:
66
-    STATIC_ITEM("> ", SS_LEFT, duration_t(stats.longestPrint).toString(buffer));              // > 99y 364d 23h 59m 59s
65
+    STATIC_ITEM(MSG_INFO_PRINT_LONGEST, SS_LEFT);                                             // Longest job time:
66
+    STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.longestPrint).toString(buffer));      // > 99y 364d 23h 59m 59s
67 67
 
68
-    STATIC_PAIR_P(MSG_INFO_PRINT_FILAMENT, "", SS_LEFT);                                      // Extruded total:
68
+    STATIC_ITEM(MSG_INFO_PRINT_FILAMENT, SS_LEFT);                                            // Extruded total:
69 69
     sprintf_P(buffer, PSTR("%ld.%im"), long(stats.filamentUsed / 1000), int16_t(stats.filamentUsed / 100) % 10);
70
-    STATIC_ITEM("> ", SS_LEFT, buffer);                                                       // > 125m
70
+    STATIC_ITEM_P(PSTR("> "), SS_LEFT, buffer);                                               // > 125m
71
+
72
+    #if SERVICE_INTERVAL_1 > 0 || SERVICE_INTERVAL_2 > 0 || SERVICE_INTERVAL_3 > 0
73
+      strcpy_P(buffer, GET_TEXT(MSG_SERVICE_IN));
74
+    #endif
71 75
 
72 76
     #if SERVICE_INTERVAL_1 > 0
73
-      STATIC_ITEM(SERVICE_NAME_1 MSG_SERVICE_IN, SS_LEFT);                                    // Service X in:
74
-      STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService1).toString(buffer));            // > 7d 12h 11m 10s
77
+      STATIC_ITEM_P(PSTR(SERVICE_NAME_1 " "), SS_LEFT, buffer);                               // Service X in:
78
+      STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService1).toString(buffer));    // > 7d 12h 11m 10s
75 79
     #endif
76 80
 
77 81
     #if SERVICE_INTERVAL_2 > 0
78
-      STATIC_ITEM(SERVICE_NAME_2 MSG_SERVICE_IN, SS_LEFT);
79
-      STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService2).toString(buffer));
82
+      STATIC_ITEM_P(PSTR(SERVICE_NAME_2 " "), SS_LEFT, buffer);
83
+      STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService2).toString(buffer));
80 84
     #endif
81 85
 
82 86
     #if SERVICE_INTERVAL_3 > 0
83
-      STATIC_ITEM(SERVICE_NAME_3 MSG_SERVICE_IN, SS_LEFT);
84
-      STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService3).toString(buffer));
87
+      STATIC_ITEM_P(PSTR(SERVICE_NAME_3 " "), SS_LEFT, buffer);
88
+      STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService3).toString(buffer));
85 89
     #endif
86 90
 
87 91
     END_SCREEN();
@@ -99,61 +103,61 @@ void menu_info_thermistors() {
99 103
     #endif
100 104
   );
101 105
 
102
-  char buffer[21];  // for STATIC_PAIR_P
106
+  char buffer[21];  // For macro usage
103 107
 
104 108
   START_SCREEN();
105 109
 
106 110
   #if EXTRUDERS
107 111
     #define THERMISTOR_ID TEMP_SENSOR_0
108 112
     #include "../thermistornames.h"
109
-    STATIC_ITEM("T0: " THERMISTOR_NAME, SS_INVERT);
110
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
111
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
113
+    STATIC_ITEM_P(PSTR(LCD_STR_E0 ": " THERMISTOR_NAME), SS_INVERT);
114
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
115
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
112 116
   #endif
113 117
 
114 118
   #if TEMP_SENSOR_1 != 0
115 119
     #undef THERMISTOR_ID
116 120
     #define THERMISTOR_ID TEMP_SENSOR_1
117 121
     #include "../thermistornames.h"
118
-    STATIC_ITEM("T1: " THERMISTOR_NAME, SS_INVERT);
119
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
120
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
122
+    STATIC_ITEM_P(PSTR(LCD_STR_E1 ": " THERMISTOR_NAME), SS_INVERT);
123
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
124
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
121 125
   #endif
122 126
 
123 127
   #if TEMP_SENSOR_2 != 0
124 128
     #undef THERMISTOR_ID
125 129
     #define THERMISTOR_ID TEMP_SENSOR_2
126 130
     #include "../thermistornames.h"
127
-    STATIC_ITEM("T2: " THERMISTOR_NAME, SS_INVERT);
128
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
129
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
131
+    STATIC_ITEM_P(PSTR(LCD_STR_E2 ": " THERMISTOR_NAME), SS_INVERT);
132
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
133
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
130 134
   #endif
131 135
 
132 136
   #if TEMP_SENSOR_3 != 0
133 137
     #undef THERMISTOR_ID
134 138
     #define THERMISTOR_ID TEMP_SENSOR_3
135 139
     #include "../thermistornames.h"
136
-    STATIC_ITEM("T3: " THERMISTOR_NAME, SS_INVERT);
137
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
138
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
140
+    STATIC_ITEM_P(PSTR(LCD_STR_E3 ": " THERMISTOR_NAME), SS_INVERT);
141
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
142
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
139 143
   #endif
140 144
 
141 145
   #if TEMP_SENSOR_4 != 0
142 146
     #undef THERMISTOR_ID
143 147
     #define THERMISTOR_ID TEMP_SENSOR_4
144 148
     #include "../thermistornames.h"
145
-    STATIC_ITEM("T4: " THERMISTOR_NAME, SS_INVERT);
146
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
147
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
149
+    STATIC_ITEM_P(PSTR(LCD_STR_E4 ": " THERMISTOR_NAME), SS_INVERT);
150
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
151
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
148 152
   #endif
149 153
 
150 154
   #if TEMP_SENSOR_5 != 0
151 155
     #undef THERMISTOR_ID
152 156
     #define THERMISTOR_ID TEMP_SENSOR_5
153 157
     #include "../thermistornames.h"
154
-    STATIC_ITEM("T5: " THERMISTOR_NAME, SS_INVERT);
155
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
156
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
158
+    STATIC_ITEM_P(PSTR(LCD_STR_E5 ": " THERMISTOR_NAME), SS_INVERT);
159
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
160
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
157 161
   #endif
158 162
 
159 163
   #if EXTRUDERS
@@ -174,9 +178,9 @@ void menu_info_thermistors() {
174 178
     #undef THERMISTOR_ID
175 179
     #define THERMISTOR_ID TEMP_SENSOR_BED
176 180
     #include "../thermistornames.h"
177
-    STATIC_ITEM("TBed:" THERMISTOR_NAME, SS_INVERT);
178
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
179
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
181
+    STATIC_ITEM_P(PSTR("BED:" THERMISTOR_NAME), SS_INVERT);
182
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
183
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
180 184
     STATIC_ITEM(
181 185
       #if WATCH_BED
182 186
         MSG_INFO_RUNAWAY_ON
@@ -193,9 +197,9 @@ void menu_info_thermistors() {
193 197
     #undef THERMISTOR_ID
194 198
     #define THERMISTOR_ID TEMP_SENSOR_CHAMBER
195 199
     #include "../thermistornames.h"
196
-    STATIC_ITEM("TCham:" THERMISTOR_NAME, SS_INVERT);
197
-    STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
198
-    STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
200
+    STATIC_ITEM_P(PSTR("CHAM:" THERMISTOR_NAME), SS_INVERT);
201
+    VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
202
+    VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
199 203
     STATIC_ITEM(
200 204
       #if WATCH_CHAMBER
201 205
         MSG_INFO_RUNAWAY_ON
@@ -220,16 +224,16 @@ void menu_info_board() {
220 224
     #endif
221 225
   );
222 226
 
223
-  char buffer[21];  // for STATIC_PAIR_P
227
+  char buffer[21];  // For macro usage
224 228
 
225 229
   START_SCREEN();
226
-  STATIC_ITEM(BOARD_INFO_NAME, SS_CENTER|SS_INVERT);                // MyPrinterController
230
+  STATIC_ITEM_P(PSTR(BOARD_INFO_NAME), SS_CENTER|SS_INVERT);       // MyPrinterController
227 231
   #ifdef BOARD_WEBSITE_URL
228
-    STATIC_ITEM(BOARD_WEBSITE_URL, SS_LEFT);                        // www.my3dprinter.com
232
+    STATIC_ITEM_P(PSTR(BOARD_WEBSITE_URL), SS_LEFT);               // www.my3dprinter.com
229 233
   #endif
230
-  STATIC_PAIR_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
231
-  STATIC_PAIR_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER);    // Protocol: 1.0
232
-  STATIC_PAIR_P(MSG_INFO_PSU,      PSU_NAME, SS_CENTER);
234
+  VALUE_ITEM_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
235
+  VALUE_ITEM_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER);    // Protocol: 1.0
236
+  VALUE_ITEM_P(MSG_INFO_PSU,      PSU_NAME, SS_CENTER);
233 237
   END_SCREEN();
234 238
 }
235 239
 
@@ -259,12 +263,13 @@ void menu_info_board() {
259 263
       #endif
260 264
     );
261 265
     START_SCREEN();
262
-    STATIC_ITEM(MSG_MARLIN, SS_CENTER|SS_INVERT);               // Marlin
263
-    STATIC_ITEM(SHORT_BUILD_VERSION);                           // x.x.x-Branch
264
-    STATIC_ITEM(STRING_DISTRIBUTION_DATE);                      // YYYY-MM-DD HH:MM
265
-    STATIC_ITEM(MACHINE_NAME);                                  // My3DPrinter
266
-    STATIC_ITEM(WEBSITE_URL);                                   // www.my3dprinter.com
267
-    STATIC_ITEM(MSG_INFO_EXTRUDERS ": " STRINGIFY(EXTRUDERS));  // Extruders: 2
266
+    STATIC_ITEM_P(PSTR(MSG_MARLIN), SS_CENTER|SS_INVERT);       // Marlin
267
+    STATIC_ITEM_P(PSTR(SHORT_BUILD_VERSION));                   // x.x.x-Branch
268
+    STATIC_ITEM_P(PSTR(STRING_DISTRIBUTION_DATE));              // YYYY-MM-DD HH:MM
269
+    STATIC_ITEM_P(PSTR(MACHINE_NAME));                          // My3DPrinter
270
+    STATIC_ITEM_P(PSTR(WEBSITE_URL));                           // www.my3dprinter.com
271
+    char buffer[21];
272
+    VALUE_ITEM_P(MSG_INFO_EXTRUDERS, STRINGIFY(EXTRUDERS), SS_CENTER); // Extruders: 2
268 273
     #if ENABLED(AUTO_BED_LEVELING_3POINT)
269 274
       STATIC_ITEM(MSG_3POINT_LEVELING);                         // 3-Point Leveling
270 275
     #elif ENABLED(AUTO_BED_LEVELING_LINEAR)

+ 4
- 4
Marlin/src/lcd/menu/menu_main.cpp Zobrazit soubor

@@ -44,7 +44,7 @@
44 44
 
45 45
 #if MACHINE_CAN_STOP
46 46
   void menu_abort_confirm() {
47
-    do_select_screen(PSTR(MSG_BUTTON_STOP), PSTR(MSG_BACK), ui.abort_print, ui.goto_previous_screen, PSTR(MSG_STOP_PRINT), nullptr, PSTR("?"));
47
+    do_select_screen(GET_TEXT(MSG_BUTTON_STOP), GET_TEXT(MSG_BACK), ui.abort_print, ui.goto_previous_screen, GET_TEXT(MSG_STOP_PRINT), nullptr, PSTR("?"));
48 48
   }
49 49
 #endif // MACHINE_CAN_STOP
50 50
 
@@ -238,13 +238,13 @@ void menu_main() {
238 238
 
239 239
   #if HAS_SERVICE_INTERVALS
240 240
     #if SERVICE_INTERVAL_1 > 0
241
-      SUBMENU(SERVICE_NAME_1, menu_service1);
241
+      SUBMENU_P(PSTR(SERVICE_NAME_1), menu_service1);
242 242
     #endif
243 243
     #if SERVICE_INTERVAL_2 > 0
244
-      SUBMENU(SERVICE_NAME_2, menu_service2);
244
+      SUBMENU_P(PSTR(SERVICE_NAME_2), menu_service2);
245 245
     #endif
246 246
     #if SERVICE_INTERVAL_3 > 0
247
-      SUBMENU(SERVICE_NAME_3, menu_service3);
247
+      SUBMENU_P(PSTR(SERVICE_NAME_3), menu_service3);
248 248
     #endif
249 249
   #endif
250 250
 

+ 4
- 4
Marlin/src/lcd/menu/menu_media.cpp Zobrazit soubor

@@ -80,9 +80,9 @@ inline void sdcard_start_selected_file() {
80 80
     buffer[0] = ' ';
81 81
     strcpy(buffer + 1, longest);
82 82
     do_select_screen(
83
-      PSTR(MSG_BUTTON_PRINT), PSTR(MSG_BUTTON_CANCEL),
83
+      GET_TEXT(MSG_BUTTON_PRINT), GET_TEXT(MSG_BUTTON_CANCEL),
84 84
       sdcard_start_selected_file, ui.goto_previous_screen,
85
-      PSTR(MSG_START_PRINT), buffer, PSTR("?")
85
+      GET_TEXT(MSG_START_PRINT), buffer, PSTR("?")
86 86
     );
87 87
   }
88 88
 
@@ -134,11 +134,11 @@ void menu_media() {
134 134
   BACK_ITEM(MSG_MAIN);
135 135
   if (card.flag.workDirIsRoot) {
136 136
     #if !PIN_EXISTS(SD_DETECT)
137
-      ACTION_ITEM(LCD_STR_REFRESH MSG_REFRESH, [](){ encoderTopLine = 0; card.mount(); });
137
+      ACTION_ITEM(MSG_REFRESH, [](){ encoderTopLine = 0; card.mount(); });
138 138
     #endif
139 139
   }
140 140
   else if (card.isMounted())
141
-    ACTION_ITEM(LCD_STR_FOLDER "..", lcd_sd_updir);
141
+    ACTION_ITEM_P(PSTR(LCD_STR_FOLDER ".."), lcd_sd_updir);
142 142
 
143 143
   if (ui.should_draw()) for (uint16_t i = 0; i < fileCnt; i++) {
144 144
     if (_menuLineNr == _thisItemNr) {

+ 13
- 9
Marlin/src/lcd/menu/menu_mixer.cpp Zobrazit soubor

@@ -50,7 +50,8 @@
50 50
     }
51 51
     if (ui.should_draw()) {
52 52
       char tmp[21];
53
-      sprintf_P(tmp, PSTR(MSG_START_Z ": %4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
53
+      strcpy_P(tmp, GET_TEXT(MSG_START_Z));
54
+      sprintf_P(tmp + strlen(tmp), PSTR(": %4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
54 55
       SETCURSOR(2, (LCD_HEIGHT - 1) / 2);
55 56
       LCDPRINT(tmp);
56 57
     }
@@ -75,7 +76,8 @@
75 76
 
76 77
     if (ui.should_draw()) {
77 78
       char tmp[21];
78
-      sprintf_P(tmp, PSTR(MSG_END_Z ": %4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
79
+      strcpy_P(tmp, GET_TEXT(MSG_END_Z));
80
+      sprintf_P(tmp + strlen(tmp), PSTR(": %4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
79 81
       SETCURSOR(2, (LCD_HEIGHT - 1) / 2);
80 82
       LCDPRINT(tmp);
81 83
     }
@@ -101,13 +103,13 @@
101 103
 
102 104
     char tmp[18];
103 105
 
104
-    SUBMENU(MSG_START_Z ":", lcd_mixer_gradient_z_start_edit);
106
+    SUBMENU(MSG_START_Z, lcd_mixer_gradient_z_start_edit);
105 107
     MENU_ITEM_ADDON_START(9);
106 108
       sprintf_P(tmp, PSTR("%4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
107 109
       LCDPRINT(tmp);
108 110
     MENU_ITEM_ADDON_END();
109 111
 
110
-    SUBMENU(MSG_END_Z ":", lcd_mixer_gradient_z_end_edit);
112
+    SUBMENU(MSG_END_Z, lcd_mixer_gradient_z_end_edit);
111 113
     MENU_ITEM_ADDON_START(9);
112 114
       sprintf_P(tmp, PSTR("%4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
113 115
       LCDPRINT(tmp);
@@ -122,9 +124,11 @@ static uint8_t v_index;
122 124
 
123 125
 #if DUAL_MIXING_EXTRUDER
124 126
   void _lcd_draw_mix(const uint8_t y) {
125
-    char tmp[21];
126
-    sprintf_P(tmp, PSTR(MSG_MIX ":    %3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1]));
127
+    char tmp[10]; // "100%_100%"
127 128
     SETCURSOR(2, y);
129
+    lcd_put_u8str_P(GET_TEXT(MSG_MIX));
130
+    SETCURSOR(LCD_WIDTH - 9, y);
131
+    sprintf_P(tmp, PSTR("%3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1]));
128 132
     LCDPRINT(tmp);
129 133
   }
130 134
 #endif
@@ -158,7 +162,7 @@ void lcd_mixer_mix_edit() {
158 162
 
159 163
   #if CHANNEL_MIX_EDITING
160 164
 
161
-    #define EDIT_COLOR(N) EDIT_ITEM_FAST(float52, MSG_MIX_COMPONENT " " STRINGIFY(N), &mixer.collector[N-1], 0, 10);
165
+    #define EDIT_COLOR(N) EDIT_ITEM_FAST(float52, MSG_MIX_COMPONENT_##N, &mixer.collector[N-1], 0, 10);
162 166
 
163 167
     START_MENU();
164 168
     BACK_ITEM(MSG_MIXER);
@@ -250,14 +254,14 @@ void lcd_mixer_mix_edit() {
250 254
 //
251 255
 void menu_mixer_vtools_reset_confirm() {
252 256
   do_select_screen(
253
-    PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
257
+    GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
254 258
     []{
255 259
       mixer.reset_vtools();
256 260
       LCD_MESSAGEPGM(MSG_VTOOLS_RESET);
257 261
       ui.return_to_status();
258 262
     },
259 263
     ui.goto_previous_screen,
260
-    PSTR(MSG_RESET_VTOOLS), nullptr, PSTR("?")
264
+    GET_TEXT(MSG_RESET_VTOOLS), nullptr, PSTR("?")
261 265
   );
262 266
 }
263 267
 

+ 4
- 4
Marlin/src/lcd/menu/menu_mmu2.cpp Zobrazit soubor

@@ -38,7 +38,7 @@ bool mmuMenuWait;
38 38
 void _mmu2_load_filamentToNozzle(uint8_t index) {
39 39
   ui.reset_status();
40 40
   ui.return_to_status();
41
-  ui.status_printf_P(0,  PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
41
+  ui.status_printf_P(0,  GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
42 42
   if (mmu2.load_filament_to_nozzle(index)) ui.reset_status();
43 43
 }
44 44
 
@@ -49,7 +49,7 @@ inline void action_mmu2_load_filament_to_nozzle(const uint8_t tool) {
49 49
 
50 50
 void _mmu2_load_filament(uint8_t index) {
51 51
   ui.return_to_status();
52
-  ui.status_printf_P(0, PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
52
+  ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
53 53
   mmu2.load_filament(index);
54 54
   ui.reset_status();
55 55
 }
@@ -89,7 +89,7 @@ void menu_mmu2_load_to_nozzle() {
89 89
 void _mmu2_eject_filament(uint8_t index) {
90 90
   ui.reset_status();
91 91
   ui.return_to_status();
92
-  ui.status_printf_P(0, PSTR(MSG_MMU2_EJECTING_FILAMENT), int(index + 1));
92
+  ui.status_printf_P(0, GET_TEXT(MSG_MMU2_EJECTING_FILAMENT), int(index + 1));
93 93
   if (mmu2.eject_filament(index, true)) ui.reset_status();
94 94
 }
95 95
 
@@ -162,7 +162,7 @@ void menu_mmu2_pause() {
162 162
   currentTool = mmu2.get_current_tool();
163 163
   START_MENU();
164 164
   #if LCD_HEIGHT > 2
165
-    STATIC_ITEM(MSG_MMU2_FILAMENT_CHANGE_HEADER, SS_CENTER|SS_INVERT);
165
+    STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, SS_CENTER|SS_INVERT);
166 166
   #endif
167 167
   ACTION_ITEM(MSG_MMU2_RESUME, [](){ mmuMenuWait = false; });
168 168
   ACTION_ITEM(MSG_MMU2_UNLOAD_FILAMENT, [](){ mmu2.unload(); });

+ 26
- 28
Marlin/src/lcd/menu/menu_motion.cpp Zobrazit soubor

@@ -155,9 +155,9 @@ static void _lcd_move_xyz(PGM_P name, AxisEnum axis) {
155 155
     draw_edit_screen(name, move_menu_scale >= 0.1f ? ftostr41sign(pos) : ftostr43sign(pos));
156 156
   }
157 157
 }
158
-void lcd_move_x() { _lcd_move_xyz(PSTR(MSG_MOVE_X), X_AXIS); }
159
-void lcd_move_y() { _lcd_move_xyz(PSTR(MSG_MOVE_Y), Y_AXIS); }
160
-void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
158
+void lcd_move_x() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_X), X_AXIS); }
159
+void lcd_move_y() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Y), Y_AXIS); }
160
+void lcd_move_z() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Z), Z_AXIS); }
161 161
 
162 162
 #if E_MANUAL
163 163
 
@@ -185,21 +185,19 @@ void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
185 185
       ui.encoderPosition = 0;
186 186
     }
187 187
     if (ui.should_draw()) {
188
-      PGM_P pos_label;
189
-      #if E_MANUAL == 1
190
-        pos_label = PSTR(MSG_MOVE_E);
191
-      #else
188
+      PGM_P pos_label = GET_TEXT(MSG_MOVE_E);
189
+      #if E_MANUAL > 1
192 190
         switch (eindex) {
193
-          default: pos_label = PSTR(MSG_MOVE_E LCD_STR_N0); break;
194
-          case 1: pos_label = PSTR(MSG_MOVE_E LCD_STR_N1); break;
191
+          default: pos_label = GET_TEXT(MSG_MOVE_E0); break;
192
+          case 1: pos_label = GET_TEXT(MSG_MOVE_E1); break;
195 193
           #if E_MANUAL > 2
196
-            case 2: pos_label = PSTR(MSG_MOVE_E LCD_STR_N2); break;
194
+            case 2: pos_label = GET_TEXT(MSG_MOVE_E2); break;
197 195
             #if E_MANUAL > 3
198
-              case 3: pos_label = PSTR(MSG_MOVE_E LCD_STR_N3); break;
196
+              case 3: pos_label = GET_TEXT(MSG_MOVE_E3); break;
199 197
               #if E_MANUAL > 4
200
-                case 4: pos_label = PSTR(MSG_MOVE_E LCD_STR_N4); break;
198
+                case 4: pos_label = GET_TEXT(MSG_MOVE_E4); break;
201 199
                 #if E_MANUAL > 5
202
-                  case 5: pos_label = PSTR(MSG_MOVE_E LCD_STR_N5); break;
200
+                  case 5: pos_label = GET_TEXT(MSG_MOVE_E5); break;
203 201
                 #endif // E_MANUAL > 5
204 202
               #endif // E_MANUAL > 4
205 203
             #endif // E_MANUAL > 3
@@ -263,13 +261,13 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
263 261
     SUBMENU(MSG_MOVE_1MM,  [](){ _goto_manual_move( 1);    });
264 262
     SUBMENU(MSG_MOVE_01MM, [](){ _goto_manual_move( 0.1f); });
265 263
     if (axis == Z_AXIS && (SHORT_MANUAL_Z_MOVE) > 0.0f && (SHORT_MANUAL_Z_MOVE) < 0.1f) {
266
-      SUBMENU("", []{ _goto_manual_move(float(SHORT_MANUAL_Z_MOVE)); });
264
+      SUBMENU_P(PSTR(""), []{ _goto_manual_move(float(SHORT_MANUAL_Z_MOVE)); });
267 265
       MENU_ITEM_ADDON_START(1);
268 266
         char tmp[20], numstr[10];
269 267
         // Determine digits needed right of decimal
270 268
         const uint8_t digs = !UNEAR_ZERO((SHORT_MANUAL_Z_MOVE) * 1000 - int((SHORT_MANUAL_Z_MOVE) * 1000)) ? 4 :
271 269
                              !UNEAR_ZERO((SHORT_MANUAL_Z_MOVE) *  100 - int((SHORT_MANUAL_Z_MOVE) *  100)) ? 3 : 2;
272
-        sprintf_P(tmp, PSTR(MSG_MOVE_Z_DIST), dtostrf(SHORT_MANUAL_Z_MOVE, 1, digs, numstr));
270
+        sprintf_P(tmp, GET_TEXT(MSG_MOVE_Z_DIST), dtostrf(SHORT_MANUAL_Z_MOVE, 1, digs, numstr));
273 271
         LCDPRINT(tmp);
274 272
       MENU_ITEM_ADDON_END();
275 273
     }
@@ -316,35 +314,35 @@ void menu_move() {
316 314
 
317 315
     #if EXTRUDERS >= 4
318 316
       switch (active_extruder) {
319
-        case 0: GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1")); break;
320
-        case 1: GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0")); break;
321
-        case 2: GCODES_ITEM(MSG_SELECT " " LCD_STR_E3, PSTR("T3")); break;
322
-        case 3: GCODES_ITEM(MSG_SELECT " " LCD_STR_E2, PSTR("T2")); break;
317
+        case 0: GCODES_ITEM(MSG_SELECT_E1, PSTR("T1")); break;
318
+        case 1: GCODES_ITEM(MSG_SELECT_E0, PSTR("T0")); break;
319
+        case 2: GCODES_ITEM(MSG_SELECT_E3, PSTR("T3")); break;
320
+        case 3: GCODES_ITEM(MSG_SELECT_E2, PSTR("T2")); break;
323 321
         #if EXTRUDERS == 6
324
-          case 4: GCODES_ITEM(MSG_SELECT " " LCD_STR_E5, PSTR("T5")); break;
325
-          case 5: GCODES_ITEM(MSG_SELECT " " LCD_STR_E4, PSTR("T4")); break;
322
+          case 4: GCODES_ITEM(MSG_SELECT_E5, PSTR("T5")); break;
323
+          case 5: GCODES_ITEM(MSG_SELECT_E4, PSTR("T4")); break;
326 324
         #endif
327 325
       }
328 326
     #elif EXTRUDERS == 3
329 327
       if (active_extruder < 2) {
330 328
         if (active_extruder)
331
-          GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
329
+          GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
332 330
         else
333
-          GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
331
+          GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
334 332
       }
335 333
     #else
336 334
       if (active_extruder)
337
-        GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
335
+        GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
338 336
       else
339
-        GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
337
+        GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
340 338
     #endif
341 339
 
342 340
   #elif ENABLED(DUAL_X_CARRIAGE)
343 341
 
344 342
     if (active_extruder)
345
-      GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
343
+      GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
346 344
     else
347
-      GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
345
+      GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
348 346
 
349 347
   #endif
350 348
 
@@ -353,7 +351,7 @@ void menu_move() {
353 351
     // The current extruder
354 352
     SUBMENU(MSG_MOVE_E, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(); }, -1); });
355 353
 
356
-    #define SUBMENU_MOVE_E(N) SUBMENU(MSG_MOVE_E LCD_STR_N##N, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(N); }, N); });
354
+    #define SUBMENU_MOVE_E(N) SUBMENU(MSG_MOVE_E##N, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(N); }, N); });
357 355
 
358 356
     #if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
359 357
 

+ 6
- 6
Marlin/src/lcd/menu/menu_service.cpp Zobrazit soubor

@@ -45,10 +45,10 @@ inline void _service_reset(const int index) {
45 45
     char sram[30];
46 46
     strncpy_P(sram, PSTR(SERVICE_NAME_1), 29);
47 47
     do_select_screen(
48
-      PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
48
+      GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
49 49
       []{ _service_reset(1); },
50 50
       ui.goto_previous_screen,
51
-      PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
51
+      GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
52 52
     );
53 53
   }
54 54
 #endif
@@ -58,10 +58,10 @@ inline void _service_reset(const int index) {
58 58
     char sram[30];
59 59
     strncpy_P(sram, PSTR(SERVICE_NAME_2), 29);
60 60
     do_select_screen(
61
-      PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
61
+      GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
62 62
       []{ _service_reset(2); },
63 63
       ui.goto_previous_screen,
64
-      PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
64
+      GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
65 65
     );
66 66
   }
67 67
 #endif
@@ -71,10 +71,10 @@ inline void _service_reset(const int index) {
71 71
     char sram[30];
72 72
     strncpy_P(sram, PSTR(SERVICE_NAME_3), 29);
73 73
     do_select_screen(
74
-      PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
74
+      GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
75 75
       []{ _service_reset(3); },
76 76
       ui.goto_previous_screen,
77
-      PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
77
+      GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
78 78
     );
79 79
   }
80 80
 #endif

+ 10
- 10
Marlin/src/lcd/menu/menu_temperature.cpp Zobrazit soubor

@@ -87,14 +87,14 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
87 87
 #if HAS_TEMP_HOTEND || HAS_HEATED_BED
88 88
 
89 89
   #define _PREHEAT_ITEMS(M,N) do{ \
90
-    ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_both(M-1, N); }); \
91
-    ACTION_ITEM(MSG_PREHEAT_##M##_END " " LCD_STR_E##N, [](){ _preheat_end(M-1, N); }); \
90
+    ACTION_ITEM(MSG_PREHEAT_##M##_H##N, [](){ _preheat_both(M-1, N); }); \
91
+    ACTION_ITEM(MSG_PREHEAT_##M##_END_E##N, [](){ _preheat_end(M-1, N); }); \
92 92
   }while(0)
93 93
   #if HAS_HEATED_BED
94 94
     #define PREHEAT_ITEMS(M,N) _PREHEAT_ITEMS(M,N)
95 95
   #else
96 96
     #define PREHEAT_ITEMS(M,N) \
97
-      ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_end(M-1, N); })
97
+      ACTION_ITEM(MSG_PREHEAT_##M##_H##N, [](){ _preheat_end(M-1, N); })
98 98
   #endif
99 99
 
100 100
   void menu_preheat_m1() {
@@ -196,7 +196,7 @@ void menu_temperature() {
196 196
   #if HOTENDS == 1
197 197
     EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
198 198
   #elif HOTENDS > 1
199
-    #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
199
+    #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE_##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
200 200
     EDIT_TARGET(0);
201 201
     EDIT_TARGET(1);
202 202
     #if HOTENDS > 2
@@ -237,23 +237,23 @@ void menu_temperature() {
237 237
   #if FAN_COUNT > 0
238 238
     #if HAS_FAN0
239 239
       editable.uint8 = thermalManager.fan_speed[0];
240
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
240
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_1, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
241 241
       #if ENABLED(EXTRA_FAN_SPEED)
242
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
242
+        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_1, &thermalManager.new_fan_speed[0], 3, 255);
243 243
       #endif
244 244
     #endif
245 245
     #if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
246 246
       editable.uint8 = thermalManager.fan_speed[1];
247
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
247
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_2, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
248 248
       #if ENABLED(EXTRA_FAN_SPEED)
249
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
249
+        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_2, &thermalManager.new_fan_speed[1], 3, 255);
250 250
       #endif
251 251
     #endif
252 252
     #if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
253 253
       editable.uint8 = thermalManager.fan_speed[2];
254
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
254
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_3, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
255 255
       #if ENABLED(EXTRA_FAN_SPEED)
256
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
256
+        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_3, &thermalManager.new_fan_speed[2], 3, 255);
257 257
       #endif
258 258
     #endif
259 259
   #endif // FAN_COUNT > 0

+ 4
- 4
Marlin/src/lcd/menu/menu_tmc.cpp Zobrazit soubor

@@ -32,7 +32,7 @@
32 32
 #include "../../module/stepper/indirection.h"
33 33
 #include "../../feature/tmc_util.h"
34 34
 
35
-#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM(uint16_4, MSG, &stepper##ST.val_mA, 100, 3000, [](){ stepper##ST.refresh_stepper_current(); })
35
+#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM_P(uint16_4, PSTR(MSG), &stepper##ST.val_mA, 100, 3000, [](){ stepper##ST.refresh_stepper_current(); })
36 36
 
37 37
 void menu_tmc_current() {
38 38
   START_MENU();
@@ -81,7 +81,7 @@ void menu_tmc_current() {
81 81
 
82 82
 #if ENABLED(HYBRID_THRESHOLD)
83 83
 
84
-  #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM(uint8, MSG, &stepper##ST.stored.hybrid_thrs, 0, 255, [](){ stepper##ST.refresh_hybrid_thrs(); });
84
+  #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM_P(uint8, PSTR(MSG), &stepper##ST.stored.hybrid_thrs, 0, 255, [](){ stepper##ST.refresh_hybrid_thrs(); });
85 85
 
86 86
   void menu_tmc_hybrid_thrs() {
87 87
     START_MENU();
@@ -132,7 +132,7 @@ void menu_tmc_current() {
132 132
 
133 133
 #if ENABLED(SENSORLESS_HOMING)
134 134
 
135
-  #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, [](){ stepper##ST.refresh_homing_thrs(); });
135
+  #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM_P(int4, PSTR(MSG_##ST), &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, [](){ stepper##ST.refresh_homing_thrs(); });
136 136
 
137 137
   void menu_tmc_homing_thrs() {
138 138
     START_MENU();
@@ -156,7 +156,7 @@ void menu_tmc_current() {
156 156
 
157 157
 #if HAS_STEALTHCHOP
158 158
 
159
-  #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM(bool, MSG, &stepper##ST.stored.stealthChop_enabled, [](){ stepper##ST.refresh_stepping_mode(); })
159
+  #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM_P(bool, PSTR(MSG), &stepper##ST.stored.stealthChop_enabled, [](){ stepper##ST.refresh_stepping_mode(); })
160 160
 
161 161
   void menu_tmc_step_mode() {
162 162
     START_MENU();

+ 20
- 12
Marlin/src/lcd/menu/menu_tune.cpp Zobrazit soubor

@@ -74,7 +74,8 @@
74 74
           #else
75 75
             lcd_moveto(0, LCD_HEIGHT - 1);
76 76
           #endif
77
-          lcd_put_u8str_P(PSTR(MSG_BABYSTEP_TOTAL ":"));
77
+          lcd_put_u8str_P(GET_TEXT(MSG_BABYSTEP_TOTAL));
78
+          lcd_put_wchar(':');
78 79
           lcd_put_u8str(ftostr54sign(spm * babystep.axis_total[BS_TOTAL_AXIS(axis)]));
79 80
         }
80 81
       #endif
@@ -88,12 +89,12 @@
88 89
   }
89 90
 
90 91
   #if ENABLED(BABYSTEP_XY)
91
-    void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
92
-    void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
92
+    void _lcd_babystep_x() { _lcd_babystep(X_AXIS, GET_TEXT(MSG_BABYSTEP_X)); }
93
+    void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, GET_TEXT(MSG_BABYSTEP_Y)); }
93 94
   #endif
94 95
 
95 96
   #if DISABLED(BABYSTEP_ZPROBE_OFFSET)
96
-    void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
97
+    void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, GET_TEXT(MSG_BABYSTEP_Z)); }
97 98
     void lcd_babystep_z()  { _lcd_babystep_go(_lcd_babystep_z); }
98 99
   #endif
99 100
 
@@ -122,7 +123,7 @@ void menu_tune() {
122 123
   #if HOTENDS == 1
123 124
     EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
124 125
   #elif HOTENDS > 1
125
-    #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
126
+    #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE_##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
126 127
     EDIT_NOZZLE(0);
127 128
     EDIT_NOZZLE(1);
128 129
     #if HOTENDS > 2
@@ -155,24 +156,31 @@ void menu_tune() {
155 156
   //
156 157
   #if FAN_COUNT > 0
157 158
     #if HAS_FAN0
159
+      #if FAN_COUNT == 1
160
+        #define MSG_FIRST_FAN_SPEED       MSG_FAN_SPEED
161
+        #define MSG_FIRST_EXTRA_FAN_SPEED MSG_EXTRA_FAN_SPEED
162
+      #else
163
+        #define MSG_FIRST_FAN_SPEED       MSG_FAN_SPEED_1
164
+        #define MSG_FIRST_EXTRA_FAN_SPEED MSG_EXTRA_FAN_SPEED_1
165
+      #endif
158 166
       editable.uint8 = thermalManager.fan_speed[0];
159
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
167
+      EDIT_ITEM_FAST(percent, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
160 168
       #if ENABLED(EXTRA_FAN_SPEED)
161
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
169
+        EDIT_ITEM_FAST(percent, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
162 170
       #endif
163 171
     #endif
164 172
     #if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
165 173
       editable.uint8 = thermalManager.fan_speed[1];
166
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
174
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_2, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
167 175
       #if ENABLED(EXTRA_FAN_SPEED)
168
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
176
+        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_2, &thermalManager.new_fan_speed[1], 3, 255);
169 177
       #endif
170 178
     #endif
171 179
     #if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
172 180
       editable.uint8 = thermalManager.fan_speed[2];
173
-      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
181
+      EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_3, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
174 182
       #if ENABLED(EXTRA_FAN_SPEED)
175
-        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
183
+        EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_3, &thermalManager.new_fan_speed[2], 3, 255);
176 184
       #endif
177 185
     #endif
178 186
   #endif // FAN_COUNT > 0
@@ -185,7 +193,7 @@ void menu_tune() {
185 193
     EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[0], 10, 999, [](){ planner.refresh_e_factor(0); });
186 194
   #elif EXTRUDERS
187 195
     EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999, [](){ planner.refresh_e_factor(active_extruder); });
188
-    #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW LCD_STR_N##N, &planner.flow_percentage[N], 10, 999, [](){ planner.refresh_e_factor(N); })
196
+    #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW_##N, &planner.flow_percentage[N], 10, 999, [](){ planner.refresh_e_factor(N); })
189 197
     EDIT_FLOW(0);
190 198
     EDIT_FLOW(1);
191 199
     #if EXTRUDERS > 2

+ 11
- 11
Marlin/src/lcd/menu/menu_ubl.cpp Zobrazit soubor

@@ -79,7 +79,7 @@ void _lcd_mesh_edit_NOP() {
79 79
 float lcd_mesh_edit() {
80 80
   ui.goto_screen(_lcd_mesh_edit_NOP);
81 81
   ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
82
-  _lcd_mesh_fine_tune(PSTR(MSG_MESH_EDITOR));
82
+  _lcd_mesh_fine_tune(GET_TEXT(MSG_MESH_EDITOR));
83 83
   return mesh_edit_value;
84 84
 }
85 85
 
@@ -89,7 +89,7 @@ void lcd_mesh_edit_setup(const float &initial) {
89 89
 }
90 90
 
91 91
 void _lcd_z_offset_edit() {
92
-  _lcd_mesh_fine_tune(PSTR(MSG_UBL_Z_OFFSET));
92
+  _lcd_mesh_fine_tune(GET_TEXT(MSG_UBL_Z_OFFSET));
93 93
 }
94 94
 
95 95
 float lcd_z_offset_edit() {
@@ -358,7 +358,7 @@ void _lcd_ubl_load_mesh_cmd() {
358 358
   char ubl_lcd_gcode[25];
359 359
   sprintf_P(ubl_lcd_gcode, PSTR("G29 L%i"), ubl_storage_slot);
360 360
   lcd_enqueue_one_now(ubl_lcd_gcode);
361
-  sprintf_P(ubl_lcd_gcode, PSTR("M117 " MSG_MESH_LOADED), ubl_storage_slot);
361
+  sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_LOADED), ubl_storage_slot);
362 362
   lcd_enqueue_one_now(ubl_lcd_gcode);
363 363
 }
364 364
 
@@ -369,7 +369,7 @@ void _lcd_ubl_save_mesh_cmd() {
369 369
   char ubl_lcd_gcode[25];
370 370
   sprintf_P(ubl_lcd_gcode, PSTR("G29 S%i"), ubl_storage_slot);
371 371
   lcd_enqueue_one_now(ubl_lcd_gcode);
372
-  sprintf_P(ubl_lcd_gcode, PSTR("M117 " MSG_MESH_SAVED), ubl_storage_slot);
372
+  sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_SAVED), ubl_storage_slot);
373 373
   lcd_enqueue_one_now(ubl_lcd_gcode);
374 374
 }
375 375
 
@@ -578,13 +578,13 @@ void _menu_ubl_tools() {
578 578
 void _lcd_ubl_step_by_step() {
579 579
   START_MENU();
580 580
   BACK_ITEM(MSG_UBL_LEVEL_BED);
581
-  GCODES_ITEM("1 " MSG_UBL_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
582
-  GCODES_ITEM("2 " MSG_UBL_SMART_FILLIN, PSTR("G29 P3 T0"));
583
-  SUBMENU("3 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
584
-  GCODES_ITEM("4 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
585
-  SUBMENU("5 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
586
-  GCODES_ITEM("6 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
587
-  ACTION_ITEM("7 " MSG_UBL_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
581
+  GCODES_ITEM(MSG_UBL_1_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
582
+  GCODES_ITEM(MSG_UBL_2_SMART_FILLIN, PSTR("G29 P3 T0"));
583
+  SUBMENU(MSG_UBL_3_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
584
+  GCODES_ITEM(MSG_UBL_4_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
585
+  SUBMENU(MSG_UBL_5_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
586
+  GCODES_ITEM(MSG_UBL_6_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
587
+  ACTION_ITEM(MSG_UBL_7_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
588 588
   END_MENU();
589 589
 }
590 590
 

+ 17
- 18
Marlin/src/lcd/ultralcd.cpp Zobrazit soubor

@@ -44,19 +44,15 @@
44 44
 #if HAS_SPI_LCD
45 45
   #if ENABLED(STATUS_MESSAGE_SCROLLING)
46 46
     uint8_t MarlinUI::status_scroll_offset; // = 0
47
-    #if LONG_FILENAME_LENGTH > CHARSIZE * 2 * (LCD_WIDTH)
48
-      #define MAX_MESSAGE_LENGTH LONG_FILENAME_LENGTH
49
-    #else
50
-      #define MAX_MESSAGE_LENGTH CHARSIZE * 2 * (LCD_WIDTH)
51
-    #endif
47
+    constexpr uint8_t MAX_MESSAGE_LENGTH = max(LONG_FILENAME_LENGTH, MAX_LANG_CHARSIZE * 2 * (LCD_WIDTH));
52 48
   #else
53
-    #define MAX_MESSAGE_LENGTH CHARSIZE * (LCD_WIDTH)
49
+    constexpr uint8_t MAX_MESSAGE_LENGTH = MAX_LANG_CHARSIZE * (LCD_WIDTH);
54 50
   #endif
55 51
 #elif ENABLED(EXTENSIBLE_UI)
56
-  #define MAX_MESSAGE_LENGTH 63
52
+  constexpr uint8_t MAX_MESSAGE_LENGTH = 63;
57 53
 #endif
58 54
 
59
-#ifdef MAX_MESSAGE_LENGTH
55
+#if HAS_SPI_LCD || ENABLED(EXTENSIBLE_UI)
60 56
   uint8_t MarlinUI::alert_level; // = 0
61 57
   char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1];
62 58
 #endif
@@ -590,9 +586,12 @@ void MarlinUI::status_screen() {
590 586
   draw_status_screen();
591 587
 }
592 588
 
593
-void MarlinUI::kill_screen(PGM_P lcd_msg) {
589
+void MarlinUI::kill_screen(PGM_P lcd_error, PGM_P lcd_component) {
594 590
   init();
595
-  set_alert_status_P(lcd_msg);
591
+  status_printf_P(1, PSTR(S_FMT ": " S_FMT), lcd_error, lcd_component);
592
+  #if HAS_LCD_MENU
593
+    return_to_status();
594
+  #endif
596 595
 
597 596
   // RED ALERT. RED ALERT.
598 597
   #ifdef LED_BACKLIGHT_TIMEOUT
@@ -843,13 +842,13 @@ void MarlinUI::update() {
843 842
         if (old_sd_status == 2)
844 843
           card.beginautostart();  // Initial boot
845 844
         else
846
-          set_status_P(PSTR(MSG_MEDIA_INSERTED));
845
+          set_status_P(GET_TEXT(MSG_MEDIA_INSERTED));
847 846
       }
848 847
       #if PIN_EXISTS(SD_DETECT)
849 848
         else {
850 849
           card.release();
851 850
           if (old_sd_status != 2) {
852
-            set_status_P(PSTR(MSG_MEDIA_REMOVED));
851
+            set_status_P(GET_TEXT(MSG_MEDIA_REMOVED));
853 852
             #if HAS_LCD_MENU
854 853
               return_to_status();
855 854
             #endif
@@ -1428,14 +1427,14 @@ void MarlinUI::update() {
1428 1427
   #include "../Marlin.h"
1429 1428
   #include "../module/printcounter.h"
1430 1429
 
1431
-  static const char print_paused[] PROGMEM = MSG_PRINT_PAUSED;
1430
+  PGM_P print_paused = GET_TEXT(MSG_PRINT_PAUSED);
1432 1431
 
1433 1432
   /**
1434 1433
    * Reset the status message
1435 1434
    */
1436 1435
   void MarlinUI::reset_status() {
1437
-    static const char printing[] PROGMEM = MSG_PRINTING;
1438
-    static const char welcome[] PROGMEM = WELCOME_MSG;
1436
+    PGM_P printing = GET_TEXT(MSG_PRINTING);
1437
+    PGM_P welcome  = GET_TEXT(WELCOME_MSG);
1439 1438
     #if SERVICE_INTERVAL_1 > 0
1440 1439
       static const char service1[] PROGMEM = { "> " SERVICE_NAME_1 "!" };
1441 1440
     #endif
@@ -1487,7 +1486,7 @@ void MarlinUI::update() {
1487 1486
       host_prompt_open(PROMPT_INFO, PSTR("UI Aborted"), PSTR("Dismiss"));
1488 1487
     #endif
1489 1488
     print_job_timer.stop();
1490
-    set_status_P(PSTR(MSG_PRINT_ABORTED));
1489
+    set_status_P(GET_TEXT(MSG_PRINT_ABORTED));
1491 1490
     #if HAS_LCD_MENU
1492 1491
       return_to_status();
1493 1492
     #endif
@@ -1499,7 +1498,7 @@ void MarlinUI::update() {
1499 1498
 
1500 1499
   void MarlinUI::pause_print() {
1501 1500
     #if HAS_LCD_MENU
1502
-      synchronize(PSTR(MSG_PAUSE_PRINT));
1501
+      synchronize(GET_TEXT(MSG_PAUSE_PRINT));
1503 1502
     #endif
1504 1503
 
1505 1504
     #if ENABLED(POWER_LOSS_RECOVERY)
@@ -1510,7 +1509,7 @@ void MarlinUI::update() {
1510 1509
       host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume"));
1511 1510
     #endif
1512 1511
 
1513
-    set_status_P(print_paused); // MSG_PRINT_PAUSED
1512
+    set_status_P(print_paused);
1514 1513
 
1515 1514
     #if ENABLED(PARK_HEAD_ON_PAUSE)
1516 1515
       #if HAS_SPI_LCD

+ 6
- 3
Marlin/src/lcd/ultralcd.h Zobrazit soubor

@@ -380,7 +380,7 @@ public:
380 380
     #endif
381 381
 
382 382
     static bool get_blink();
383
-    static void kill_screen(PGM_P const lcd_msg);
383
+    static void kill_screen(PGM_P const lcd_error, PGM_P const lcd_component);
384 384
     static void draw_kill_screen();
385 385
     static void set_status(const char* const message, const bool persist=false);
386 386
     static void set_status_P(PGM_P const message, const int8_t level=0);
@@ -598,5 +598,8 @@ private:
598 598
 
599 599
 extern MarlinUI ui;
600 600
 
601
-#define LCD_MESSAGEPGM(x)      ui.set_status_P(PSTR(x))
602
-#define LCD_ALERTMESSAGEPGM(x) ui.set_alert_status_P(PSTR(x))
601
+#define LCD_MESSAGEPGM_P(x)      ui.set_status_P(x)
602
+#define LCD_ALERTMESSAGEPGM_P(x) ui.set_alert_status_P(x)
603
+
604
+#define LCD_MESSAGEPGM(x)        LCD_MESSAGEPGM_P(GET_TEXT(x))
605
+#define LCD_ALERTMESSAGEPGM(x)   LCD_ALERTMESSAGEPGM_P(GET_TEXT(x))

+ 2
- 2
Marlin/src/module/endstops.cpp Zobrazit soubor

@@ -302,7 +302,7 @@ void Endstops::not_homing() {
302 302
   // If the last move failed to trigger an endstop, call kill
303 303
   void Endstops::validate_homing_move() {
304 304
     if (trigger_state()) hit_on_purpose();
305
-    else kill(PSTR(MSG_ERR_HOMING_FAILED));
305
+    else kill(GET_TEXT(MSG_LCD_HOMING_FAILED));
306 306
   }
307 307
 #endif
308 308
 
@@ -373,7 +373,7 @@ void Endstops::event_handler() {
373 373
     SERIAL_EOL();
374 374
 
375 375
     #if HAS_SPI_LCD
376
-      ui.status_printf_P(0, PSTR(S_FMT " %c %c %c %c"), PSTR(MSG_LCD_ENDSTOPS), chrX, chrY, chrZ, chrP);
376
+      ui.status_printf_P(0, PSTR(S_FMT " %c %c %c %c"), GET_TEXT(MSG_LCD_ENDSTOPS), chrX, chrY, chrZ, chrP);
377 377
     #endif
378 378
 
379 379
     #if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT)

+ 0
- 0
Marlin/src/module/motion.cpp Zobrazit soubor


Některé soubory nejsou zobrazny, neboť je v této revizi změněno mnoho souborů

Loading…
Zrušit
Uložit