瀏覽代碼

LULZBOT_TOUCH_UI: Localization, runtime language selection (#15249)

Marcio Teixeira 4 年之前
父節點
當前提交
18821f29d5
共有 100 個檔案被更改,包括 1586 行新增538 行删除
  1. 3
    3
      Marlin/Makefile
  2. 7
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/config.h
  3. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/basic/commands.cpp
  4. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/basic/commands.h
  5. 47
    9
      Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/extended/command_processor.h
  6. 55
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.cpp
  7. 46
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h
  8. 84
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h
  9. 410
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h
  10. 90
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h
  11. 26
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h
  12. 17
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/about_screen.cpp
  13. 32
    32
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/advanced_settings_menu.cpp
  14. 9
    9
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/backlash_compensation_screen.cpp
  15. 28
    28
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp
  16. 15
    15
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_advanced_settings.cpp
  17. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp
  18. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp
  19. 8
    8
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp
  20. 8
    12
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp
  21. 14
    21
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp
  22. 5
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp
  23. 44
    36
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/change_filament_screen.cpp
  24. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_abort_print_dialog_box.cpp
  25. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_auto_calibration_dialog_box.cpp
  26. 3
    3
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_erase_flash_dialog_box.cpp
  27. 6
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/default_acceleration_screen.cpp
  28. 4
    4
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/dialog_box_base_class.cpp
  29. 6
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/display_tuning_screen.cpp
  30. 23
    23
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp
  31. 3
    3
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/feedrate_percent_screen.cpp
  32. 8
    8
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/filament_menu.cpp
  33. 5
    5
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/filament_runout_screen.cpp
  34. 4
    4
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp
  35. 13
    13
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/interface_settings_screen.cpp
  36. 8
    8
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/interface_sounds_screen.cpp
  37. 6
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/jerk_screen.cpp
  38. 2
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/junction_deviation_screen.cpp
  39. 2
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp
  40. 56
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/language_menu.cpp
  41. 6
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/linear_advance_screen.cpp
  42. 4
    4
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/lock_screen.cpp
  43. 20
    20
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/main_menu.cpp
  44. 10
    10
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp
  45. 10
    10
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_velocity_screen.cpp
  46. 10
    10
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/move_axis_screen.cpp
  47. 6
    6
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/nozzle_offsets_screen.cpp
  48. 15
    14
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/nudge_nozzle_screen.cpp
  49. 3
    3
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/restore_failsafe_dialog_box.cpp
  50. 2
    2
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/save_settings_dialog_box.cpp
  51. 3
    0
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp
  52. 21
    11
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h
  53. 1
    1
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/spinner_dialog_box.cpp
  54. 7
    7
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/statistics_screen.cpp
  55. 39
    55
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/status_screen.cpp
  56. 4
    4
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/stepper_bump_sensitivity_screen.cpp
  57. 10
    10
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/stepper_current_screen.cpp
  58. 10
    10
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/steps_screen.cpp
  59. 13
    20
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/temperature_screen.cpp
  60. 7
    33
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/touch_calibration_screen.cpp
  61. 20
    20
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/tune_menu.cpp
  62. 3
    3
      Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/z_offset_screen.cpp
  63. 7
    0
      config/default/Configuration_adv.h
  64. 7
    0
      config/examples/3DFabXYZ/Migbot/Configuration_adv.h
  65. 7
    0
      config/examples/ADIMLab/Gantry v1/Configuration_adv.h
  66. 7
    0
      config/examples/ADIMLab/Gantry v2/Configuration_adv.h
  67. 7
    0
      config/examples/AlephObjects/TAZ4/Configuration_adv.h
  68. 7
    0
      config/examples/Alfawise/U20-bltouch/Configuration_adv.h
  69. 7
    0
      config/examples/Alfawise/U20/Configuration_adv.h
  70. 7
    0
      config/examples/AliExpress/UM2pExt/Configuration_adv.h
  71. 7
    0
      config/examples/Anet/A2/Configuration_adv.h
  72. 7
    0
      config/examples/Anet/A2plus/Configuration_adv.h
  73. 7
    0
      config/examples/Anet/A6/Configuration_adv.h
  74. 7
    0
      config/examples/Anet/A8/Configuration_adv.h
  75. 7
    0
      config/examples/Anet/A8plus/Configuration_adv.h
  76. 7
    0
      config/examples/Anet/E16/Configuration_adv.h
  77. 7
    0
      config/examples/AnyCubic/i3/Configuration_adv.h
  78. 7
    0
      config/examples/ArmEd/Configuration_adv.h
  79. 7
    0
      config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
  80. 7
    0
      config/examples/BIBO/TouchX/default/Configuration_adv.h
  81. 7
    0
      config/examples/BQ/Hephestos/Configuration_adv.h
  82. 7
    0
      config/examples/BQ/Hephestos_2/Configuration_adv.h
  83. 7
    0
      config/examples/BQ/WITBOX/Configuration_adv.h
  84. 7
    0
      config/examples/Cartesio/Configuration_adv.h
  85. 7
    0
      config/examples/Creality/CR-10/Configuration_adv.h
  86. 7
    0
      config/examples/Creality/CR-10S/Configuration_adv.h
  87. 7
    0
      config/examples/Creality/CR-10_5S/Configuration_adv.h
  88. 7
    0
      config/examples/Creality/CR-10mini/Configuration_adv.h
  89. 7
    0
      config/examples/Creality/CR-20 Pro/Configuration_adv.h
  90. 7
    0
      config/examples/Creality/CR-20/Configuration_adv.h
  91. 7
    0
      config/examples/Creality/CR-8/Configuration_adv.h
  92. 7
    0
      config/examples/Creality/Ender-2/Configuration_adv.h
  93. 7
    0
      config/examples/Creality/Ender-3/Configuration_adv.h
  94. 7
    0
      config/examples/Creality/Ender-4/Configuration_adv.h
  95. 7
    0
      config/examples/Creality/Ender-5/Configuration_adv.h
  96. 7
    0
      config/examples/Dagoma/Disco Ultimate/Configuration_adv.h
  97. 7
    0
      config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h
  98. 7
    0
      config/examples/Einstart-S/Configuration_adv.h
  99. 7
    0
      config/examples/FYSETC/AIO_II/Configuration_adv.h
  100. 0
    0
      config/examples/FYSETC/Cheetah 1.2/BLTouch/Configuration_adv.h

+ 3
- 3
Marlin/Makefile 查看文件

@@ -691,9 +691,9 @@ LIBWARN = -w -Wno-packed-bitfield-compat
691 691
 CSTANDARD = -std=gnu99
692 692
 CXXSTANDARD = -std=gnu++11
693 693
 CDEBUG = -g$(DEBUG)
694
-CWARN   = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
695
-CXXWARN = -Wall                     -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
696
-CTUNING = -fsigned-char -funsigned-bitfields -fpack-struct -fno-exceptions \
694
+CWARN   = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter -Wno-format
695
+CXXWARN = -Wall                     -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter -Wno-format
696
+CTUNING = -fsigned-char -funsigned-bitfields -fno-exceptions \
697 697
           -fshort-enums -ffunction-sections -fdata-sections
698 698
 ifneq ($(HARDWARE_MOTHERBOARD),)
699 699
   CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}

+ 7
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/config.h 查看文件

@@ -82,6 +82,13 @@
82 82
   #define TOUCH_UI_UTF8_WESTERN_CHARSET
83 83
 #endif
84 84
 
85
+// When labels do not fit buttons, use smaller font
86
+//#define TOUCH_UI_FIT_TEXT
87
+
88
+// Enable support for selection of languages at run-time
89
+// (otherwise will use the value of LCD_LANGUAGE)
90
+//#define TOUCH_UI_LANGUAGE_MENU
91
+
85 92
 // Use a numeric passcode for "Parental lock".
86 93
 // This is a recommended for smaller displays.
87 94
 //#define TOUCH_UI_PASSCODE

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/basic/commands.cpp 查看文件

@@ -66,7 +66,7 @@ uint16_t CLCD::FontMetrics::get_text_width(const char *str, size_t n) const {
66 66
   return width;
67 67
 }
68 68
 
69
-uint16_t CLCD::FontMetrics::get_text_width_P(const char *str, size_t n) const {
69
+uint16_t CLCD::FontMetrics::get_text_width(progmem_str str, size_t n) const {
70 70
   uint16_t width = 0;
71 71
   const uint8_t *p = (const uint8_t *) str;
72 72
   for(;;) {

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/basic/commands.h 查看文件

@@ -166,7 +166,7 @@ class CLCD::FontMetrics {
166 166
 
167 167
     // Returns width of string, up to a maximum of n characters.
168 168
     uint16_t get_text_width(const char *str, size_t n = SIZE_MAX) const;
169
-    uint16_t get_text_width_P(const char *str, size_t n = SIZE_MAX) const;
169
+    uint16_t get_text_width(progmem_str str, size_t n = SIZE_MAX) const;
170 170
 };
171 171
 
172 172
 /******************* FT800/810 Graphic Commands *********************************/

+ 47
- 9
Marlin/src/lcd/extensible_ui/lib/lulzbot/ftdi_eve_lib/extended/command_processor.h 查看文件

@@ -220,6 +220,14 @@ class CommandProcessor : public CLCD::CommandFifo {
220 220
       return *this;
221 221
     }
222 222
 
223
+    CommandProcessor& toggle2(int16_t x, int16_t y, int16_t w, int16_t h, progmem_str no, progmem_str yes, bool state, uint16_t options = FTDI::OPT_3D) {
224
+      char text[strlen_P((const char *)no) + strlen_P((const char *)yes) + 2];
225
+      strcpy_P(text, (const char *)no);
226
+      strcat(text, "\xFF");
227
+      strcat_P(text, (const char *)yes);
228
+      return toggle(x, y, w, h, text, state, options);
229
+    }
230
+
223 231
     // Contrained drawing routines. These constrain the widget inside a box for easier layout.
224 232
     // The FORCEDINLINE ensures that the code is inlined so that all the math is done at compile time.
225 233
 
@@ -288,8 +296,28 @@ class CommandProcessor : public CLCD::CommandFifo {
288 296
 
289 297
     void apply_text_alignment(int16_t &x, int16_t &y, int16_t w, int16_t h, uint16_t options) {
290 298
       using namespace FTDI;
291
-      x += ((options & OPT_CENTERX) ? w / 2 : ((options & OPT_RIGHTX) ? w : 0));
292
-      y += ((options & OPT_CENTERY) ? h / 2 : h);
299
+      x += ((options & OPT_CENTERX) ? w/2 : ((options & OPT_RIGHTX) ? w : 0));
300
+      y += ((options & OPT_CENTERY) ? h/2 : h);
301
+    }
302
+
303
+    // Reduce font size until text fits the enclosing box.
304
+    template<typename T>
305
+    int8_t apply_fit_text(int16_t w, int16_t h, T text) {
306
+      using namespace FTDI;
307
+      int8_t font = _font;
308
+      for (;;) {
309
+        #ifdef TOUCH_UI_USE_UTF8
310
+          const int16_t width  = get_utf8_text_width(text, font_size_t::from_romfont(font));
311
+          const int16_t height = font_size_t::from_romfont(font).get_height();
312
+        #else
313
+          CLCD::FontMetrics fm(font);
314
+          const int16_t width  = fm.get_text_width(text);
315
+          const int16_t height = fm.height;
316
+        #endif
317
+        if ((width < w && height < h) || font == 26) break;
318
+        font--;
319
+      }
320
+      return font;
293 321
     }
294 322
 
295 323
     CommandProcessor& number(int16_t x, int16_t y, int16_t w, int16_t h, int32_t n, uint16_t options = FTDI::OPT_CENTER) {
@@ -299,14 +327,19 @@ class CommandProcessor : public CLCD::CommandFifo {
299 327
       return *this;
300 328
     }
301 329
 
302
-    template<typename T> FORCEDINLINE
330
+    template<typename T>
303 331
     CommandProcessor& text(int16_t x, int16_t y, int16_t w, int16_t h, T text, uint16_t options = FTDI::OPT_CENTER) {
304 332
       using namespace FTDI;
305 333
       apply_text_alignment(x, y, w, h, options);
334
+      #ifdef TOUCH_UI_FIT_TEXT
335
+        const int8_t font = apply_fit_text(w, h, text);
336
+      #else
337
+        const int8_t font = _font;
338
+      #endif
306 339
       #ifdef TOUCH_UI_USE_UTF8
307
-        draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(_font), options);
340
+        draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(font), options);
308 341
       #else
309
-        CLCD::CommandFifo::text(x, y, _font, options);
342
+        CLCD::CommandFifo::text(x, y, font, options);
310 343
         CLCD::CommandFifo::str(text);
311 344
       #endif
312 345
       return *this;
@@ -319,8 +352,8 @@ class CommandProcessor : public CLCD::CommandFifo {
319 352
         cmd(BITMAP_TRANSFORM_A(uint32_t(float(256)/scale)));
320 353
         cmd(BITMAP_TRANSFORM_E(uint32_t(float(256)/scale)));
321 354
       }
322
-      cmd(BITMAP_SIZE(info.filter, info.wrapx, info.wrapy, info.width * scale, info.height * scale));
323
-      cmd(VERTEX2F((x + w / 2 - info.width * scale / 2) * 16, (y + h / 2 - info.height * scale / 2) * 16));
355
+      cmd(BITMAP_SIZE(info.filter, info.wrapx, info.wrapy, info.width*scale, info.height*scale));
356
+      cmd(VERTEX2F((x + w/2 - info.width*scale/2)*16, (y + h/2 - info.height*scale/2)*16));
324 357
       if (scale != 1) {
325 358
         cmd(BITMAP_TRANSFORM_A(256));
326 359
         cmd(BITMAP_TRANSFORM_E(256));
@@ -333,11 +366,16 @@ class CommandProcessor : public CLCD::CommandFifo {
333 366
       using namespace FTDI;
334 367
       bool styleModified = false;
335 368
       if (_btn_style_callback) styleModified = _btn_style_callback(*this, _tag, _style, options, false);
336
-      CLCD::CommandFifo::button(x, y, w, h, _font, options);
369
+      #ifdef TOUCH_UI_FIT_TEXT
370
+        const int8_t font = apply_fit_text(w, h, text);
371
+      #else
372
+        const int8_t font = _font;
373
+      #endif
374
+      CLCD::CommandFifo::button(x, y, w, h, font, options);
337 375
       #ifdef TOUCH_UI_USE_UTF8
338 376
         apply_text_alignment(x, y, w, h, OPT_CENTER);
339 377
         CLCD::CommandFifo::str(F(""));
340
-        draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(_font), OPT_CENTER);
378
+        draw_utf8_text(*this, x, y, text, font_size_t::from_romfont(font), OPT_CENTER);
341 379
       #else
342 380
         CLCD::CommandFifo::str(text);
343 381
       #endif

+ 55
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.cpp 查看文件

@@ -0,0 +1,55 @@
1
+/*****************
2
+ * language.cpp *
3
+ *****************/
4
+
5
+/****************************************************************************
6
+ *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  *
7
+ *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  *
8
+ *                                                                          *
9
+ *   This program is free software: you can redistribute it and/or modify   *
10
+ *   it under the terms of the GNU General Public License as published by   *
11
+ *   the Free Software Foundation, either version 3 of the License, or      *
12
+ *   (at your option) any later version.                                    *
13
+ *                                                                          *
14
+ *   This program is distributed in the hope that it will be useful,        *
15
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
16
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
17
+ *   GNU General Public License for more details.                           *
18
+ *                                                                          *
19
+ *   To view a copy of the GNU General Public License, go to the following  *
20
+ *   location: <http://www.gnu.org/licenses/>.                              *
21
+ ****************************************************************************/
22
+
23
+#include "../compat.h"
24
+
25
+#if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LANGUAGE_MENU)
26
+
27
+  #include "language_de.h"
28
+  #include "language_en.h"
29
+  #include "language_fr.h"
30
+
31
+  PROGMEM Language_List languages = {
32
+    &Language_de::strings,
33
+    &Language_en::strings,
34
+    &Language_fr::strings
35
+  };
36
+
37
+  uint8_t get_language_count() {
38
+    return sizeof(languages)/sizeof(languages[0]);
39
+  }
40
+
41
+  static uint8_t lang = 0;
42
+
43
+  void set_language(uint8_t l) {
44
+    lang = l;
45
+  };
46
+
47
+  const char *get_text(uint8_t lang, String_Indices index) {
48
+    const Language_Strings* strings = (const Language_Strings*) pgm_read_ptr(&languages[lang]);
49
+    return (const char *)pgm_read_ptr(&(*strings)[int(index)]);
50
+  };
51
+
52
+  const char *get_text(String_Indices index) {
53
+    return get_text(lang, index);
54
+  };
55
+#endif

+ 46
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h 查看文件

@@ -0,0 +1,46 @@
1
+/**************
2
+ * 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
+
22
+#pragma once
23
+
24
+enum class String_Indices { LANGUAGE_STRINGS, COUNT };
25
+
26
+typedef const char Language_Str[];
27
+typedef const char* const Language_Strings[int(String_Indices::COUNT)];
28
+typedef const Language_Strings* const Language_List[];
29
+
30
+#ifndef TOUCH_UI_LANGUAGE_MENU
31
+  // Default mode, support only one language.
32
+  #define __GET_TEXTF(MSG,LANG) Language_##LANG::MSG
33
+  #define _GET_TEXTF(MSG,LANG) __GET_TEXTF(MSG,LANG)
34
+  #define GET_TEXTF(MSG) reinterpret_cast<const __FlashStringHelper *>(_GET_TEXTF(MSG,LCD_LANGUAGE))
35
+  #define GET_TEXT(MSG) _GET_TEXTF(MSG,LCD_LANGUAGE)
36
+  #define MAKE_LANGUAGE_STRINGS()
37
+#else
38
+  // Support multiple languages at run-time.
39
+  uint8_t get_language_count();
40
+  void set_language(uint8_t index);
41
+  const char *get_text(String_Indices index);
42
+  const char *get_text(uint8_t lang, String_Indices index);
43
+  #define GET_TEXT(MSG) get_text(String_Indices::MSG)
44
+  #define GET_TEXTF(MSG) reinterpret_cast<const __FlashStringHelper *>(get_text(String_Indices::MSG))
45
+  #define MAKE_LANGUAGE_STRINGS() PROGMEM Language_Strings strings = { LANGUAGE_STRINGS }
46
+#endif

+ 84
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h 查看文件

@@ -0,0 +1,84 @@
1
+/*****************
2
+ * language_de.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
+
22
+#pragma once
23
+
24
+#include "language_en.h"
25
+
26
+namespace Language_de {
27
+  using namespace Language_en;
28
+
29
+  PROGMEM Language_Str LANGUAGE                 = u8"Deutsche";
30
+
31
+  PROGMEM Language_Str YES                      = u8"JA";
32
+  PROGMEM Language_Str NO                       = u8"NEIN";
33
+  PROGMEM Language_Str BACK                     = u8"Zurück";
34
+
35
+  PROGMEM Language_Str MOVE_AXIS                = u8"Achsen bewegen";
36
+  PROGMEM Language_Str MOTORS_OFF               = u8"Motoren deaktivieren";
37
+  PROGMEM Language_Str TEMPERATURE              = u8"Temperatur";
38
+  PROGMEM Language_Str CHANGE_FILAMENT          = u8"Filament wechseln";
39
+  PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Erw. Einstellungen";
40
+  PROGMEM Language_Str ABOUT_PRINTER            = u8"Über den Drucker";
41
+  PROGMEM Language_Str PRINTER_STATISTICS       = u8"Drucker-Statistik";
42
+
43
+  PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Sondenversatz Z";
44
+  PROGMEM Language_Str TOOL_OFFSETS             = u8"Werkzeugversätze";
45
+  PROGMEM Language_Str VELOCITY                 = u8"Geschwindigkeit";
46
+  PROGMEM Language_Str ACCELERATION             = u8"Beschleunigung";
47
+  PROGMEM Language_Str ACCEL_PRINTING           = u8"Beschleunigung";
48
+  PROGMEM Language_Str ACCEL_TRAVEL             = u8"A Einzug";
49
+  PROGMEM Language_Str ACCEL_RETRACT            = u8"A Leerfahrt";
50
+  PROGMEM Language_Str BACKLASH                 = u8"Spiel";
51
+  PROGMEM Language_Str SMOOTHING                = u8"Glätten";
52
+  PROGMEM Language_Str CORRECTION               = u8"Korrektur";
53
+  PROGMEM Language_Str ENDSTOPS                 = u8"Endstopp";
54
+  PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Software-Endstopp";
55
+  PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Standardwerte laden";
56
+
57
+
58
+  PROGMEM Language_Str HOTEND                   = u8"Düse";
59
+  PROGMEM Language_Str HOTEND1                  = u8"Düse 1";
60
+  PROGMEM Language_Str HOTEND2                  = u8"Düse 2";
61
+  PROGMEM Language_Str HOTEND3                  = u8"Düse 3";
62
+  PROGMEM Language_Str HOTEND4                  = u8"Düse 4";
63
+  PROGMEM Language_Str BED                      = u8"Bett";
64
+  PROGMEM Language_Str AXIS_ALL                 = u8"Alle";
65
+
66
+  PROGMEM Language_Str FAN_SPEED                = u8"Lüfter";
67
+
68
+  PROGMEM Language_Str PRINT_FILE               = u8"Drucken";
69
+
70
+  PROGMEM Language_Str RESUME_PRINT             = u8"SD-Druck fortsetzen";
71
+  PROGMEM Language_Str PAUSE_PRINT              = u8"SD-Druck pausieren";
72
+  PROGMEM Language_Str STOP_PRINT               = u8"SD-Druck abbrechen";
73
+
74
+  PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Gesamte Drucke";
75
+  PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Komplette Drucke";
76
+  PROGMEM Language_Str INFO_PRINT_TIME          = u8"Gesamte Druckzeit";
77
+  PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Längste Druckzeit";
78
+  PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Gesamt Extrudiert";
79
+
80
+  PROGMEM Language_Str PRINTER_HALTED           = u8"DRUCKER GESTOPPT";
81
+  PROGMEM Language_Str PLEASE_RESET             = u8"Bitte neustarten";
82
+
83
+  MAKE_LANGUAGE_STRINGS();
84
+}; // namespace Language_de

+ 410
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h 查看文件

@@ -0,0 +1,410 @@
1
+/*****************
2
+ * language_en.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
+
22
+#pragma once
23
+
24
+// The list LANGUAGE_STRINGS should define all the strings used in the default
25
+// language (Language_en). Translations do *not* need to re-define this.
26
+
27
+#define LANGUAGE_STRINGS \
28
+  LANGUAGE, \
29
+  YES, \
30
+  NO, \
31
+  BACK, \
32
+  COLOR_TOUCH_PANEL, \
33
+  ABOUT_ALEPH_OBJECTS, OKAY, \
34
+  FIRMWARE_FOR_TOOLHEAD, \
35
+  AUTO_HOME, \
36
+  CLEAN_NOZZLE, \
37
+  CHANGE_FILAMENT, \
38
+  ADVANCED_SETTINGS, \
39
+  PRINTER_STATISTICS, \
40
+  ABOUT_PRINTER, \
41
+  MOTORS_OFF, \
42
+  ZPROBE_ZOFFSET, \
43
+  STEPS_PER_MM, \
44
+  HOME_SENSE, \
45
+  TOOL_OFFSETS, \
46
+  MOTOR_CURRENT, \
47
+  FILAMENT, \
48
+  ENDSTOPS, \
49
+  X_MAX, \
50
+  X_MIN, \
51
+  Y_MAX, \
52
+  Y_MIN, \
53
+  Z_MAX, \
54
+  Z_MIN, \
55
+  Z_PROBE, \
56
+  RUNOUT_1, \
57
+  RUNOUT_2, \
58
+  SOFT_ENDSTOPS, \
59
+  DISPLAY_MENU, \
60
+  INTERFACE_SETTINGS, \
61
+  RESTORE_DEFAULTS, \
62
+  VELOCITY, \
63
+  VMAX_X, \
64
+  VMAX_Y, \
65
+  VMAX_Z, \
66
+  VMAX_E1, \
67
+  VMAX_E2, \
68
+  VMAX_E3, \
69
+  VMAX_E4, \
70
+  ACCELERATION, \
71
+  ACCEL_PRINTING, \
72
+  ACCEL_TRAVEL, \
73
+  ACCEL_RETRACT, \
74
+  AMAX_X, \
75
+  AMAX_Y, \
76
+  AMAX_Z, \
77
+  AMAX_E1, \
78
+  AMAX_E2, \
79
+  AMAX_E3, \
80
+  AMAX_E4, \
81
+  JERK, \
82
+  JUNCTION_DEVIATION, \
83
+  BACKLASH, \
84
+  MEASURE_AUTOMATICALLY, \
85
+  H_OFFSET, \
86
+  V_OFFSET, \
87
+  TOUCH_SCREEN, \
88
+  CALIBRATE, \
89
+  HOME, \
90
+  UNITS_MILLIAMP, \
91
+  UNITS_MM, \
92
+  UNITS_MM_S, \
93
+  UNITS_MM_S2, \
94
+  UNITS_STEP_MM, \
95
+  UNITS_PERCENT, \
96
+  UNITS_C, \
97
+  TEMP_IDLE, \
98
+  MATERIAL_PLA, \
99
+  MATERIAL_ABS, \
100
+  MATERIAL_HIGH_TEMP, \
101
+  AXIS_X, \
102
+  AXIS_Y, \
103
+  AXIS_Z, \
104
+  AXIS_E, \
105
+  AXIS_E1, \
106
+  AXIS_E2, \
107
+  AXIS_E3, \
108
+  AXIS_E4, \
109
+  AXIS_ALL, \
110
+  HOTEND, \
111
+  HOTEND1, \
112
+  HOTEND2, \
113
+  HOTEND3, \
114
+  HOTEND4, \
115
+  BED, \
116
+  SMOOTHING, \
117
+  CORRECTION, \
118
+  PRINTING, \
119
+  SET_MAXIMUM, \
120
+  RUNOUT_SENSOR, \
121
+  DETECTION_THRESHOLD, \
122
+  DISTANCE, \
123
+  TEMPERATURE, \
124
+  COOLDOWN, \
125
+  FAN_SPEED, \
126
+  PRINT_SPEED, \
127
+  SPEED, \
128
+  MOVE_AXIS, \
129
+  LINEAR_ADVANCE, \
130
+  LINEAR_ADVANCE_K, \
131
+  LINEAR_ADVANCE_K1, \
132
+  LINEAR_ADVANCE_K2, \
133
+  LINEAR_ADVANCE_K3, \
134
+  LINEAR_ADVANCE_K4, \
135
+  NUDGE_NOZZLE, \
136
+  ADJUST_BOTH_NOZZLES, \
137
+  SHOW_OFFSETS, \
138
+  INCREMENT, \
139
+  ERASE_FLASH_WARNING, \
140
+  ERASING, \
141
+  ERASED, \
142
+  CALIBRATION_WARNING, \
143
+  ABORT_WARNING, \
144
+  EXTRUDER_SELECTION, \
145
+  CURRENT_TEMPERATURE, \
146
+  REMOVAL_TEMPERATURE, \
147
+  HEATING, \
148
+  CAUTION, \
149
+  HOT, \
150
+  UNLOAD_FILAMENT, \
151
+  LOAD_FILAMENT, \
152
+  MOMENTARY, \
153
+  CONTINUOUS, \
154
+  PLEASE_WAIT, \
155
+  PRINT_MENU, \
156
+  FINE_MOTION, \
157
+  MEDIA, \
158
+  ENABLE_MEDIA, \
159
+  INSERT_MEDIA, \
160
+  MENU, \
161
+  LCD_BRIGHTNESS, \
162
+  SOUND_VOLUME, \
163
+  SCREEN_LOCK, \
164
+  BOOT_SCREEN, \
165
+  INTERFACE_SOUNDS, \
166
+  EEPROM_RESTORED, \
167
+  EEPROM_RESET, \
168
+  EEPROM_SAVED, \
169
+  EEPROM_SAVE_PROMPT, \
170
+  EEPROM_RESET_WARNING, \
171
+  OPEN_DIR, \
172
+  PRINT_FILE, \
173
+  PRINT_STARTING, \
174
+  PRINT_FINISHED, \
175
+  PRINT_ERROR, \
176
+  PASSCODE_REJECTED, \
177
+  PASSCODE_ACCEPTED, \
178
+  PASSCODE_SELECT, \
179
+  PASSCODE_REQUEST, \
180
+  PRINTER_HALTED, \
181
+  PLEASE_RESET, \
182
+  CLICK_SOUNDS, \
183
+  INFO_PRINT_COUNT, \
184
+  INFO_COMPLETED_PRINTS, \
185
+  INFO_PRINT_TIME, \
186
+  INFO_PRINT_LONGEST, \
187
+  INFO_PRINT_FILAMENT, \
188
+  RESUME_PRINT, \
189
+  PAUSE_PRINT, \
190
+  STOP_PRINT, \
191
+  TOUCH_CALIBRATION_START, \
192
+  TOUCH_CALIBRATION_PROMPT \
193
+  LULZBOT_BIOPRINTER_STRINGS
194
+
195
+#ifndef LULZBOT_USE_BIOPRINTER_UI
196
+  #define LULZBOT_BIOPRINTER_STRINGS
197
+#else
198
+  #define LULZBOT_BIOPRINTER_STRINGS ,\
199
+    MAIN_MENU, \
200
+    UNLOCK_XY_AXIS, \
201
+    LOAD_SYRINGE, \
202
+    BED_TEMPERATURE, \
203
+    LOADING_WARNING, \
204
+    HOMING_WARNING
205
+#endif
206
+
207
+#include "language.h" // This must be included after LANGUAGE_STRINGS
208
+
209
+// The string table for this language.
210
+
211
+namespace Language_en {
212
+  PROGMEM Language_Str LANGUAGE                 = u8"English";
213
+
214
+  PROGMEM Language_Str YES                      = u8"Yes";
215
+  PROGMEM Language_Str NO                       = u8"No";
216
+  PROGMEM Language_Str BACK                     = u8"Back";
217
+  PROGMEM Language_Str OKAY                     = u8"Okay";
218
+  PROGMEM Language_Str MENU                     = u8"Menu";
219
+  PROGMEM Language_Str MEDIA                    = u8"Media";
220
+
221
+  PROGMEM Language_Str AUTO_HOME                = u8"Auto Home";
222
+  PROGMEM Language_Str CLEAN_NOZZLE             = u8"Clean Nozzle";
223
+  PROGMEM Language_Str MOVE_AXIS                = u8"Move Axis";
224
+  PROGMEM Language_Str MOTORS_OFF               = u8"Motors Off";
225
+  PROGMEM Language_Str TEMPERATURE              = u8"Temperature";
226
+  PROGMEM Language_Str CHANGE_FILAMENT          = u8"Change Filament";
227
+  PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Advanced Settings";
228
+  PROGMEM Language_Str ABOUT_PRINTER            = u8"About Printer";
229
+  PROGMEM Language_Str PRINTER_STATISTICS       = u8"Printer Statistics";
230
+
231
+  PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Z Offset";
232
+  PROGMEM Language_Str STEPS_PER_MM             = u8"Steps/mm";
233
+  PROGMEM Language_Str TOOL_OFFSETS             = u8"Tool Offsets";
234
+  PROGMEM Language_Str VELOCITY                 = u8"Velocity";
235
+  PROGMEM Language_Str VMAX_X                   = u8"Vmax X";
236
+  PROGMEM Language_Str VMAX_Y                   = u8"Vmax Y";
237
+  PROGMEM Language_Str VMAX_Z                   = u8"Vmax Z";
238
+  PROGMEM Language_Str VMAX_E1                  = u8"Vmax E1";
239
+  PROGMEM Language_Str VMAX_E2                  = u8"Vmax E2";
240
+  PROGMEM Language_Str VMAX_E3                  = u8"Vmax E3";
241
+  PROGMEM Language_Str VMAX_E4                  = u8"Vmax E4";
242
+  PROGMEM Language_Str ACCELERATION             = u8"Acceleration";
243
+  PROGMEM Language_Str ACCEL_PRINTING           = u8"Printing";
244
+  PROGMEM Language_Str ACCEL_TRAVEL             = u8"Travel";
245
+  PROGMEM Language_Str ACCEL_RETRACT            = u8"Retraction";
246
+  PROGMEM Language_Str AMAX_X                   = u8"Amax X";
247
+  PROGMEM Language_Str AMAX_Y                   = u8"Amax Y";
248
+  PROGMEM Language_Str AMAX_Z                   = u8"Amax Z";
249
+  PROGMEM Language_Str AMAX_E1                  = u8"Amax E1";
250
+  PROGMEM Language_Str AMAX_E2                  = u8"Amax E2";
251
+  PROGMEM Language_Str AMAX_E3                  = u8"Amax E3";
252
+  PROGMEM Language_Str AMAX_E4                  = u8"Amax E4";
253
+  PROGMEM Language_Str JERK                     = u8"Jerk";
254
+  PROGMEM Language_Str JUNCTION_DEVIATION       = u8"Junc Dev";
255
+  PROGMEM Language_Str BACKLASH                 = u8"Backlash";
256
+  PROGMEM Language_Str SMOOTHING                = u8"Smoothing";
257
+  PROGMEM Language_Str CORRECTION               = u8"Correction";
258
+  PROGMEM Language_Str MOTOR_CURRENT            = u8"Currents";
259
+  PROGMEM Language_Str FILAMENT                 = u8"Filament";
260
+  PROGMEM Language_Str ENDSTOPS                 = u8"Endstops";
261
+  PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Soft Endstops";
262
+  PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Restore Defaults";
263
+
264
+  PROGMEM Language_Str HOTEND                   = u8"Hot End";
265
+  PROGMEM Language_Str HOTEND1                  = u8"Hot End 1";
266
+  PROGMEM Language_Str HOTEND2                  = u8"Hot End 2";
267
+  PROGMEM Language_Str HOTEND3                  = u8"Hot End 3";
268
+  PROGMEM Language_Str HOTEND4                  = u8"Hot End 4";
269
+  PROGMEM Language_Str BED                      = u8"Bed";
270
+  PROGMEM Language_Str AXIS_X                   = u8"X";
271
+  PROGMEM Language_Str AXIS_Y                   = u8"Y";
272
+  PROGMEM Language_Str AXIS_Z                   = u8"Z";
273
+  PROGMEM Language_Str AXIS_E                   = u8"E";
274
+  PROGMEM Language_Str AXIS_E1                  = u8"E1";
275
+  PROGMEM Language_Str AXIS_E2                  = u8"E2";
276
+  PROGMEM Language_Str AXIS_E3                  = u8"E3";
277
+  PROGMEM Language_Str AXIS_E4                  = u8"E4";
278
+  PROGMEM Language_Str AXIS_ALL                 = u8"All";
279
+  PROGMEM Language_Str HOME                     = u8"Home";
280
+
281
+  PROGMEM Language_Str FAN_SPEED                = u8"Fan Speed";
282
+  PROGMEM Language_Str RUNOUT_SENSOR            = u8"Runout Sensor";
283
+
284
+  PROGMEM Language_Str OPEN_DIR                 = u8"Open";
285
+  PROGMEM Language_Str PRINT_FILE               = u8"Print";
286
+
287
+  PROGMEM Language_Str RESUME_PRINT             = u8"Resume Print";
288
+  PROGMEM Language_Str PAUSE_PRINT              = u8"Pause Print";
289
+  PROGMEM Language_Str STOP_PRINT               = u8"Stop Print";
290
+
291
+  PROGMEM Language_Str PRINT_STARTING           = u8"Print starting";
292
+  PROGMEM Language_Str PRINT_FINISHED           = u8"Print finished";
293
+  PROGMEM Language_Str PRINT_ERROR              = u8"Print error";
294
+
295
+  PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Print Count";
296
+  PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Total Prints";
297
+  PROGMEM Language_Str INFO_PRINT_TIME          = u8"Total Print Time";
298
+  PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Longest Print";
299
+  PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Filament Used";
300
+
301
+  PROGMEM Language_Str PRINTER_HALTED           = u8"PRINTER HALTED";
302
+  PROGMEM Language_Str PLEASE_RESET             = u8"Please reset";
303
+
304
+  PROGMEM Language_Str COLOR_TOUCH_PANEL        = u8"Color Touch Panel";
305
+  PROGMEM Language_Str ABOUT_ALEPH_OBJECTS      = u8"(C) 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com";
306
+
307
+  PROGMEM Language_Str FIRMWARE_FOR_TOOLHEAD    = u8"Firmware for toolhead:\n%s\n\n";
308
+
309
+  PROGMEM Language_Str HOME_SENSE               = u8"Home Sense";
310
+  PROGMEM Language_Str X_MAX                    = u8"X Max";
311
+  PROGMEM Language_Str X_MIN                    = u8"X Min";
312
+  PROGMEM Language_Str Y_MAX                    = u8"Y Max";
313
+  PROGMEM Language_Str Y_MIN                    = u8"Y Min";
314
+  PROGMEM Language_Str Z_MAX                    = u8"Z Max";
315
+  PROGMEM Language_Str Z_MIN                    = u8"Z Min";
316
+  PROGMEM Language_Str Z_PROBE                  = u8"Z Probe";
317
+  PROGMEM Language_Str RUNOUT_1                 = u8"Runout 1";
318
+  PROGMEM Language_Str RUNOUT_2                 = u8"Runout 2";
319
+  PROGMEM Language_Str DISPLAY_MENU             = u8"Display";
320
+  PROGMEM Language_Str INTERFACE_SETTINGS       = u8"Interface Settings";
321
+  PROGMEM Language_Str MEASURE_AUTOMATICALLY    = u8"Measure automatically";
322
+  PROGMEM Language_Str H_OFFSET                 = u8"H Offset";
323
+  PROGMEM Language_Str V_OFFSET                 = u8"V Offset";
324
+  PROGMEM Language_Str TOUCH_SCREEN             = u8"Touch Screen";
325
+  PROGMEM Language_Str CALIBRATE                = u8"Calibrate";
326
+
327
+  PROGMEM Language_Str UNITS_MILLIAMP           = u8"mA";
328
+  PROGMEM Language_Str UNITS_MM                 = u8"mm";
329
+  PROGMEM Language_Str UNITS_MM_S               = u8"mm/s";
330
+  PROGMEM Language_Str UNITS_MM_S2              = u8"mm/s^2";
331
+  PROGMEM Language_Str UNITS_STEP_MM            = u8"st/mm";
332
+  PROGMEM Language_Str UNITS_PERCENT            = u8"%";
333
+  #if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
334
+    PROGMEM Language_Str UNITS_C                = u8"°C";
335
+  #else
336
+    PROGMEM Language_Str UNITS_C                = u8" C";
337
+  #endif
338
+  PROGMEM Language_Str MATERIAL_PLA             = u8"PLA";
339
+  PROGMEM Language_Str MATERIAL_ABS             = u8"ABS";
340
+  PROGMEM Language_Str MATERIAL_HIGH_TEMP       = u8"High";
341
+  PROGMEM Language_Str TEMP_IDLE                = u8"idle";
342
+
343
+  PROGMEM Language_Str PRINTING                 = u8"Printing";
344
+  PROGMEM Language_Str SET_MAXIMUM              = u8"Set Maximum";
345
+  PROGMEM Language_Str DETECTION_THRESHOLD      = u8"Detection Threshold";
346
+  PROGMEM Language_Str DISTANCE                 = u8"Distance";
347
+  PROGMEM Language_Str COOLDOWN                 = u8"Cooldown (All Off)";
348
+  PROGMEM Language_Str PRINT_SPEED              = u8"Print Speed";
349
+  PROGMEM Language_Str SPEED                    = u8"Speed";
350
+  PROGMEM Language_Str LINEAR_ADVANCE           = u8"Linear Advance";
351
+  PROGMEM Language_Str LINEAR_ADVANCE_K         = u8"K";
352
+  PROGMEM Language_Str LINEAR_ADVANCE_K1        = u8"K E1";
353
+  PROGMEM Language_Str LINEAR_ADVANCE_K2        = u8"K E2";
354
+  PROGMEM Language_Str LINEAR_ADVANCE_K3        = u8"K E3";
355
+  PROGMEM Language_Str LINEAR_ADVANCE_K4        = u8"K E4";
356
+  PROGMEM Language_Str NUDGE_NOZZLE             = u8"Nudge Nozzle";
357
+  PROGMEM Language_Str ADJUST_BOTH_NOZZLES      = u8"Adjust Both Nozzles";
358
+  PROGMEM Language_Str SHOW_OFFSETS             = u8"Show Offsets";
359
+  PROGMEM Language_Str INCREMENT                = u8"Increment";
360
+  PROGMEM Language_Str ERASE_FLASH_WARNING      = u8"Are you sure? SPI flash will be erased.";
361
+  PROGMEM Language_Str ERASING                  = u8"Erasing...";
362
+  PROGMEM Language_Str ERASED                   = u8"SPI flash erased";
363
+  PROGMEM Language_Str CALIBRATION_WARNING      = u8"For best results, unload the filament and clean the hotend prior to starting calibration. Continue?";
364
+  PROGMEM Language_Str ABORT_WARNING            = u8"Are you sure you want to cancel the print?";
365
+  PROGMEM Language_Str EXTRUDER_SELECTION       = u8"Extruder Selection";
366
+  PROGMEM Language_Str CURRENT_TEMPERATURE      = u8"Current Temp";
367
+  PROGMEM Language_Str REMOVAL_TEMPERATURE      = u8"Removal Temp";
368
+  PROGMEM Language_Str HEATING                  = u8"Heating";
369
+  PROGMEM Language_Str CAUTION                  = u8"Caution:";
370
+  PROGMEM Language_Str HOT                      = u8"Hot!";
371
+  PROGMEM Language_Str UNLOAD_FILAMENT          = u8"Unload";
372
+  PROGMEM Language_Str LOAD_FILAMENT            = u8"Load/Extruder";
373
+  PROGMEM Language_Str MOMENTARY                = u8"Momentary";
374
+  PROGMEM Language_Str CONTINUOUS               = u8"Continuous";
375
+  PROGMEM Language_Str PLEASE_WAIT              = u8"Please wait...";
376
+  PROGMEM Language_Str PRINT_MENU               = u8"Print Menu";
377
+  PROGMEM Language_Str FINE_MOTION              = u8"Fine motion";
378
+  PROGMEM Language_Str ENABLE_MEDIA             = u8"Enable Media";
379
+  PROGMEM Language_Str INSERT_MEDIA             = u8"Insert Media...";
380
+  PROGMEM Language_Str LCD_BRIGHTNESS           = u8"LCD brightness";
381
+  PROGMEM Language_Str SOUND_VOLUME             = u8"Sound volume";
382
+  PROGMEM Language_Str SCREEN_LOCK              = u8"Screen lock";
383
+  PROGMEM Language_Str BOOT_SCREEN              = u8"Boot screen";
384
+  PROGMEM Language_Str INTERFACE_SOUNDS         = u8"Interface Sounds";
385
+  PROGMEM Language_Str CLICK_SOUNDS             = u8"Click sounds";
386
+  PROGMEM Language_Str EEPROM_RESTORED          = u8"Settings restored from backup";
387
+  PROGMEM Language_Str EEPROM_RESET             = u8"Settings restored to default";
388
+  PROGMEM Language_Str EEPROM_SAVED             = u8"Settings saved!";
389
+  PROGMEM Language_Str EEPROM_SAVE_PROMPT       = u8"Do you wish to save these settings as defaults?";
390
+  PROGMEM Language_Str EEPROM_RESET_WARNING     = u8"Are you sure? Customizations will be lost.";
391
+
392
+  PROGMEM Language_Str PASSCODE_REJECTED        = u8"Wrong passcode!";
393
+  PROGMEM Language_Str PASSCODE_ACCEPTED        = u8"Passcode accepted!";
394
+  PROGMEM Language_Str PASSCODE_SELECT          = u8"Select Passcode:";
395
+  PROGMEM Language_Str PASSCODE_REQUEST         = u8"Enter Passcode:";
396
+
397
+  PROGMEM Language_Str TOUCH_CALIBRATION_START  = u8"Release to begin screen calibration";
398
+  PROGMEM Language_Str TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate";
399
+
400
+  #ifdef LULZBOT_USE_BIOPRINTER_UI
401
+    PROGMEM Language_Str MAIN_MENU              = u8"Main Menu";
402
+    PROGMEM Language_Str UNLOCK_XY_AXIS         = u8"Unlock XY Axis";
403
+    PROGMEM Language_Str LOAD_SYRINGE           = u8"Load Syringe";
404
+    PROGMEM Language_Str BED_TEMPERATURE        = u8"Bed Temperature";
405
+    PROGMEM Language_Str LOADING_WARNING        = u8"About to home to loading position.\nEnsure the top and the bed of the printer are clear.\n\nContinue?";
406
+    PROGMEM Language_Str HOMING_WARNING         = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?";
407
+  #endif
408
+
409
+  MAKE_LANGUAGE_STRINGS();
410
+}; // namespace Language_en

+ 90
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h 查看文件

@@ -0,0 +1,90 @@
1
+/*****************
2
+ * language_fr.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
+
22
+#pragma once
23
+
24
+#include "language_en.h"
25
+
26
+namespace Language_fr {
27
+  using namespace Language_en;
28
+
29
+  PROGMEM Language_Str LANGUAGE                 = u8"Français";
30
+
31
+  PROGMEM Language_Str YES                      = u8"oui";
32
+  PROGMEM Language_Str NO                       = u8"non";
33
+  PROGMEM Language_Str BACK                     = u8"Retour";
34
+
35
+  PROGMEM Language_Str AUTO_HOME                = u8"Origine auto";
36
+  //PROGMEM Language_Str CLEAN_NOZZLE             = u8"Clean Nozzle";
37
+  PROGMEM Language_Str MOVE_AXIS                = u8"Déplacer un axe";
38
+  PROGMEM Language_Str MOTORS_OFF               = u8"Arrêter moteurs";
39
+  PROGMEM Language_Str TEMPERATURE              = u8"Température";
40
+  PROGMEM Language_Str CHANGE_FILAMENT          = u8"Changer filament";
41
+  PROGMEM Language_Str ADVANCED_SETTINGS        = u8"Config. avancée";
42
+  PROGMEM Language_Str ABOUT_PRINTER            = u8"Infos imprimante";
43
+  PROGMEM Language_Str PRINTER_STATISTICS       = u8"Stats. imprimante";
44
+
45
+  PROGMEM Language_Str ZPROBE_ZOFFSET           = u8"Décalage Z";
46
+  PROGMEM Language_Str STEPS_PER_MM             = u8"Pas/mm";
47
+  PROGMEM Language_Str TOOL_OFFSETS             = u8"Offsets Outil";
48
+  PROGMEM Language_Str VELOCITY                 = u8"Vélocité";
49
+  PROGMEM Language_Str ACCELERATION             = u8"Accélération";
50
+  PROGMEM Language_Str ACCEL_PRINTING           = u8"A impr.";
51
+  PROGMEM Language_Str ACCEL_TRAVEL             = u8"A dépl.";
52
+  PROGMEM Language_Str ACCEL_RETRACT            = u8"A retrait";
53
+  PROGMEM Language_Str JUNCTION_DEVIATION       = u8"Déviat. jonct.";
54
+  //PROGMEM Language_Str BACKLASH                 = u8"Backlash";
55
+  PROGMEM Language_Str SMOOTHING                = u8"Lissage";
56
+  PROGMEM Language_Str MOTOR_CURRENT            = u8"Courant";
57
+  PROGMEM Language_Str ENDSTOPS                 = u8"Butées";
58
+  PROGMEM Language_Str SOFT_ENDSTOPS            = u8"Butées SW";
59
+  PROGMEM Language_Str RESTORE_DEFAULTS         = u8"Restaurer défauts";
60
+
61
+
62
+  PROGMEM Language_Str HOTEND                   = u8"Buse";
63
+  PROGMEM Language_Str HOTEND1                  = u8"Buse 1";
64
+  PROGMEM Language_Str HOTEND2                  = u8"Buse 2";
65
+  PROGMEM Language_Str HOTEND3                  = u8"Buse 3";
66
+  PROGMEM Language_Str HOTEND4                  = u8"Buse 4";
67
+  PROGMEM Language_Str BED                      = u8"Lit";
68
+  PROGMEM Language_Str AXIS_ALL                 = u8"Tous";
69
+  PROGMEM Language_Str HOME                     = u8"Origine";
70
+
71
+  PROGMEM Language_Str FAN_SPEED                = u8"Vitesse ventil.";
72
+  PROGMEM Language_Str RUNOUT_SENSOR            = u8"Capteur fil.";
73
+
74
+  PROGMEM Language_Str PRINT_FILE               = u8"Imprimer";
75
+
76
+  PROGMEM Language_Str RESUME_PRINT             = u8"Reprendre impr.";
77
+  PROGMEM Language_Str PAUSE_PRINT              = u8"Pause impression";
78
+  PROGMEM Language_Str STOP_PRINT               = u8"Arrêter impr.";
79
+
80
+  PROGMEM Language_Str INFO_PRINT_COUNT         = u8"Nbre impressions";
81
+  PROGMEM Language_Str INFO_COMPLETED_PRINTS    = u8"Terminées";
82
+  PROGMEM Language_Str INFO_PRINT_TIME          = u8"Tps impr. total";
83
+  PROGMEM Language_Str INFO_PRINT_LONGEST       = u8"Impr. la + longue";
84
+  PROGMEM Language_Str INFO_PRINT_FILAMENT      = u8"Total filament";
85
+
86
+  PROGMEM Language_Str PRINTER_HALTED           = u8"IMPR. STOPPÉE";
87
+  PROGMEM Language_Str PLEASE_RESET             = u8"Redémarrer SVP";
88
+
89
+  MAKE_LANGUAGE_STRINGS();
90
+}; // namespace Language_fr

+ 26
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/language/languages.h 查看文件

@@ -0,0 +1,26 @@
1
+/***************
2
+ * languages.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
+
22
+#pragma once
23
+
24
+#include "language_en.h"
25
+#include "language_de.h"
26
+#include "language_fr.h"

+ 17
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/about_screen.cpp 查看文件

@@ -49,22 +49,33 @@ void AboutScreen::onRedraw(draw_mode_t) {
49 49
       #ifdef LULZBOT_LCD_MACHINE_NAME
50 50
       LULZBOT_LCD_MACHINE_NAME
51 51
       #else
52
-      "Color Touch Panel"
52
+      GET_TEXTF(COLOR_TOUCH_PANEL)
53 53
       #endif
54 54
     ), OPT_CENTER, font_xlarge);
55 55
 
56
+  #ifdef LULZBOT_LCD_TOOLHEAD_NAME
57
+   char about_str[
58
+     strlen_P(GET_TEXT(FIRMWARE_FOR_TOOLHEAD)) +
59
+     strlen_P(LULZBOT_LCD_TOOLHEAD_NAME) +
60
+     strlen_P(GET_TEXT(ABOUT_ALEPH_OBJECTS)) + 1];
61
+
62
+   sprintf_P(about_str, GET_TEXT(FIRMWARE_FOR_TOOLHEAD), LULZBOT_LCD_TOOLHEAD_NAME);
63
+   strcat_P(about_str,  GET_TEXT(ABOUT_ALEPH_OBJECTS));
64
+  #endif
65
+
56 66
   cmd.tag(2);
57
-  draw_text_box(cmd, BTN_POS(1,3), BTN_SIZE(4,3), F(
67
+  draw_text_box(cmd, BTN_POS(1,3), BTN_SIZE(4,3),
58 68
       #ifdef LULZBOT_LCD_TOOLHEAD_NAME
59
-        "Firmware for toolhead:\n" LULZBOT_LCD_TOOLHEAD_NAME "\n\n"
69
+        about_str
70
+      #else
71
+        GET_TEXTF(ABOUT_ALEPH_OBJECTS)
60 72
       #endif
61
-      "(C) 2019 Aleph Objects, Inc.\n\nwww.lulzbot.com"
62
-  ), OPT_CENTER, font_medium);
73
+  , OPT_CENTER, font_medium);
63 74
 
64 75
   cmd.tag(0);
65 76
   draw_text_box(cmd, BTN_POS(1,6), BTN_SIZE(4,2), progmem_str(getFirmwareName_str()), OPT_CENTER, font_medium);
66 77
 
67
-  cmd.font(font_medium).colors(action_btn).tag(1).button(BTN_POS(2,8), BTN_SIZE(2,1), F("Okay"));
78
+  cmd.font(font_medium).colors(action_btn).tag(1).button(BTN_POS(2,8), BTN_SIZE(2,1), GET_TEXTF(OKAY));
68 79
 }
69 80
 
70 81
 bool AboutScreen::onTouchEnd(uint8_t tag) {

+ 32
- 32
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/advanced_settings_menu.cpp 查看文件

@@ -49,52 +49,52 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
49 49
       #else
50 50
         .enabled(0)
51 51
       #endif
52
-      .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), F("Z Offset "))
52
+      .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXTF(ZPROBE_ZOFFSET))
53 53
       .enabled(1)
54
-      .tag(3) .button( BTN_POS(2,1), BTN_SIZE(1,1), F("Steps/mm"))
54
+      .tag(3) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXTF(STEPS_PER_MM))
55 55
       #if HAS_TRINAMIC
56 56
         .enabled(1)
57 57
       #else
58 58
         .enabled(0)
59 59
       #endif
60
-      .tag(13).button( BTN_POS(1,5), BTN_SIZE(1,1), F("Motor mA"))
60
+      .tag(13).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXTF(MOTOR_CURRENT))
61 61
       #if HAS_TRINAMIC
62 62
         .enabled(1)
63 63
       #else
64 64
         .enabled(0)
65 65
       #endif
66
-      .tag(14).button( BTN_POS(1,4), BTN_SIZE(1,1), F("Bump Sense"))
66
+      .tag(14).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXTF(HOME_SENSE))
67 67
       #if HOTENDS > 1
68 68
       .enabled(1)
69 69
       #else
70 70
       .enabled(0)
71 71
       #endif
72
-      .tag(4) .button( BTN_POS(1,2), BTN_SIZE(1,1), F("Nozzle Offset"))
72
+      .tag(4) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXTF(TOOL_OFFSETS))
73 73
       #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
74 74
       .enabled(1)
75 75
       #else
76 76
       .enabled(0)
77 77
       #endif
78
-      .tag(11).button( BTN_POS(1,3), BTN_SIZE(1,1), F("Filament"))
79
-      .tag(12).button( BTN_POS(1,6), BTN_SIZE(1,1), F("Endstops"))
80
-      .tag(15).button( BTN_POS(2,6), BTN_SIZE(1,1), F("Display"))
81
-      .tag(9) .button( BTN_POS(1,7), BTN_SIZE(2,1), F("Interface Settings"))
82
-      .tag(10).button( BTN_POS(1,8), BTN_SIZE(2,1), F("Restore Factory Defaults"))
83
-      .tag(5) .button( BTN_POS(2,2), BTN_SIZE(1,1), F("Velocity "))
84
-      .tag(6) .button( BTN_POS(2,3), BTN_SIZE(1,1), F("Acceleration"))
78
+      .tag(11).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXTF(FILAMENT))
79
+      .tag(12).button( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXTF(ENDSTOPS))
80
+      .tag(15).button( BTN_POS(2,6), BTN_SIZE(1,1), GET_TEXTF(DISPLAY_MENU))
81
+      .tag(9) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS))
82
+      .tag(10).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(RESTORE_DEFAULTS))
83
+      .tag(5) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXTF(VELOCITY))
84
+      .tag(6) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXTF(ACCELERATION))
85 85
       #if ENABLED(JUNCTION_DEVIATION)
86
-      .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), F("Junc Dev"))
86
+      .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(JUNCTION_DEVIATION))
87 87
       #else
88
-      .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), F("Jerk"))
88
+      .tag(7) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(JERK))
89 89
       #endif
90 90
       #if ENABLED(BACKLASH_GCODE)
91 91
       .enabled(1)
92 92
       #else
93 93
       .enabled(0)
94 94
       #endif
95
-      .tag(8).button( BTN_POS(2,5), BTN_SIZE(1,1), F("Backlash"))
95
+      .tag(8).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXTF(BACKLASH))
96 96
       .colors(action_btn)
97
-      .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), F("Back"));
97
+      .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXTF(BACK));
98 98
       #undef GRID_COLS
99 99
       #undef GRID_ROWS
100 100
     #else
@@ -105,47 +105,47 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
105 105
       #else
106 106
         .enabled(0)
107 107
       #endif
108
-      .tag(2) .button( BTN_POS(1,1),  BTN_SIZE(1,2), F("Z Offset "))
108
+      .tag(2) .button( BTN_POS(1,1),  BTN_SIZE(1,2), GET_TEXTF(ZPROBE_ZOFFSET))
109 109
       .enabled(1)
110
-      .tag(3) .button( BTN_POS(2,1),  BTN_SIZE(1,1), F("Steps/mm"))
110
+      .tag(3) .button( BTN_POS(2,1),  BTN_SIZE(1,1), GET_TEXTF(STEPS_PER_MM))
111 111
       #if HAS_TRINAMIC
112 112
         .enabled(1)
113 113
       #else
114 114
         .enabled(0)
115 115
       #endif
116
-      .tag(13).button( BTN_POS(3,1), BTN_SIZE(1,1), F("Motor mA"))
116
+      .tag(13).button( BTN_POS(3,1), BTN_SIZE(1,1), GET_TEXTF(MOTOR_CURRENT))
117 117
       #if HAS_TRINAMIC
118 118
         .enabled(1)
119 119
       #else
120 120
         .enabled(0)
121 121
       #endif
122
-      .tag(14).button( BTN_POS(3,2), BTN_SIZE(1,1), F("Bump Sense"))
122
+      .tag(14).button( BTN_POS(3,2), BTN_SIZE(1,1), GET_TEXTF(HOME_SENSE))
123 123
       #if ENABLED(BACKLASH_GCODE)
124 124
       .enabled(1)
125 125
       #else
126 126
       .enabled(0)
127 127
       #endif
128
-      .tag(8).button( BTN_POS(3,3),  BTN_SIZE(1,1), F("Backlash"))
128
+      .tag(8).button( BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXTF(BACKLASH))
129 129
       #if HOTENDS > 1
130 130
       .enabled(1)
131 131
       #else
132 132
       .enabled(0)
133 133
       #endif
134
-      .tag(4) .button( BTN_POS(1,3),  BTN_SIZE(1,1), F("Nozzle Offsets"))
135
-      .tag(12).button( BTN_POS(3,4),  BTN_SIZE(1,1), F("Endstops"))
136
-      .tag(5) .button( BTN_POS(2,2),  BTN_SIZE(1,1), F("Velocity "))
137
-      .tag(6) .button( BTN_POS(2,3),  BTN_SIZE(1,1), F("Acceleration"))
134
+      .tag(4) .button( BTN_POS(1,3),  BTN_SIZE(1,1), GET_TEXTF(TOOL_OFFSETS))
135
+      .tag(12).button( BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXTF(ENDSTOPS))
136
+      .tag(5) .button( BTN_POS(2,2),  BTN_SIZE(1,1), GET_TEXTF(VELOCITY))
137
+      .tag(6) .button( BTN_POS(2,3),  BTN_SIZE(1,1), GET_TEXTF(ACCELERATION))
138 138
       #if ENABLED(JUNCTION_DEVIATION)
139
-      .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), F("Junc Dev"))
139
+      .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXTF(JUNCTION_DEVIATION))
140 140
       #else
141
-      .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), F("Jerk"))
141
+      .tag(7) .button( BTN_POS(2,4),  BTN_SIZE(1,1), GET_TEXTF(JERK))
142 142
       #endif
143
-      .tag(11).button( BTN_POS(1,4),  BTN_SIZE(1,1), F("Filament"))
144
-      .tag(15).button( BTN_POS(3,5),  BTN_SIZE(1,1), F("Display"))
145
-      .tag(9) .button( BTN_POS(1,5),  BTN_SIZE(2,1), F("Interface Settings"))
146
-      .tag(10).button( BTN_POS(1,6),  BTN_SIZE(2,1), F("Restore Defaults"))
143
+      .tag(11).button( BTN_POS(1,4),  BTN_SIZE(1,1), GET_TEXTF(FILAMENT))
144
+      .tag(15).button( BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXTF(DISPLAY_MENU))
145
+      .tag(9) .button( BTN_POS(1,5),  BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS))
146
+      .tag(10).button( BTN_POS(1,6),  BTN_SIZE(2,1), GET_TEXTF(RESTORE_DEFAULTS))
147 147
       .colors(action_btn)
148
-      .tag(1) .button( BTN_POS(3,6),  BTN_SIZE(1,1), F("Back"));
148
+      .tag(1) .button( BTN_POS(3,6),  BTN_SIZE(1,1), GET_TEXTF(BACK));
149 149
     #endif
150 150
   }
151 151
 }

+ 9
- 9
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/backlash_compensation_screen.cpp 查看文件

@@ -32,17 +32,17 @@ using namespace Theme;
32 32
 
33 33
 void BacklashCompensationScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35
-  w.precision(2).units(PSTR("mm"));
36
-  w.heading(                  PSTR("Axis Backlash"));
37
-  w.color(x_axis).adjuster(2, PSTR("X:"), getAxisBacklash_mm(X));
38
-  w.color(y_axis).adjuster(4, PSTR("Y:"), getAxisBacklash_mm(Y));
39
-  w.color(z_axis).adjuster(6, PSTR("Z:"), getAxisBacklash_mm(Z));
35
+  w.precision(2).units(       GET_TEXTF(UNITS_MM));
36
+  w.heading(                  GET_TEXTF(BACKLASH));
37
+  w.color(x_axis).adjuster(2, GET_TEXTF(AXIS_X), getAxisBacklash_mm(X));
38
+  w.color(y_axis).adjuster(4, GET_TEXTF(AXIS_Y), getAxisBacklash_mm(Y));
39
+  w.color(z_axis).adjuster(6, GET_TEXTF(AXIS_Z), getAxisBacklash_mm(Z));
40 40
   #if ENABLED(CALIBRATION_GCODE)
41
-  w.button(12, PSTR("Measure automatically"));
41
+  w.button(12, GET_TEXTF(MEASURE_AUTOMATICALLY));
42 42
   #endif
43
-  w.color(other).adjuster(8,  PSTR("Smoothing:"), getBacklashSmoothing_mm());
44
-  w.precision(0).units(PSTR("%"))
45
-                .adjuster(10, PSTR("Correction:"), getBacklashCorrection_percent());
43
+  w.color(other).adjuster(8,  GET_TEXTF(SMOOTHING), getBacklashSmoothing_mm());
44
+  w.precision(0).units(GET_TEXTF(UNITS_PERCENT))
45
+                .adjuster(10, GET_TEXTF(CORRECTION), getBacklashCorrection_percent());
46 46
   w.precision(2).increments();
47 47
 }
48 48
 

+ 28
- 28
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/base_numeric_adjustment_screen.cpp 查看文件

@@ -50,15 +50,15 @@ BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what
50 50
     cmd.font(font_medium)
51 51
        .colors(action_btn)
52 52
     #ifdef TOUCH_UI_PORTRAIT
53
-       .tag(1).button( BTN_POS(1,10), BTN_SIZE(13,1), F("Back"))
53
+       .tag(1).button( BTN_POS(1,10), BTN_SIZE(13,1), GET_TEXTF(BACK))
54 54
     #else
55
-       .tag(1).button( BTN_POS(15,7), BTN_SIZE(4,1),  F("Back"))
55
+       .tag(1).button( BTN_POS(15,7), BTN_SIZE(4,1),  GET_TEXTF(BACK))
56 56
     #endif
57 57
        .colors(normal_btn);
58 58
   }
59 59
 
60 60
   _line = 1;
61
-  _units = PSTR("");
61
+  _units = F("");
62 62
 }
63 63
 
64 64
 BaseNumericAdjustmentScreen::widgets_t &BaseNumericAdjustmentScreen::widgets_t::precision(uint8_t decimals, precision_default_t initial) {
@@ -69,14 +69,14 @@ BaseNumericAdjustmentScreen::widgets_t &BaseNumericAdjustmentScreen::widgets_t::
69 69
   return *this;
70 70
 }
71 71
 
72
-void BaseNumericAdjustmentScreen::widgets_t::heading(const char *label) {
72
+void BaseNumericAdjustmentScreen::widgets_t::heading(progmem_str label) {
73 73
   CommandProcessor cmd;
74 74
   cmd.font(font_medium).cmd(COLOR_RGB(bg_text_enabled));
75 75
   if (_what & BACKGROUND) {
76 76
     #ifdef TOUCH_UI_PORTRAIT
77
-      cmd.tag(0).fgcolor(bg_color).button( BTN_POS(1, _line), BTN_SIZE(12,1), progmem_str(label), OPT_FLAT);
77
+      cmd.tag(0).fgcolor(bg_color).button( BTN_POS(1, _line), BTN_SIZE(12,1), label, OPT_FLAT);
78 78
     #else
79
-      cmd.tag(0).fgcolor(bg_color).button( BTN_POS(5, _line), BTN_SIZE(8,1),  progmem_str(label), OPT_FLAT);
79
+      cmd.tag(0).fgcolor(bg_color).button( BTN_POS(5, _line), BTN_SIZE(8,1),  label, OPT_FLAT);
80 80
     #endif
81 81
   }
82 82
 
@@ -140,9 +140,9 @@ void BaseNumericAdjustmentScreen::widgets_t::increments() {
140 140
     cmd.fgcolor(bg_color)
141 141
        .tag(0)
142 142
     #ifdef TOUCH_UI_PORTRAIT
143
-       .font(font_small).button( BTN_POS(1, _line),  BTN_SIZE(4,1), F("Increment:"), OPT_FLAT);
143
+       .font(font_small).button( BTN_POS(1, _line),  BTN_SIZE(4,1), GET_TEXTF(INCREMENT), OPT_FLAT);
144 144
     #else
145
-       .font(font_medium).button( BTN_POS(15,1),     BTN_SIZE(4,1), F("Increment:"), OPT_FLAT);
145
+       .font(font_medium).button( BTN_POS(15,1),     BTN_SIZE(4,1), GET_TEXTF(INCREMENT), OPT_FLAT);
146 146
     #endif
147 147
   }
148 148
 
@@ -157,7 +157,7 @@ void BaseNumericAdjustmentScreen::widgets_t::increments() {
157 157
   #endif
158 158
 }
159 159
 
160
-void BaseNumericAdjustmentScreen::widgets_t::adjuster_sram_val(uint8_t tag, const char *label, const char *value, bool is_enabled) {
160
+void BaseNumericAdjustmentScreen::widgets_t::adjuster_sram_val(uint8_t tag, progmem_str label, const char *value, bool is_enabled) {
161 161
   CommandProcessor cmd;
162 162
 
163 163
   if (_what & BACKGROUND) {
@@ -179,7 +179,7 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster_sram_val(uint8_t tag, cons
179 179
   _line++;
180 180
 }
181 181
 
182
-void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, const char *label, const char *value, bool is_enabled) {
182
+void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, progmem_str label, const char *value, bool is_enabled) {
183 183
   if (_what & BACKGROUND) {
184 184
     adjuster_sram_val(tag, label, nullptr);
185 185
   }
@@ -191,7 +191,7 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, const char *l
191 191
   }
192 192
 }
193 193
 
194
-void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, const char *label, float value, bool is_enabled) {
194
+void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, progmem_str label, float value, bool is_enabled) {
195 195
   if (_what & BACKGROUND) {
196 196
     adjuster_sram_val(tag, label, nullptr);
197 197
   }
@@ -205,7 +205,7 @@ void BaseNumericAdjustmentScreen::widgets_t::adjuster(uint8_t tag, const char *l
205 205
   }
206 206
 }
207 207
 
208
-void BaseNumericAdjustmentScreen::widgets_t::button(uint8_t tag, const char *label, bool is_enabled) {
208
+void BaseNumericAdjustmentScreen::widgets_t::button(uint8_t tag, progmem_str label, bool is_enabled) {
209 209
   if (_what & FOREGROUND) {
210 210
     CommandProcessor cmd;
211 211
     cmd.colors(normal_btn)
@@ -216,13 +216,13 @@ void BaseNumericAdjustmentScreen::widgets_t::button(uint8_t tag, const char *lab
216 216
     #else
217 217
        .font(font_medium)
218 218
     #endif
219
-    .button(BTN_POS(5,_line), BTN_SIZE(9,1), progmem_str(label));
219
+    .button(BTN_POS(5,_line), BTN_SIZE(9,1), label);
220 220
   }
221 221
 
222 222
   _line++;
223 223
 }
224 224
 
225
-void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, const char *label, const char *value, bool is_enabled) {
225
+void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, progmem_str label, const char *value, bool is_enabled) {
226 226
   CommandProcessor cmd;
227 227
 
228 228
   if (_what & BACKGROUND) {
@@ -230,7 +230,7 @@ void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, const char
230 230
        .font(font_small)
231 231
        .cmd(COLOR_RGB(bg_text_enabled))
232 232
        .fgcolor(_color).tag(0).button( BTN_POS(5,_line), BTN_SIZE(9,1), F(""),               OPT_FLAT)
233
-       .fgcolor(bg_color) .tag(0).button( BTN_POS(1,_line), BTN_SIZE(4,1), (progmem_str) label, OPT_FLAT);
233
+       .fgcolor(bg_color) .tag(0).button( BTN_POS(1,_line), BTN_SIZE(4,1), label, OPT_FLAT);
234 234
   }
235 235
 
236 236
   if (_what & FOREGROUND) {
@@ -242,7 +242,7 @@ void BaseNumericAdjustmentScreen::widgets_t::text_field(uint8_t tag, const char
242 242
   _line++;
243 243
 }
244 244
 
245
-void BaseNumericAdjustmentScreen::widgets_t::two_buttons(uint8_t tag1, const char *label1, uint8_t tag2, const char *label2, bool is_enabled) {
245
+void BaseNumericAdjustmentScreen::widgets_t::two_buttons(uint8_t tag1, progmem_str label1, uint8_t tag2, progmem_str label2, bool is_enabled) {
246 246
   if (_what & FOREGROUND) {
247 247
     CommandProcessor cmd;
248 248
     cmd.enabled(is_enabled)
@@ -251,23 +251,23 @@ void BaseNumericAdjustmentScreen::widgets_t::two_buttons(uint8_t tag1, const cha
251 251
     #else
252 252
        .font(font_medium)
253 253
     #endif
254
-    .tag(is_enabled ? tag1: 0).button(BTN_POS(5,_line),   BTN_SIZE(4.5,1), progmem_str(label1))
255
-    .tag(is_enabled ? tag2: 0).button(BTN_POS(9.5,_line), BTN_SIZE(4.5,1), progmem_str(label2));
254
+    .tag(is_enabled ? tag1: 0).button(BTN_POS(5,_line),   BTN_SIZE(4.5,1), label1)
255
+    .tag(is_enabled ? tag2: 0).button(BTN_POS(9.5,_line), BTN_SIZE(4.5,1), label2);
256 256
   }
257 257
 
258 258
   _line++;
259 259
 }
260 260
 
261
-void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, const char *label, const char *text, bool value, bool is_enabled) {
261
+void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, progmem_str label, bool value, bool is_enabled) {
262 262
   if (_what & BACKGROUND) {
263 263
     CommandProcessor cmd;
264 264
     cmd.fgcolor(bg_color)
265 265
        .tag(0)
266 266
        .font(font_small)
267 267
     #ifdef TOUCH_UI_PORTRAIT
268
-       .button( BTN_POS(1, _line), BTN_SIZE( 8,1), progmem_str(label), OPT_FLAT);
268
+       .button( BTN_POS(1, _line), BTN_SIZE( 8,1), label, OPT_FLAT);
269 269
     #else
270
-       .button( BTN_POS(1, _line), BTN_SIZE(10,1), progmem_str(label), OPT_FLAT);
270
+       .button( BTN_POS(1, _line), BTN_SIZE(10,1), label, OPT_FLAT);
271 271
     #endif
272 272
   }
273 273
 
@@ -278,9 +278,9 @@ void BaseNumericAdjustmentScreen::widgets_t::toggle(uint8_t tag, const char *lab
278 278
        .font(font_small)
279 279
        .colors(ui_toggle)
280 280
     #ifdef TOUCH_UI_PORTRAIT
281
-      .toggle(BTN_POS( 9,_line), BTN_SIZE(5,1), progmem_str(text), value);
281
+      .toggle2(BTN_POS( 9,_line), BTN_SIZE(5,1), GET_TEXTF(NO), GET_TEXTF(YES), value);
282 282
     #else
283
-      .toggle(BTN_POS(10,_line), BTN_SIZE(4,1), progmem_str(text), value);
283
+      .toggle2(BTN_POS(10,_line), BTN_SIZE(4,1), GET_TEXTF(NO), GET_TEXTF(YES), value);
284 284
     #endif
285 285
   }
286 286
 
@@ -293,7 +293,7 @@ void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) {
293 293
     cmd.fgcolor(bg_color)
294 294
        .tag(0)
295 295
        .font(font_small)
296
-       .button( BTN_POS(1, _line),  BTN_SIZE(4,1), F("Home:"), OPT_FLAT);
296
+       .button( BTN_POS(1, _line),  BTN_SIZE(4,1), GET_TEXTF(HOME), OPT_FLAT);
297 297
   }
298 298
 
299 299
   if (_what & FOREGROUND) {
@@ -304,10 +304,10 @@ void BaseNumericAdjustmentScreen::widgets_t::home_buttons(uint8_t tag) {
304 304
     #else
305 305
        .font(font_medium)
306 306
     #endif
307
-       .tag(tag+0).button(BTN_POS(5,_line),  BTN_SIZE(2,1), F("X"))
308
-       .tag(tag+1).button(BTN_POS(7,_line),  BTN_SIZE(2,1), F("Y"))
309
-       .tag(tag+2).button(BTN_POS(9,_line),  BTN_SIZE(2,1), F("Z"))
310
-       .tag(tag+3).button(BTN_POS(11,_line), BTN_SIZE(3,1), F("All"));
307
+       .tag(tag+0).button(BTN_POS(5,_line),  BTN_SIZE(2,1), GET_TEXTF(AXIS_X))
308
+       .tag(tag+1).button(BTN_POS(7,_line),  BTN_SIZE(2,1), GET_TEXTF(AXIS_Y))
309
+       .tag(tag+2).button(BTN_POS(9,_line),  BTN_SIZE(2,1), GET_TEXTF(AXIS_Z))
310
+       .tag(tag+3).button(BTN_POS(11,_line), BTN_SIZE(3,1), GET_TEXTF(AXIS_ALL));
311 311
   }
312 312
 
313 313
   _line++;

+ 15
- 15
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_advanced_settings.cpp 查看文件

@@ -43,52 +43,52 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
43 43
     #define GRID_ROWS 9
44 44
     #define GRID_COLS 2
45 45
 
46
-      .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), F("Display"))
46
+      .tag(2) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXTF(DISPLAY_MENU))
47 47
       #if HAS_TRINAMIC
48 48
        .enabled(1)
49 49
       #else
50 50
        .enabled(0)
51 51
       #endif
52
-      .tag(3) .button( BTN_POS(1,2), BTN_SIZE(1,1), F("Motor mA"))
52
+      .tag(3) .button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXTF(MOTOR_CURRENT))
53 53
       #if HAS_TRINAMIC
54 54
        .enabled(1)
55 55
       #else
56 56
        .enabled(0)
57 57
       #endif
58
-      .tag(4) .button( BTN_POS(1,3), BTN_SIZE(1,1), F("Bump Sense"))
59
-      .tag(5) .button( BTN_POS(1,4), BTN_SIZE(1,1), F("Endstops"))
58
+      .tag(4) .button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXTF(BUMP_SENSE))
59
+      .tag(5) .button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXTF(ENDSTOPS))
60 60
       #if HOTENDS > 1
61 61
       .enabled(1)
62 62
       #else
63 63
       .enabled(0)
64 64
       #endif
65
-      .tag(6) .button( BTN_POS(1,5), BTN_SIZE(1,1), F("Nozzle Offset"))
65
+      .tag(6) .button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXTF(NOZZLE_OFFSETS))
66 66
 
67 67
 
68
-      .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), F("Steps/mm"))
69
-      .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), F("Velocity "))
70
-      .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), F("Acceleration"))
68
+      .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXTF(STEPS_PER_MM))
69
+      .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXTF(MAX_VELOCITY))
70
+      .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXTF(MAX_ACCELERATION))
71 71
       #if ENABLED(JUNCTION_DEVIATION)
72
-        .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), F("Junc Dev"))
72
+        .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(JUNCTION_DEVIATION))
73 73
       #else
74
-        .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), F("Jerk"))
74
+        .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(MAX_JERK))
75 75
       #endif
76 76
       #if ENABLED(BACKLASH_GCODE)
77 77
       .enabled(1)
78 78
       #else
79 79
       .enabled(0)
80 80
       #endif
81
-      .tag(11) .button( BTN_POS(2,5), BTN_SIZE(1,1), F("Backlash"))
81
+      .tag(11) .button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXTF(BACKLASH))
82 82
       #if ENABLED(LIN_ADVANCE)
83 83
       .enabled(1)
84 84
       #else
85 85
       .enabled(0)
86 86
       #endif
87
-      .tag(12) .button( BTN_POS(1,6), BTN_SIZE(2,1), F("Linear Advance"))
88
-      .tag(13) .button( BTN_POS(1,7), BTN_SIZE(2,1), F("Interface Settings"))
89
-      .tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), F("Restore Factory Defaults"))
87
+      .tag(12) .button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(LINEAR_ADVANCE))
88
+      .tag(13) .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS))
89
+      .tag(14) .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(RESTORE_FAILSAFE))
90 90
       .colors(action_btn)
91
-      .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), F("Back"));
91
+      .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXTF(BACK));
92 92
     #undef GRID_COLS
93 93
     #undef GRID_ROWS
94 94
   }

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_e.cpp 查看文件

@@ -29,7 +29,7 @@
29 29
 using namespace FTDI;
30 30
 
31 31
 void BioConfirmHomeE::onRedraw(draw_mode_t) {
32
-  drawMessage(F("About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?"));
32
+  drawMessage(GET_TEXTF(HOMING_WARNING));
33 33
   drawYesNoButtons(1);
34 34
 }
35 35
 

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_confirm_home_xyz.cpp 查看文件

@@ -29,7 +29,7 @@
29 29
 using namespace FTDI;
30 30
 
31 31
 void BioConfirmHomeXYZ::onRedraw(draw_mode_t) {
32
-  drawMessage(F("About to home to loading position.\nEnsure the top and the bed of the printer are clear.\n\nContinue?"));
32
+  drawMessage(GET_TEXTF(LOADING_WARNING));
33 33
   drawYesNoButtons(1);
34 34
 }
35 35
 

+ 8
- 8
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_main_menu.cpp 查看文件

@@ -42,17 +42,17 @@ void MainMenu::onRedraw(draw_mode_t what) {
42 42
   if (what & FOREGROUND) {
43 43
     CommandProcessor cmd;
44 44
     cmd.cmd(COLOR_RGB(bg_text_enabled))
45
-       .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), F("Main Menu"))
45
+       .font(font_large).text( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXTF(MAIN_MENU))
46 46
        .colors(normal_btn)
47 47
        .font(font_medium)
48
-       .tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), F("Load Syringe"))
49
-       .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), F("Unlock XY Axis"))
50
-       .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), F("Bed Temperature"))
51
-       .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), F("Interface Settings"))
52
-       .tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), F("Advanced Settings"))
53
-       .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), F("About Printer"))
48
+       .tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(LOAD_SYRINGE))
49
+       .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(UNLOCK_XY_AXIS))
50
+       .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(BED_TEMPERATURE))
51
+       .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SETTINGS))
52
+       .tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(ADVANCED_SETTINGS))
53
+       .tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(ABOUT_PRINTER))
54 54
        .colors(action_btn)
55
-       .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), F("Back"));
55
+       .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(BACK));
56 56
   }
57 57
 
58 58
   #undef GRID_COLS

+ 8
- 12
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_status_screen.cpp 查看文件

@@ -91,12 +91,12 @@ void StatusScreen::draw_temperature(draw_mode_t what) {
91 91
        .cmd(COLOR_RGB(bg_text_enabled));
92 92
 
93 93
     if (!isHeaterIdle(BED) && getTargetTemp_celsius(BED) > 0) {
94
-      sprintf_P(bed_str, PSTR("%-3d C"), ROUND(getTargetTemp_celsius(BED)));
94
+      sprintf_P(bed_str, F("%3d%S"), ROUND(getTargetTemp_celsius(BED), GET_TEXT(UNITS_C)));
95 95
       ui.bounds(POLY(target_temp), x, y, h, v);
96 96
       cmd.text(x, y, h, v, bed_str);
97 97
     }
98 98
 
99
-    sprintf_P(bed_str, PSTR("%-3d C"), ROUND(getActualTemp_celsius(BED)));
99
+    sprintf_P(bed_str, F("%3d%S"), ROUND(getActualTemp_celsius(BED)), GET_TEXT(UNITS_C));
100 100
     ui.bounds(POLY(actual_temp), x, y, h, v);
101 101
     cmd.text(x, y, h, v, bed_str);
102 102
   }
@@ -175,13 +175,13 @@ void StatusScreen::draw_fine_motion(draw_mode_t what) {
175 175
 
176 176
     ui.bounds(POLY(fine_label), x, y, h, v);
177 177
     cmd.cmd(COLOR_RGB(bg_text_enabled))
178
-       .text(x, y, h, v, F("Fine motion:"));
178
+       .text(x, y, h, v, GET_TEXTF(FINE_MOTION));
179 179
   }
180 180
 
181 181
   if (what & FOREGROUND) {
182 182
     ui.bounds(POLY(fine_toggle), x, y, h, v);
183 183
     cmd.colors(ui_toggle)
184
-       .toggle(x, y, h, v, F("no\xFFyes"), fine_motion);
184
+       .toggle2(x, y, h, v, GET_TEXTF(NO), GET_TEXTF(YES), fine_motion);
185 185
   }
186 186
 }
187 187
 
@@ -226,16 +226,12 @@ void StatusScreen::draw_buttons(draw_mode_t) {
226 226
      .colors(has_media ? action_btn : normal_btn)
227 227
      .tag(9).button(BTN_POS(1,9), BTN_SIZE(1,1),
228 228
         isPrintingFromMedia() ?
229
-          F("Printing") :
230
-      #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
229
+          GET_TEXTF(PRINTING) :
231 230
         #ifdef LULZBOT_MANUAL_USB_STARTUP
232
-        (Sd2Card::ready() ? F("USB Drive") : F("Enable USB"))
231
+        (Sd2Card::ready() ? GET_TEXTF(MEDIA) : GET_TEXTF(ENABLE_MEDIA))
233 232
         #else
234
-        F("USB Drive")
233
+        GET_TEXTF(MEDIA)
235 234
         #endif
236
-      #else
237
-        F("SD Card")
238
-      #endif
239 235
       );
240 236
 
241 237
   cmd.colors(!has_media ? action_btn : normal_btn).tag(10).button(BTN_POS(2,9), BTN_SIZE(1,1), F("Menu"));
@@ -282,7 +278,7 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
282 278
     case 9:
283 279
       #if ENABLED(USB_FLASH_DRIVE_SUPPORT) && defined(LULZBOT_MANUAL_USB_STARTUP)
284 280
       if (!Sd2Card::ready()) {
285
-        StatusScreen::setStatusMessage(F("Insert USB drive..."));
281
+        StatusScreen::setStatusMessage(GET_TEXTF(INSERT_MEDIA));
286 282
         Sd2Card::usbStartup();
287 283
       } else {
288 284
         GOTO_SCREEN(FilesScreen);

+ 14
- 21
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/bio_tune_menu.cpp 查看文件

@@ -38,27 +38,26 @@ void TuneMenu::onRedraw(draw_mode_t what) {
38 38
        .font(font_medium);
39 39
   }
40 40
 
41
-  #define GRID_ROWS 8
41
+  #define GRID_ROWS 7
42 42
   #define GRID_COLS 2
43 43
 
44 44
   if (what & FOREGROUND) {
45 45
     CommandProcessor cmd;
46 46
     cmd.cmd(COLOR_RGB(bg_text_enabled))
47
-       .font(font_large).text  ( BTN_POS(1,1), BTN_SIZE(2,1), F("Print Menu"))
47
+       .font(font_large).text  ( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXTF(PRINT_MENU))
48 48
        .colors(normal_btn)
49 49
        .font(font_medium)
50
-       .enabled(!isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), isPrinting() ? F("Printing...") : F("Print Again"))
51
-       .enabled( isPrinting()).tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), F("Print Speed"))
52
-                              .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), F("Bed Temperature"))
50
+       .enabled( isPrinting()).tag(2).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(PRINT_SPEED))
51
+                              .tag(3).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(BED_TEMPERATURE))
53 52
         #if ENABLED(BABYSTEPPING)
54 53
           .enabled(true)
55 54
         #else
56 55
           .enabled(false)
57 56
         #endif
58
-                              .tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), F("Nudge Nozzle"))
59
-       .enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), F("Load Syringe"))
60
-       .enabled(!isPrinting()).tag(7).button( BTN_POS(1,7), BTN_SIZE(2,1), F("Unlock XY Axis"))
61
-       .colors(action_btn)    .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), F("Back"));
57
+                              .tag(4).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(NUDGE_NOZZLE))
58
+       .enabled(!isPrinting()).tag(5).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(LOAD_SYRINGE))
59
+       .enabled(!isPrinting()).tag(6).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(UNLOCK_XY_AXIS))
60
+       .colors(action_btn)    .tag(1).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(BACK));
62 61
   }
63 62
   #undef GRID_COLS
64 63
   #undef GRID_ROWS
@@ -66,18 +65,12 @@ void TuneMenu::onRedraw(draw_mode_t what) {
66 65
 
67 66
 bool TuneMenu::onTouchEnd(uint8_t tag) {
68 67
   switch (tag) {
69
-    case 1:  GOTO_PREVIOUS();                    break;
70
-    case 2: {
71
-      FileList files;
72
-      printFile(files.shortFilename());
73
-      GOTO_PREVIOUS();
74
-      break;
75
-    }
76
-    case 3: GOTO_SCREEN(FeedratePercentScreen); break;
77
-    case 4: GOTO_SCREEN(TemperatureScreen);     break;
78
-    case 5: GOTO_SCREEN(NudgeNozzleScreen);     break;
79
-    case 6: GOTO_SCREEN(BioConfirmHomeXYZ);     break;
80
-    case 7: StatusScreen::unlockMotors();       break;
68
+    case 1: GOTO_PREVIOUS();                    break;
69
+    case 2: GOTO_SCREEN(FeedratePercentScreen); break;
70
+    case 3: GOTO_SCREEN(TemperatureScreen);     break;
71
+    case 4: GOTO_SCREEN(NudgeNozzleScreen);     break;
72
+    case 5: GOTO_SCREEN(BioConfirmHomeXYZ);     break;
73
+    case 6: StatusScreen::unlockMotors();       break;
81 74
     default:
82 75
       return false;
83 76
   }

+ 5
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp 查看文件

@@ -57,13 +57,14 @@ void BootScreen::onIdle() {
57 57
     // in case the display is borked.
58 58
     InterfaceSettingsScreen::failSafeSettings();
59 59
 
60
+    StatusScreen::loadBitmaps();
60 61
     GOTO_SCREEN(TouchCalibrationScreen);
61 62
     current_screen.forget();
62 63
     PUSH_SCREEN(StatusScreen);
63 64
   } else {
64 65
     if (!UIFlashStorage::is_valid()) {
65 66
       StatusScreen::loadBitmaps();
66
-      SpinnerDialogBox::show(F("Please wait..."));
67
+      SpinnerDialogBox::show(GET_TEXTF(PLEASE_WAIT));
67 68
       UIFlashStorage::format_flash();
68 69
       SpinnerDialogBox::hide();
69 70
     }
@@ -82,6 +83,9 @@ void BootScreen::onIdle() {
82 83
       current_screen.forget();
83 84
       PUSH_SCREEN(StatusScreen);
84 85
       PUSH_SCREEN(BioConfirmHomeE);
86
+    #elif defined(TOUCH_UI_LANGUAGE_MENU)
87
+      StatusScreen::setStatusMessage(F(WELCOME_MSG));
88
+      GOTO_SCREEN(LanguageMenu);
85 89
     #else
86 90
       StatusScreen::setStatusMessage(F(WELCOME_MSG));
87 91
       GOTO_SCREEN(StatusScreen);

+ 44
- 36
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/change_filament_screen.cpp 查看文件

@@ -114,29 +114,24 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
114 114
     #else
115 115
        .font(font_medium)
116 116
     #endif
117
-       .text(BTN_POS(1,1), BTN_SIZE(2,1), F("Extruder Selection:"))
117
+       .text(BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXTF(EXTRUDER_SELECTION))
118 118
     #ifdef TOUCH_UI_PORTRAIT
119
-       .text(BTN_POS(1,7), BTN_SIZE(1,1), F("Current Temp:"))
119
+       .text(BTN_POS(1,7), BTN_SIZE(1,1), F(""))
120 120
     #else
121
-       .text(BTN_POS(3,1), BTN_SIZE(2,1), F("Current Temp:"))
121
+       .text(BTN_POS(3,1), BTN_SIZE(2,1), GET_TEXTF(CURRENT_TEMPERATURE))
122 122
        .font(font_small)
123 123
     #endif
124
-       .text(BTN_POS(1,3), BTN_SIZE(2,1), F("Removal Temp:"));
124
+       .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(REMOVAL_TEMPERATURE));
125 125
     drawTempGradient(BTN_POS(1,4), BTN_SIZE(1,3));
126 126
   }
127 127
 
128 128
   if (what & FOREGROUND) {
129 129
     char e_str[15];
130 130
 
131
-    const char *idle = PSTR("%-3d C / idle");
132
-    const char *not_idle = PSTR("%-3d / %-3d C");
133
-
134
-    sprintf_P(
135
-      e_str,
136
-      isHeaterIdle(getExtruder()) ? idle : not_idle,
137
-      ROUND(getActualTemp_celsius(getExtruder())),
138
-      ROUND(getTargetTemp_celsius(getExtruder()))
139
-    );
131
+      if (isHeaterIdle(getExtruder()))
132
+      sprintf_P(e_str, PSTR("%3d%S / %S"), ROUND(getActualTemp_celsius(getExtruder())), GET_TEXT(UNITS_C), GET_TEXT(TEMP_IDLE));
133
+    else
134
+      sprintf_P(e_str, PSTR("%3d / %3d%S"), ROUND(getActualTemp_celsius(getExtruder())), ROUND(getTargetTemp_celsius(getExtruder())), GET_TEXT(UNITS_C));
140 135
 
141 136
     const rgb_t tcol = getWarmColor(getActualTemp_celsius(getExtruder()), COOL_TEMP, LOW_TEMP, MED_TEMP, HIGH_TEMP);
142 137
     cmd.cmd(COLOR_RGB(tcol))
@@ -158,12 +153,12 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
158 153
     const bool t_ok = getActualTemp_celsius(getExtruder()) > getSoftenTemp() - 10;
159 154
 
160 155
     if (screen_data.ChangeFilamentScreen.t_tag && !t_ok) {
161
-      cmd.text(BTN_POS(1,6), BTN_SIZE(1,1), F("Heating..."));
156
+      cmd.text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXTF(HEATING));
162 157
     } else if (getActualTemp_celsius(getExtruder()) > 100) {
163 158
       cmd.cmd(COLOR_RGB(0xFF0000))
164
-         .text(BTN_POS(1,4), BTN_SIZE(1,1), F("Caution:"))
159
+         .text(BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXTF(CAUTION))
165 160
          .colors(normal_btn)
166
-         .text(BTN_POS(1,6), BTN_SIZE(1,1), F("Hot!"));
161
+         .text(BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXTF(HOT));
167 162
     }
168 163
 
169 164
     #define TOG_STYLE(A) colors(A ? action_btn : normal_btn)
@@ -195,15 +190,28 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
195 190
     const bool tog7 = screen_data.ChangeFilamentScreen.repeat_tag == 7;
196 191
     const bool tog8 = screen_data.ChangeFilamentScreen.repeat_tag == 8;
197 192
 
193
+
198 194
     #ifdef TOUCH_UI_PORTRAIT
199
-      cmd.font(font_large)
195
+      cmd.font(font_large);
200 196
     #else
201
-      cmd.font(font_small)
197
+      cmd.font(font_small);
202 198
     #endif
203
-       .tag(2) .TOG_STYLE(tog2) .button (BTN_POS(2,6), BTN_SIZE(1,1), F( STRINGIFY(LOW_TEMP)  "C (PLA)"))
204
-       .tag(3) .TOG_STYLE(tog3) .button (BTN_POS(2,5), BTN_SIZE(1,1), F( STRINGIFY(MED_TEMP)  "C (ABS)"))
205
-       .tag(4) .TOG_STYLE(tog4) .button (BTN_POS(2,4), BTN_SIZE(1,1), F( STRINGIFY(HIGH_TEMP) "C (High)"))
206
-       .colors(normal_btn)
199
+    {
200
+      char str[30];
201
+      sprintf_P(str, PSTR("%3d%S (%S)"), LOW_TEMP, GET_TEXT(UNITS_C), GET_TEXT(MATERIAL_PLA));
202
+      cmd.tag(2) .TOG_STYLE(tog2) .button (BTN_POS(2,6), BTN_SIZE(1,1), str);
203
+    }
204
+    {
205
+      char str[30];
206
+      sprintf_P(str, PSTR("%3d%S (%S)"), MED_TEMP, GET_TEXT(UNITS_C), GET_TEXT(MATERIAL_ABS));
207
+      cmd.tag(3) .TOG_STYLE(tog3) .button (BTN_POS(2,5), BTN_SIZE(1,1), str);
208
+    }
209
+    {
210
+      char str[30];
211
+      sprintf_P(str, PSTR("%3d%S (%S)"), HIGH_TEMP, GET_TEXT(UNITS_C), GET_TEXT(MATERIAL_HIGH_TEMP));
212
+      cmd.tag(4) .TOG_STYLE(tog4) .button (BTN_POS(2,4), BTN_SIZE(1,1), str);
213
+    }
214
+    cmd.colors(normal_btn)
207 215
 
208 216
     // Add tags to color gradient
209 217
     .cmd(COLOR_MASK(0,0,0,0))
@@ -215,23 +223,23 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
215 223
     .cmd(COLOR_RGB(t_ok ? bg_text_enabled : bg_text_disabled))
216 224
     #ifdef TOUCH_UI_PORTRAIT
217 225
        .font(font_large)
218
-       .tag(0)                              .text   (BTN_POS(1,8),  BTN_SIZE(1,1), F("Unload"))
219
-                                            .text   (BTN_POS(2,8),  BTN_SIZE(1,1), F("Load/Extrude"))
220
-       .tag(5)                .enabled(t_ok).button (BTN_POS(1,9),  BTN_SIZE(1,1), F("Momentary"))
221
-       .tag(6)                .enabled(t_ok).button (BTN_POS(2,9),  BTN_SIZE(1,1), F("Momentary"))
222
-       .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(1,10), BTN_SIZE(1,1), F("Continuous"))
223
-       .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(2,10), BTN_SIZE(1,1), F("Continuous"))
224
-       .tag(1).colors(action_btn)           .button (BTN_POS(1,11), BTN_SIZE(2,1), F("Back"));
226
+       .tag(0)                              .text   (BTN_POS(1,8),  BTN_SIZE(1,1), GET_TEXTF(UNLOAD_FILAMENT))
227
+                                            .text   (BTN_POS(2,8),  BTN_SIZE(1,1), GET_TEXTF(LOAD_FILAMENT))
228
+       .tag(5)                .enabled(t_ok).button (BTN_POS(1,9),  BTN_SIZE(1,1), GET_TEXTF(MOMENTARY))
229
+       .tag(6)                .enabled(t_ok).button (BTN_POS(2,9),  BTN_SIZE(1,1), GET_TEXTF(MOMENTARY))
230
+       .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(1,10), BTN_SIZE(1,1), GET_TEXTF(CONTINUOUS))
231
+       .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(2,10), BTN_SIZE(1,1), GET_TEXTF(CONTINUOUS))
232
+       .tag(1).colors(action_btn)           .button (BTN_POS(1,11), BTN_SIZE(2,1), GET_TEXTF(BACK));
225 233
     #else
226 234
        .font(font_small)
227
-       .tag(0)                              .text   (BTN_POS(3,3),  BTN_SIZE(1,1), F("Unload"))
228
-                                            .text   (BTN_POS(4,3),  BTN_SIZE(1,1), F("Load/Extrude"))
229
-       .tag(5)                .enabled(t_ok).button (BTN_POS(3,4),  BTN_SIZE(1,1), F("Momentary"))
230
-       .tag(6)                .enabled(t_ok).button (BTN_POS(4,4),  BTN_SIZE(1,1), F("Momentary"))
231
-       .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(3,5),  BTN_SIZE(1,1), F("Continuous"))
232
-       .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(4,5),  BTN_SIZE(1,1), F("Continuous"))
235
+       .tag(0)                              .text   (BTN_POS(3,3),  BTN_SIZE(1,1), GET_TEXTF(UNLOAD_FILAMENT))
236
+                                            .text   (BTN_POS(4,3),  BTN_SIZE(1,1), GET_TEXTF(LOAD_FILAMENT))
237
+       .tag(5)                .enabled(t_ok).button (BTN_POS(3,4),  BTN_SIZE(1,1), GET_TEXTF(MOMENTARY))
238
+       .tag(6)                .enabled(t_ok).button (BTN_POS(4,4),  BTN_SIZE(1,1), GET_TEXTF(MOMENTARY))
239
+       .tag(7).TOG_STYLE(tog7).enabled(t_ok).button (BTN_POS(3,5),  BTN_SIZE(1,1), GET_TEXTF(CONTINUOUS))
240
+       .tag(8).TOG_STYLE(tog8).enabled(t_ok).button (BTN_POS(4,5),  BTN_SIZE(1,1), GET_TEXTF(CONTINUOUS))
233 241
        .font(font_medium)
234
-       .tag(1).colors(action_btn)           .button (BTN_POS(3,6),  BTN_SIZE(2,1), F("Back"));
242
+       .tag(1).colors(action_btn)           .button (BTN_POS(3,6),  BTN_SIZE(2,1), GET_TEXTF(BACK));
235 243
     #endif
236 244
   }
237 245
   #undef GRID_COLS

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_abort_print_dialog_box.cpp 查看文件

@@ -29,7 +29,7 @@
29 29
 using namespace ExtUI;
30 30
 
31 31
 void ConfirmAbortPrintDialogBox::onRedraw(draw_mode_t) {
32
-  drawMessage(F("Are you sure you want to cancel the print?"));
32
+  drawMessage(GET_TEXTF(ABORT_WARNING));
33 33
   drawYesNoButtons();
34 34
 }
35 35
 

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_auto_calibration_dialog_box.cpp 查看文件

@@ -30,7 +30,7 @@ using namespace ExtUI;
30 30
 using namespace Theme;
31 31
 
32 32
 void ConfirmAutoCalibrationDialogBox::onRedraw(draw_mode_t) {
33
-  drawMessage(F("For best results, unload the filament and clean the hotend prior to starting calibration. Continue?"));
33
+  drawMessage(GET_TEXTF(CALIBRATION_WARNING));
34 34
   drawYesNoButtons();
35 35
 }
36 36
 

+ 3
- 3
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/confirm_erase_flash_dialog_box.cpp 查看文件

@@ -31,17 +31,17 @@
31 31
 using namespace FTDI;
32 32
 
33 33
 void ConfirmEraseFlashDialogBox::onRedraw(draw_mode_t) {
34
-  drawMessage(F("Are you sure? SPI flash will be erased."));
34
+  drawMessage(GET_TEXTF(ERASE_FLASH_WARNING));
35 35
   drawYesNoButtons();
36 36
 }
37 37
 
38 38
 bool ConfirmEraseFlashDialogBox::onTouchEnd(uint8_t tag) {
39 39
   switch (tag) {
40 40
     case 1:
41
-      SpinnerDialogBox::show(F("Erasing..."));
41
+      SpinnerDialogBox::show(GET_TEXTF(ERASING));
42 42
       UIFlashStorage::format_flash();
43 43
       SpinnerDialogBox::hide();
44
-      AlertDialogBox::show(F("SPI flash erased"));
44
+      AlertDialogBox::show(GET_TEXTF(ERASED));
45 45
       // Remove ConfirmEraseFlashDialogBox from the stack
46 46
       // so the alert box doesn't return to me.
47 47
       current_screen.forget();

+ 6
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/default_acceleration_screen.cpp 查看文件

@@ -33,14 +33,14 @@ using namespace Theme;
33 33
 void DefaultAccelerationScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(0);
36
-  w.units(PSTR("mm/s^2"));
37
-  w.heading(      PSTR("Default Acceleration"));
36
+  w.units(GET_TEXTF(UNITS_MM_S2));
37
+  w.heading(      GET_TEXTF(ACCELERATION));
38 38
   w.color(other);
39
-  w.adjuster(  2, PSTR("Printing:"),   getPrintingAcceleration_mm_s2() );
40
-  w.adjuster(  4, PSTR("Travel:"),     getTravelAcceleration_mm_s2() );
41
-  w.adjuster(  6, PSTR("Retraction:"), getRetractAcceleration_mm_s2() );
39
+  w.adjuster(  2, GET_TEXTF(ACCEL_PRINTING), getPrintingAcceleration_mm_s2() );
40
+  w.adjuster(  4, GET_TEXTF(ACCEL_TRAVEL),   getTravelAcceleration_mm_s2() );
41
+  w.adjuster(  6, GET_TEXTF(ACCEL_RETRACT),  getRetractAcceleration_mm_s2() );
42 42
   w.increments();
43
-  w.button(    8, PSTR("Set Axis Maximum"));
43
+  w.button(    8, GET_TEXTF(SET_MAXIMUM));
44 44
 }
45 45
 
46 46
 bool DefaultAccelerationScreen::onTouchHeld(uint8_t tag) {

+ 4
- 4
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/dialog_box_base_class.cpp 查看文件

@@ -45,19 +45,19 @@ void DialogBoxBaseClass::drawMessage(const T message, int16_t font) {
45 45
 }
46 46
 
47 47
 template void DialogBoxBaseClass::drawMessage(const char *, int16_t font);
48
-template void DialogBoxBaseClass::drawMessage(const progmem_str, int16_t font);
48
+template void DialogBoxBaseClass::drawMessage(progmem_str, int16_t font);
49 49
 
50 50
 void DialogBoxBaseClass::drawYesNoButtons(uint8_t default_btn) {
51 51
   CommandProcessor cmd;
52 52
   cmd.font(font_medium)
53
-     .colors(default_btn == 1 ? action_btn : normal_btn).tag(1).button( BTN_POS(1,8), BTN_SIZE(1,1), F("Yes"))
54
-     .colors(default_btn == 2 ? action_btn : normal_btn).tag(2).button( BTN_POS(2,8), BTN_SIZE(1,1), F("No"));
53
+     .colors(default_btn == 1 ? action_btn : normal_btn).tag(1).button( BTN_POS(1,8), BTN_SIZE(1,1), GET_TEXTF(YES))
54
+     .colors(default_btn == 2 ? action_btn : normal_btn).tag(2).button( BTN_POS(2,8), BTN_SIZE(1,1), GET_TEXTF(NO));
55 55
 }
56 56
 
57 57
 void DialogBoxBaseClass::drawOkayButton() {
58 58
   CommandProcessor cmd;
59 59
   cmd.font(font_medium)
60
-     .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), F("Okay"));
60
+     .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(OKAY));
61 61
 }
62 62
 
63 63
 void DialogBoxBaseClass::drawButton(const progmem_str label) {

+ 6
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/display_tuning_screen.cpp 查看文件

@@ -32,14 +32,14 @@ using namespace Theme;
32 32
 void DisplayTuningScreen::onRedraw(draw_mode_t what) {
33 33
   widgets_t w(what);
34 34
   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST);
35
-  w.units(PSTR(""));
36
-  w.heading(     PSTR("Display Tuning"));
35
+  w.units(F(""));
36
+  w.heading(GET_TEXTF(DISPLAY_MENU));
37 37
   w.color(other);
38
-  w.adjuster( 2, PSTR("H Offset:"), CLCD::mem_read_16(CLCD::REG::HOFFSET) );
39
-  w.adjuster( 4, PSTR("V Offset:"), CLCD::mem_read_16(CLCD::REG::VOFFSET) );
38
+  w.adjuster( 2, GET_TEXTF(H_OFFSET), CLCD::mem_read_16(CLCD::REG::HOFFSET) );
39
+  w.adjuster( 4, GET_TEXTF(V_OFFSET), CLCD::mem_read_16(CLCD::REG::VOFFSET) );
40 40
   w.increments();
41
-  w.heading(     PSTR("Touch Screen"));
42
-  w.button(6, PSTR("Calibrate"));
41
+  w.heading(     GET_TEXTF(TOUCH_SCREEN));
42
+  w.button(6,    GET_TEXTF(CALIBRATE));
43 43
 }
44 44
 
45 45
 bool DisplayTuningScreen::onTouchHeld(uint8_t tag) {

+ 23
- 23
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp 查看文件

@@ -48,7 +48,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
48 48
   #define GRID_ROWS 7
49 49
   #define GRID_COLS 6
50 50
 
51
-  #define PIN_BTN(X,Y,PIN,LABEL)          button(BTN_POS(X,Y), BTN_SIZE(2,1), F(LABEL))
51
+  #define PIN_BTN(X,Y,PIN,LABEL)          button(BTN_POS(X,Y), BTN_SIZE(2,1), LABEL)
52 52
   #define PIN_ENABLED(LABEL,PIN,INV,X,Y)  cmd.enabled(1).colors(READ(PIN##_PIN) != INV ? action_btn : normal_btn).PIN_BTN(X,Y,PIN,LABEL);
53 53
   #define PIN_DISABLED(LABEL,PIN,INV,X,Y) cmd.enabled(0).PIN_BTN(X,Y,PIN,LABEL);
54 54
 
@@ -57,68 +57,68 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
57 57
   #else
58 58
   cmd.font(font_medium)
59 59
   #endif
60
-     .text(BTN_POS(1,1), BTN_SIZE(6,1), F("Endstop States:"))
60
+     .text(BTN_POS(1,1), BTN_SIZE(6,1), GET_TEXTF(ENDSTOPS))
61 61
      .font(font_tiny);
62 62
   #if PIN_EXISTS(X_MAX)
63
-    PIN_ENABLED ("X Max", X_MAX,X_MAX_ENDSTOP_INVERTING,1,2)
63
+    PIN_ENABLED (GET_TEXTF(X_MAX), X_MAX,X_MAX_ENDSTOP_INVERTING,1,2)
64 64
   #else
65
-    PIN_DISABLED("X Max",X_MAX,X_MAX_ENDSTOP_INVERTING,1,2)
65
+    PIN_DISABLED(GET_TEXTF(X_MAX),X_MAX,X_MAX_ENDSTOP_INVERTING,1,2)
66 66
   #endif
67 67
   #if PIN_EXISTS(Y_MAX)
68
-    PIN_ENABLED ("Y Max",Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2)
68
+    PIN_ENABLED (GET_TEXTF(Y_MAX),Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2)
69 69
   #else
70
-    PIN_DISABLED("Y Max",Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2)
70
+    PIN_DISABLED(GET_TEXTF(Y_MAX),Y_MAX,Y_MAX_ENDSTOP_INVERTING,3,2)
71 71
   #endif
72 72
   #if PIN_EXISTS(Z_MAX)
73
-    PIN_ENABLED ("Z Max",Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2)
73
+    PIN_ENABLED (GET_TEXTF(Z_MAX),Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2)
74 74
   #else
75
-    PIN_DISABLED("Z Max",Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2)
75
+    PIN_DISABLED(GET_TEXTF(Z_MAX),Z_MAX,Z_MAX_ENDSTOP_INVERTING,5,2)
76 76
   #endif
77 77
   #if PIN_EXISTS(X_MIN)
78
-    PIN_ENABLED ("X Min",X_MIN,X_MIN_ENDSTOP_INVERTING,1,3)
78
+    PIN_ENABLED (GET_TEXTF(X_MIN),X_MIN,X_MIN_ENDSTOP_INVERTING,1,3)
79 79
   #else
80
-    PIN_DISABLED("X Min",X_MIN,X_MIN_ENDSTOP_INVERTING,1,3)
80
+    PIN_DISABLED(GET_TEXTF(X_MIN),X_MIN,X_MIN_ENDSTOP_INVERTING,1,3)
81 81
   #endif
82 82
   #if PIN_EXISTS(Y_MIN)
83
-    PIN_ENABLED ("Y Min",Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3)
83
+    PIN_ENABLED (GET_TEXTF(Y_MIN),Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3)
84 84
   #else
85
-    PIN_DISABLED("Y Min",Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3)
85
+    PIN_DISABLED(GET_TEXTF(Y_MIN),Y_MIN,Y_MIN_ENDSTOP_INVERTING,3,3)
86 86
   #endif
87 87
   #if PIN_EXISTS(Z_MIN)
88
-    PIN_ENABLED ("Z Min",Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3)
88
+    PIN_ENABLED (GET_TEXTF(Z_MIN),Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3)
89 89
   #else
90
-    PIN_DISABLED("Z Min",Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3)
90
+    PIN_DISABLED(GET_TEXTF(Z_MIN),Z_MIN,Z_MIN_ENDSTOP_INVERTING,5,3)
91 91
   #endif
92 92
   #if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT)
93
-    PIN_ENABLED ("Runout 1",FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4)
93
+    PIN_ENABLED (GET_TEXTF(RUNOUT_1),FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4)
94 94
   #else
95
-    PIN_DISABLED("Runout 1",FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4)
95
+    PIN_DISABLED(GET_TEXTF(RUNOUT_1),FIL_RUNOUT, FIL_RUNOUT_INVERTING,1,4)
96 96
   #endif
97 97
   #if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2)
98
-    PIN_ENABLED ("Runout 2",FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4)
98
+    PIN_ENABLED (GET_TEXTF(RUNOUT_2),FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4)
99 99
   #else
100
-    PIN_DISABLED("Runout 2",FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4)
100
+    PIN_DISABLED(GET_TEXTF(RUNOUT_2),FIL_RUNOUT2,FIL_RUNOUT_INVERTING,3,4)
101 101
   #endif
102 102
   #if PIN_EXISTS(Z_MIN_PROBE)
103
-    PIN_ENABLED ("Z Probe",Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4)
103
+    PIN_ENABLED (GET_TEXTF(Z_PROBE),Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4)
104 104
   #else
105
-    PIN_DISABLED("Z Probe",Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4)
105
+    PIN_DISABLED(GET_TEXTF(Z_PROBE),Z_MIN_PROBE,Z_MIN_PROBE_ENDSTOP_INVERTING,5,4)
106 106
   #endif
107 107
 
108 108
   #if HAS_SOFTWARE_ENDSTOPS
109 109
     #undef EDGE_R
110 110
     #define EDGE_R 30
111 111
     cmd.font(font_small)
112
-       .text         (BTN_POS(1,5), BTN_SIZE(3,1), F("Soft Limits:"), OPT_RIGHTX | OPT_CENTERY)
112
+       .text         (BTN_POS(1,5), BTN_SIZE(3,1), GET_TEXTF(SOFT_ENDSTOPS), OPT_RIGHTX | OPT_CENTERY)
113 113
        .colors(ui_toggle)
114
-       .tag(2).toggle(BTN_POS(4,5), BTN_SIZE(3,1), F("off\xFFon"), getSoftEndstopState());
114
+       .tag(2).toggle2(BTN_POS(4,5), BTN_SIZE(3,1), GET_TEXTF(NO), GET_TEXTF(YES), getSoftEndstopState());
115 115
       #undef EDGE_R
116 116
       #define EDGE_R 0
117 117
   #endif
118 118
 
119 119
   cmd.font(font_medium)
120 120
      .colors(action_btn)
121
-     .tag(1).button( BTN_POS(1,7), BTN_SIZE(6,1), F("Back"));
121
+     .tag(1).button( BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXTF(BACK));
122 122
   #undef GRID_COLS
123 123
   #undef GRID_ROWS
124 124
 }

+ 3
- 3
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/feedrate_percent_screen.cpp 查看文件

@@ -31,10 +31,10 @@ using namespace ExtUI;
31 31
 
32 32
 void FeedratePercentScreen::onRedraw(draw_mode_t what) {
33 33
   widgets_t w(what);
34
-  w.precision(0).units(PSTR("%"));
34
+  w.precision(0).units(GET_TEXTF(UNITS_PERCENT));
35 35
 
36
-  w.heading(PSTR("Print Speed"));
37
-  w.adjuster(4,  PSTR("Speed"), getFeedrate_percent());
36
+  w.heading(GET_TEXTF(PRINT_SPEED));
37
+  w.adjuster(4,  GET_TEXTF(SPEED), getFeedrate_percent());
38 38
   w.increments();
39 39
 }
40 40
 

+ 8
- 8
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/filament_menu.cpp 查看文件

@@ -43,43 +43,43 @@ void FilamentMenu::onRedraw(draw_mode_t what) {
43 43
     #ifdef TOUCH_UI_PORTRAIT
44 44
       #define GRID_ROWS 9
45 45
       #define GRID_COLS 2
46
-         .text  ( BTN_POS(1,1),      BTN_SIZE(2,1), F("Filament Options:"))
46
+         .text  ( BTN_POS(1,1),      BTN_SIZE(2,1), GET_TEXTF(FILAMENT))
47 47
          .font(font_medium).colors(normal_btn)
48 48
       #if ENABLED(FILAMENT_RUNOUT_SENSOR)
49 49
         .enabled(1)
50 50
       #else
51 51
         .enabled(0)
52 52
       #endif
53
-      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(2,1), F("Runout Sensor"))
53
+      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(2,1), GET_TEXTF(RUNOUT_SENSOR))
54 54
       #if ENABLED(LIN_ADVANCE)
55 55
         .enabled(1)
56 56
       #else
57 57
         .enabled(0)
58 58
       #endif
59
-      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(2,1), F("Linear Advance"))
59
+      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(2,1), GET_TEXTF(LINEAR_ADVANCE))
60 60
       .colors(action_btn)
61
-      .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), F("Back"));
61
+      .tag(1) .button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXTF(BACK));
62 62
       #undef GRID_COLS
63 63
       #undef GRID_ROWS
64 64
     #else
65 65
       #define GRID_ROWS 6
66 66
       #define GRID_COLS 3
67
-         .text  ( BTN_POS(1,1),      BTN_SIZE(3,1), F("Filament Options:"))
67
+         .text  ( BTN_POS(1,1),      BTN_SIZE(3,1), GET_TEXTF(FILAMENT))
68 68
          .font(font_medium).colors(normal_btn)
69 69
       #if ENABLED(FILAMENT_RUNOUT_SENSOR)
70 70
         .enabled(1)
71 71
       #else
72 72
         .enabled(0)
73 73
       #endif
74
-      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(3,1), F("Filament Runout"))
74
+      .tag(2).button( BTN_POS(1,2),  BTN_SIZE(3,1), GET_TEXTF(RUNOUT_SENSOR))
75 75
       #if ENABLED(LIN_ADVANCE)
76 76
         .enabled(1)
77 77
       #else
78 78
         .enabled(0)
79 79
       #endif
80
-      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(3,1), F("Linear Advance"))
80
+      .tag(3).button( BTN_POS(1,3),  BTN_SIZE(3,1), GET_TEXTF(LINEAR_ADVANCE))
81 81
       .colors(action_btn)
82
-      .tag(1) .button( BTN_POS(1,6), BTN_SIZE(3,1), F("Back"));
82
+      .tag(1) .button( BTN_POS(1,6), BTN_SIZE(3,1), GET_TEXTF(BACK));
83 83
     #endif
84 84
   }
85 85
 }

+ 5
- 5
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/filament_runout_screen.cpp 查看文件

@@ -32,15 +32,15 @@ using namespace Theme;
32 32
 
33 33
 void FilamentRunoutScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35
-  w.heading(   PSTR("Runout Detection:"));
36
-  w.toggle( 2, PSTR("Filament Sensor:"), PSTR("off\xFFon"), getFilamentRunoutEnabled());
35
+  w.heading(   GET_TEXTF(FILAMENT));
36
+  w.toggle( 2, GET_TEXTF(RUNOUT_SENSOR), getFilamentRunoutEnabled());
37 37
 
38 38
   #ifdef FILAMENT_RUNOUT_DISTANCE_MM
39
-    w.heading(PSTR("Detection Threshold:"));
40
-    w.units(PSTR("mm"));
39
+    w.heading(GET_TEXTF(DETECTION_THRESHOLD));
40
+    w.units(GET_TEXTF(UNITS_MM));
41 41
     w.precision(0);
42 42
     w.color(e_axis);
43
-    w.adjuster( 10, PSTR("Distance:"), getFilamentRunoutDistance_mm(), getFilamentRunoutEnabled());
43
+    w.adjuster( 10, GET_TEXTF(DISTANCE), getFilamentRunoutDistance_mm(), getFilamentRunoutEnabled());
44 44
     w.increments();
45 45
   #endif
46 46
 }

+ 4
- 4
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/files_screen.cpp 查看文件

@@ -165,13 +165,13 @@ void FilesScreen::drawFooter() {
165 165
   cmd.colors(normal_btn)
166 166
      .font(font_medium)
167 167
      .colors(has_selection ? normal_btn : action_btn)
168
-     .tag(back_tag).button( BTN_POS(4,y), BTN_SIZE(3,h), F("Back"))
168
+     .tag(back_tag).button( BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXTF(BACK))
169 169
      .enabled(has_selection)
170 170
      .colors(has_selection ? action_btn : normal_btn);
171 171
   if (screen_data.FilesScreen.flags.is_dir) {
172
-    cmd.tag(244).button( BTN_POS(1, y), BTN_SIZE(3,h), F("Open"));
172
+    cmd.tag(244).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXTF(OPEN_DIR));
173 173
   } else {
174
-    cmd.tag(243).button( BTN_POS(1, y), BTN_SIZE(3,h), F("Print"));
174
+    cmd.tag(243).button( BTN_POS(1, y), BTN_SIZE(3,h), GET_TEXTF(PRINT_FILE));
175 175
   }
176 176
 }
177 177
 
@@ -210,7 +210,7 @@ bool FilesScreen::onTouchEnd(uint8_t tag) {
210 210
       break;
211 211
     case 243:
212 212
       printFile(getSelectedShortFilename());
213
-      StatusScreen::setStatusMessage(F("Print Starting"));
213
+      StatusScreen::setStatusMessage(GET_TEXTF(PRINT_STARTING));
214 214
       GOTO_SCREEN(StatusScreen);
215 215
       return true;
216 216
     case 244:

+ 13
- 13
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/interface_settings_screen.cpp 查看文件

@@ -69,15 +69,15 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) {
69 69
        .cmd(COLOR_RGB(bg_text_enabled))
70 70
        .tag(0)
71 71
        .font(font_medium)
72
-       .text(BTN_POS(1,1), BTN_SIZE(4,1), F("Interface Settings"))
72
+       .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXTF(INTERFACE_SETTINGS))
73 73
     #undef EDGE_R
74 74
     #define EDGE_R 30
75 75
        .font(font_small)
76 76
        .tag(0)
77
-       .text(BTN_POS(1,2), BTN_SIZE(2,1), F("LCD brightness:"), OPT_RIGHTX | OPT_CENTERY)
78
-       .text(BTN_POS(1,3), BTN_SIZE(2,1), F("Sound volume:"),   OPT_RIGHTX | OPT_CENTERY)
79
-       .text(BTN_POS(1,4), BTN_SIZE(2,1), F("Screen lock:"),    OPT_RIGHTX | OPT_CENTERY);
80
-    cmd.text(BTN_POS(1,5), BTN_SIZE(2,1), F("Boot screen:"),    OPT_RIGHTX | OPT_CENTERY);
77
+       .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(LCD_BRIGHTNESS), OPT_RIGHTX | OPT_CENTERY)
78
+       .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY)
79
+       .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(SCREEN_LOCK),    OPT_RIGHTX | OPT_CENTERY);
80
+    cmd.text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(BOOT_SCREEN),    OPT_RIGHTX | OPT_CENTERY);
81 81
     #undef EDGE_R
82 82
   }
83 83
 
@@ -94,19 +94,19 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) {
94 94
        .tag(2).slider(BTN_POS(3,2), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.brightness, 128)
95 95
        .tag(3).slider(BTN_POS(3,3), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.volume,     0xFF)
96 96
        .colors(ui_toggle)
97
-       .tag(4).toggle(BTN_POS(3,4), BTN_SIZE(w,1), F("off\xFFon"), LockScreen::is_enabled())
98
-       .tag(5).toggle(BTN_POS(3,5), BTN_SIZE(w,1), F("off\xFFon"), UIData::animations_enabled())
97
+       .tag(4).toggle2(BTN_POS(3,4), BTN_SIZE(w,1), GET_TEXTF(NO), GET_TEXTF(YES), LockScreen::is_enabled())
98
+       .tag(5).toggle2(BTN_POS(3,5), BTN_SIZE(w,1), GET_TEXTF(NO), GET_TEXTF(YES), UIData::animations_enabled())
99 99
     #undef EDGE_R
100 100
     #define EDGE_R 0
101 101
     #ifdef TOUCH_UI_PORTRAIT
102 102
        .colors(normal_btn)
103
-       .tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), F("Customize Sounds"))
103
+       .tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXTF(INTERFACE_SOUNDS))
104 104
        .colors(action_btn)
105
-       .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), F("Back"));
105
+       .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXTF(BACK));
106 106
     #else
107
-       .tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), F("Customize Sounds"))
107
+       .tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(INTERFACE_SOUNDS))
108 108
        .colors(action_btn)
109
-       .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), F("Back"));
109
+       .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXTF(BACK));
110 110
     #endif
111 111
   }
112 112
 }
@@ -263,9 +263,9 @@ void InterfaceSettingsScreen::loadSettings(const char *buff) {
263 263
       success = persistentStore.write_data(0, data, LULZBOT_EEPROM_BACKUP_SIZE) == PERSISTENT_STORE_SUCCESS;
264 264
 
265 265
     if (success)
266
-      StatusScreen::setStatusMessage(F("Settings restored from backup"));
266
+      StatusScreen::setStatusMessage(GET_TEXTF(EEPROM_RESTORED));
267 267
     else
268
-      StatusScreen::setStatusMessage(F("Settings restored to default"));
268
+      StatusScreen::setStatusMessage(GET_TEXTF(EEPROM_RESET));
269 269
 
270 270
     return success;
271 271
   }

+ 8
- 8
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/interface_sounds_screen.cpp 查看文件

@@ -71,15 +71,15 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
71 71
     #define GRID_ROWS 9
72 72
 
73 73
        .font(font_medium)
74
-       .text(BTN_POS(1,1), BTN_SIZE(4,1), F("Interface Sounds"))
74
+       .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXTF(INTERFACE_SOUNDS))
75 75
     #undef EDGE_R
76 76
     #define EDGE_R 30
77 77
        .font(font_small)
78
-       .tag(0).text      (BTN_POS(1,2), BTN_SIZE(2,1), F("Sound volume:"),   OPT_RIGHTX | OPT_CENTERY)
79
-              .text      (BTN_POS(1,3), BTN_SIZE(2,1), F("Click sounds:"),   OPT_RIGHTX | OPT_CENTERY)
80
-              .text      (BTN_POS(1,5), BTN_SIZE(2,1), F("Print starting:"), OPT_RIGHTX | OPT_CENTERY)
81
-              .text      (BTN_POS(1,6), BTN_SIZE(2,1), F("Print finished:"), OPT_RIGHTX | OPT_CENTERY)
82
-              .text      (BTN_POS(1,7), BTN_SIZE(2,1), F("Print error:"),    OPT_RIGHTX | OPT_CENTERY);
78
+       .tag(0).text      (BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(SOUND_VOLUME),   OPT_RIGHTX | OPT_CENTERY)
79
+              .text      (BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(CLICK_SOUNDS),   OPT_RIGHTX | OPT_CENTERY)
80
+              .text      (BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(PRINT_STARTING), OPT_RIGHTX | OPT_CENTERY)
81
+              .text      (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(PRINT_FINISHED), OPT_RIGHTX | OPT_CENTERY)
82
+              .text      (BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(PRINT_ERROR),    OPT_RIGHTX | OPT_CENTERY);
83 83
     #undef EDGE_R
84 84
   }
85 85
 
@@ -95,7 +95,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
95 95
     #define EDGE_R 30
96 96
        .tag(2).slider    (BTN_POS(3,2), BTN_SIZE(2,1), screen_data.InterfaceSettingsScreen.volume, 0xFF)
97 97
        .colors(ui_toggle)
98
-       .tag(3).toggle    (BTN_POS(3,3), BTN_SIZE(w,1), F("off\xFFon"), UIData::touch_sounds_enabled())
98
+       .tag(3).toggle2   (BTN_POS(3,3), BTN_SIZE(w,1), GET_TEXTF(NO), GET_TEXTF(YES), UIData::touch_sounds_enabled())
99 99
     #undef EDGE_R
100 100
        .colors(normal_btn)
101 101
     #define EDGE_R 0
@@ -103,7 +103,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
103 103
        .tag(5).button    (BTN_POS(3,6), BTN_SIZE(2,1), getSoundSelection(PRINTING_FINISHED))
104 104
        .tag(6).button    (BTN_POS(3,7), BTN_SIZE(2,1), getSoundSelection(PRINTING_FAILED))
105 105
        .colors(action_btn)
106
-       .tag(1).button    (BTN_POS(1,9), BTN_SIZE(4,1), F("Back"));
106
+       .tag(1).button    (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXTF(BACK));
107 107
   }
108 108
 }
109 109
 

+ 6
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/jerk_screen.cpp 查看文件

@@ -34,12 +34,12 @@ void JerkScreen::onRedraw(draw_mode_t what) {
34 34
 
35 35
   widgets_t w(what);
36 36
   w.precision(1);
37
-  w.units(PSTR("mm/s"));
38
-  w.heading(                           PSTR("Maximum Jerk"));
39
-  w.color(x_axis) .adjuster( 2, PSTR("X:"), getAxisMaxJerk_mm_s(X) );
40
-  w.color(y_axis) .adjuster( 4, PSTR("Y:"), getAxisMaxJerk_mm_s(Y) );
41
-  w.color(z_axis) .adjuster( 6, PSTR("Z:"), getAxisMaxJerk_mm_s(Z) );
42
-  w.color(e_axis) .adjuster( 8, PSTR("E:"), getAxisMaxJerk_mm_s(E0) );
37
+  w.units(GET_TEXTF(UNITS_MM_S));
38
+  w.heading(GET_TEXTF(JERK));
39
+  w.color(x_axis) .adjuster( 2, GET_TEXTF(AXIS_X), getAxisMaxJerk_mm_s(X) );
40
+  w.color(y_axis) .adjuster( 4, GET_TEXTF(AXIS_Y), getAxisMaxJerk_mm_s(Y) );
41
+  w.color(z_axis) .adjuster( 6, GET_TEXTF(AXIS_Z), getAxisMaxJerk_mm_s(Z) );
42
+  w.color(e_axis) .adjuster( 8, GET_TEXTF(AXIS_E), getAxisMaxJerk_mm_s(E0) );
43 43
   w.increments();
44 44
 }
45 45
 

+ 2
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/junction_deviation_screen.cpp 查看文件

@@ -33,8 +33,8 @@ using namespace Theme;
33 33
 void JunctionDeviationScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(2);
36
-  w.units(PSTR("mm"));
37
-  w.heading(                          PSTR("Junction Deviation"));
36
+  w.units(GET_TEXTF(UNITS_MM));
37
+  w.heading(GET_TEXTF(JUNCTION_DEVIATION));
38 38
   w.color(other) .adjuster( 2, PSTR(""), getJunctionDeviation_mm() );
39 39
   w.increments();
40 40
 }

+ 2
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp 查看文件

@@ -46,8 +46,8 @@ void KillScreen::show(progmem_str message) {
46 46
   cmd.font(Theme::font_large)
47 47
      .cmd(COLOR_RGB(Theme::bg_text_enabled))
48 48
      .text(BTN_POS(1,2), BTN_SIZE(4,1), message)
49
-     .text(BTN_POS(1,3), BTN_SIZE(4,1), F("PRINTER HALTED"))
50
-     .text(BTN_POS(1,6), BTN_SIZE(4,1), F("Please reset"));
49
+     .text(BTN_POS(1,3), BTN_SIZE(4,1), GET_TEXTF(PRINTER_HALTED))
50
+     .text(BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXTF(PLEASE_RESET));
51 51
 
52 52
   #undef GRID_COLS
53 53
   #undef GRID_ROWS

+ 56
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/language_menu.cpp 查看文件

@@ -0,0 +1,56 @@
1
+/*********************
2
+ * language_menu.cpp *
3
+ *********************/
4
+
5
+/****************************************************************************
6
+ *   Written By Mark Pelletier  2017 - Aleph Objects, Inc.                  *
7
+ *   Written By Marcio Teixeira 2018 - Aleph Objects, Inc.                  *
8
+ *                                                                          *
9
+ *   This program is free software: you can redistribute it and/or modify   *
10
+ *   it under the terms of the GNU General Public License as published by   *
11
+ *   the Free Software Foundation, either version 3 of the License, or      *
12
+ *   (at your option) any later version.                                    *
13
+ *                                                                          *
14
+ *   This program is distributed in the hope that it will be useful,        *
15
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
16
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
17
+ *   GNU General Public License for more details.                           *
18
+ *                                                                          *
19
+ *   To view a copy of the GNU General Public License, go to the following  *
20
+ *   location: <http://www.gnu.org/licenses/>.                              *
21
+ ****************************************************************************/
22
+
23
+#include "../config.h"
24
+
25
+#if ENABLED(LULZBOT_TOUCH_UI) && defined(TOUCH_UI_LANGUAGE_MENU)
26
+
27
+#include "screens.h"
28
+
29
+using namespace FTDI;
30
+using namespace Theme;
31
+
32
+void LanguageMenu::onRedraw(draw_mode_t) {
33
+  CommandProcessor cmd;
34
+  cmd.cmd(CLEAR_COLOR_RGB(Theme::bg_color))
35
+     .cmd(CLEAR(true,true,true))
36
+     .colors(normal_btn)
37
+     .font(Theme::font_medium);
38
+
39
+  #define GRID_ROWS 8
40
+  #define GRID_COLS 1
41
+
42
+  for (uint8_t i = 0; i < get_language_count(); i++)
43
+    cmd.tag(1 + i).button(BTN_POS(1,i + 1), BTN_SIZE(1,1), get_text(i, String_Indices::LANGUAGE));
44
+}
45
+
46
+bool LanguageMenu::onTouchEnd(uint8_t tag) {
47
+  const uint8_t lang = tag - 1;
48
+  if (tag != 0) {
49
+    set_language(lang);
50
+    GOTO_SCREEN(StatusScreen);
51
+    return true;
52
+  }
53
+  return false;
54
+}
55
+
56
+#endif // LULZBOT_TOUCH_UI

+ 6
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/linear_advance_screen.cpp 查看文件

@@ -33,16 +33,16 @@ using namespace Theme;
33 33
 void LinearAdvanceScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(2, DEFAULT_LOWEST).color(e_axis);
36
-  w.heading(           PSTR("Linear Advance:"));
36
+  w.heading(           GET_TEXTF(LINEAR_ADVANCE));
37 37
   #if EXTRUDERS == 1
38
-    w.adjuster(     2, PSTR("K:"),    getLinearAdvance_mm_mm_s(E0) );
38
+    w.adjuster(     2, GET_TEXTF(LINEAR_ADVANCE_K),    getLinearAdvance_mm_mm_s(E0) );
39 39
   #else
40
-    w.adjuster(     2, PSTR("K E1:"), getLinearAdvance_mm_mm_s(E0) );
41
-    w.adjuster(     4, PSTR("K E2:"), getLinearAdvance_mm_mm_s(E1) );
40
+    w.adjuster(     2, GET_TEXTF(LINEAR_ADVANCE_K1), getLinearAdvance_mm_mm_s(E0) );
41
+    w.adjuster(     4, GET_TEXTF(LINEAR_ADVANCE_K2), getLinearAdvance_mm_mm_s(E1) );
42 42
     #if EXTRUDERS > 2
43
-      w.adjuster(   6, PSTR("K E3:"), getLinearAdvance_mm_mm_s(E2) );
43
+      w.adjuster(   6, GET_TEXTF(LINEAR_ADVANCE_K3), getLinearAdvance_mm_mm_s(E2) );
44 44
       #if EXTRUDERS > 3
45
-        w.adjuster( 8, PSTR("K E4:"), getLinearAdvance_mm_mm_s(E3) );
45
+        w.adjuster( 8, GET_TEXTF(LINEAR_ADVANCE_K4), getLinearAdvance_mm_mm_s(E3) );
46 46
       #endif
47 47
     #endif
48 48
   #endif

+ 4
- 4
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/lock_screen.cpp 查看文件

@@ -65,16 +65,16 @@ void LockScreen::onRedraw(draw_mode_t what) {
65 65
     progmem_str message;
66 66
     switch (message_style()) {
67 67
       case 'w':
68
-        message = F("Wrong passcode!");
68
+        message = GET_TEXTF(PASSCODE_REJECTED);
69 69
         break;
70 70
       case 'g':
71
-        message = F("Passcode accepted!");
71
+        message = GET_TEXTF(PASSCODE_ACCEPTED);
72 72
         break;
73 73
       default:
74 74
         if (passcode == 0) {
75
-          message = F("Select Passcode:");
75
+          message = GET_TEXTF(PASSCODE_SELECT);
76 76
         } else {
77
-          message = F("Enter Passcode:");
77
+          message = GET_TEXTF(PASSCODE_REQUEST);
78 78
         }
79 79
     }
80 80
     message_style() = '\0'; // Terminate the string.

+ 20
- 20
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/main_menu.cpp 查看文件

@@ -43,53 +43,53 @@ void MainMenu::onRedraw(draw_mode_t what) {
43 43
     #ifdef TOUCH_UI_PORTRAIT
44 44
       #define GRID_ROWS 8
45 45
       #define GRID_COLS 2
46
-        .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"))
46
+        .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXTF(AUTO_HOME))
47 47
         #ifdef NOZZLE_CLEAN_FEATURE
48 48
          .enabled(1)
49 49
         #else
50 50
          .enabled(0)
51 51
         #endif
52
-        .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), F("Clean Nozzle"))
53
-        .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), F("Move Axis"))
54
-        .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), F("Motors Off"))
55
-        .tag(6).button( BTN_POS(1,3), BTN_SIZE(2,1), F("Temperature"))
56
-        .tag(7).button( BTN_POS(1,4), BTN_SIZE(2,1), F("Change Filament"))
57
-        .tag(8).button( BTN_POS(1,5), BTN_SIZE(2,1), F("Advanced Settings"))
52
+        .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXTF(CLEAN_NOZZLE))
53
+        .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXTF(MOVE_AXIS))
54
+        .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXTF(MOTORS_OFF))
55
+        .tag(6).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(TEMPERATURE))
56
+        .tag(7).button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(CHANGE_FILAMENT))
57
+        .tag(8).button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(ADVANCED_SETTINGS))
58 58
         #ifdef PRINTCOUNTER
59 59
          .enabled(1)
60 60
         #else
61 61
          .enabled(0)
62 62
         #endif
63
-        .tag(9).button( BTN_POS(1,7), BTN_SIZE(2,1), F("Printer Statistics"))
64
-        .tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), F("About Printer"))
63
+        .tag(9).button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(PRINTER_STATISTICS))
64
+        .tag(10).button( BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(ABOUT_PRINTER))
65 65
         .colors(action_btn)
66
-        .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), F("Back"));
66
+        .tag(1).button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(BACK));
67 67
       #undef GRID_COLS
68 68
       #undef GRID_ROWS
69 69
     #else
70 70
       #define GRID_ROWS 5
71 71
       #define GRID_COLS 2
72
-        .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), F("Auto Home"))
72
+        .tag(2).button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXT(AUTO_HOME))
73 73
         #if ENABLED(NOZZLE_CLEAN_FEATURE)
74 74
          .enabled(1)
75 75
         #else
76 76
          .enabled(0)
77 77
         #endif
78
-        .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), F("Clean Nozzle"))
79
-        .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), F("Move Axis"))
80
-        .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), F("Motors Off"))
81
-        .tag(6).button( BTN_POS(1,3), BTN_SIZE(1,1), F("Temperature"))
82
-        .tag(7).button( BTN_POS(2,3), BTN_SIZE(1,1), F("Change Filament"))
83
-        .tag(8).button( BTN_POS(1,4), BTN_SIZE(1,1), F("Advanced Settings"))
78
+        .tag(3).button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXTF(CLEAN_NOZZLE))
79
+        .tag(4).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXTF(MOVE_AXIS))
80
+        .tag(5).button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXTF(MOTORS_OFF))
81
+        .tag(6).button( BTN_POS(1,3), BTN_SIZE(1,1), GET_TEXTF(TEMPERATURE))
82
+        .tag(7).button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXTF(CHANGE_FILAMENT))
83
+        .tag(8).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXTF(ADVANCED_SETTINGS))
84 84
         #ifdef PRINTCOUNTER
85 85
          .enabled(1)
86 86
         #else
87 87
          .enabled(0)
88 88
         #endif
89
-        .tag(9).button( BTN_POS(2,4), BTN_SIZE(1,1), F("Printer Statistics"))
90
-        .tag(10).button( BTN_POS(1,5), BTN_SIZE(1,1), F("About Printer"))
89
+        .tag(9).button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(PRINTER_STATISTICS))
90
+        .tag(10).button( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXTF(ABOUT_PRINTER))
91 91
         .colors(action_btn)
92
-        .tag(1).button( BTN_POS(2,5), BTN_SIZE(1,1), F("Back"));
92
+        .tag(1).button( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXTF(BACK));
93 93
       #undef GRID_COLS
94 94
       #undef GRID_ROWS
95 95
     #endif

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp 查看文件

@@ -33,21 +33,21 @@ using namespace Theme;
33 33
 void MaxAccelerationScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(0);
36
-  w.units(PSTR("mm/s^2"));
37
-  w.heading(                     PSTR("Maximum Acceleration"));
38
-  w.color(x_axis)  .adjuster( 2, PSTR("X:"),  getAxisMaxAcceleration_mm_s2(X) );
39
-  w.color(y_axis)  .adjuster( 4, PSTR("Y:"),  getAxisMaxAcceleration_mm_s2(Y) );
40
-  w.color(z_axis)  .adjuster( 6, PSTR("Z:"),  getAxisMaxAcceleration_mm_s2(Z) );
36
+  w.units(GET_TEXTF(UNITS_MM_S2));
37
+  w.heading(GET_TEXTF(ACCELERATION));
38
+  w.color(x_axis)  .adjuster( 2, GET_TEXTF(AMAX_X),  getAxisMaxAcceleration_mm_s2(X) );
39
+  w.color(y_axis)  .adjuster( 4, GET_TEXTF(AMAX_Y),  getAxisMaxAcceleration_mm_s2(Y) );
40
+  w.color(z_axis)  .adjuster( 6, GET_TEXTF(AMAX_Z),  getAxisMaxAcceleration_mm_s2(Z) );
41 41
   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS)
42
-    w.color(e_axis).adjuster( 8, PSTR("E:"),  getAxisMaxAcceleration_mm_s2(E0) );
42
+    w.color(e_axis).adjuster( 8, GET_TEXTF(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
43 43
   #elif EXTRUDERS > 1
44
-    w.color(e_axis).adjuster( 8, PSTR("E1:"), getAxisMaxAcceleration_mm_s2(E0) );
45
-    w.color(e_axis).adjuster(10, PSTR("E2:"), getAxisMaxAcceleration_mm_s2(E1) );
44
+    w.color(e_axis).adjuster( 8, GET_TEXTF(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
45
+    w.color(e_axis).adjuster(10, GET_TEXTF(AMAX_E2), getAxisMaxAcceleration_mm_s2(E1) );
46 46
     #if EXTRUDERS > 2
47
-    w.color(e_axis).adjuster(12, PSTR("E3:"), getAxisMaxAcceleration_mm_s2(E2) );
47
+    w.color(e_axis).adjuster(12, GET_TEXTF(AMAX_E3), getAxisMaxAcceleration_mm_s2(E2) );
48 48
     #endif
49 49
     #if EXTRUDERS > 3
50
-    w.color(e_axis).adjuster(14, PSTR("E4:"), getAxisMaxAcceleration_mm_s2(E3) );
50
+    w.color(e_axis).adjuster(14, GET_TEXTF(AMAX_E4), getAxisMaxAcceleration_mm_s2(E3) );
51 51
     #endif
52 52
   #endif
53 53
   w.increments();

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_velocity_screen.cpp 查看文件

@@ -34,21 +34,21 @@ void MaxVelocityScreen::onRedraw(draw_mode_t what) {
34 34
   using namespace ExtUI;
35 35
   widgets_t w(what);
36 36
   w.precision(0);
37
-  w.units(PSTR("mm/s"));
38
-  w.heading(                        PSTR("Maximum Velocity"));
39
-  w.color(x_axis)    .adjuster(  2, PSTR("X:"),  getAxisMaxFeedrate_mm_s(X) );
40
-  w.color(y_axis)    .adjuster(  4, PSTR("Y:"),  getAxisMaxFeedrate_mm_s(Y) );
41
-  w.color(z_axis)    .adjuster(  6, PSTR("Z:"),  getAxisMaxFeedrate_mm_s(Z) );
37
+  w.units(GET_TEXTF(UNITS_MM_S));
38
+  w.heading(                        GET_TEXTF(VELOCITY));
39
+  w.color(x_axis)    .adjuster(  2, GET_TEXTF(VMAX_X), getAxisMaxFeedrate_mm_s(X) );
40
+  w.color(y_axis)    .adjuster(  4, GET_TEXTF(VMAX_Y), getAxisMaxFeedrate_mm_s(Y) );
41
+  w.color(z_axis)    .adjuster(  6, GET_TEXTF(VMAX_Z), getAxisMaxFeedrate_mm_s(Z) );
42 42
   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS)
43
-    w.color(e_axis)  .adjuster(  8, PSTR("E:"),  getAxisMaxFeedrate_mm_s(E0) );
43
+    w.color(e_axis)  .adjuster(  8, GET_TEXTF(VMAX_E1), getAxisMaxFeedrate_mm_s(E0) );
44 44
   #elif EXTRUDERS > 1
45
-    w.color(e_axis)  .adjuster(  8, PSTR("E1:"), getAxisMaxFeedrate_mm_s(E0) );
46
-    w.color(e_axis)  .adjuster( 10, PSTR("E2:"), getAxisMaxFeedrate_mm_s(E1) );
45
+    w.color(e_axis)  .adjuster(  8, GET_TEXTF(VMAX_E1), getAxisMaxFeedrate_mm_s(E0) );
46
+    w.color(e_axis)  .adjuster( 10, GET_TEXTF(VMAX_E2), getAxisMaxFeedrate_mm_s(E1) );
47 47
     #if EXTRUDERS > 2
48
-      w.color(e_axis).adjuster( 12, PSTR("E3:"), getAxisMaxFeedrate_mm_s(E2) );
48
+      w.color(e_axis).adjuster( 12, GET_TEXTF(VMAX_E3), getAxisMaxFeedrate_mm_s(E2) );
49 49
     #endif
50 50
     #if EXTRUDERS > 3
51
-      w.color(e_axis).adjuster( 14, PSTR("E4:"), getAxisMaxFeedrate_mm_s(E3) );
51
+      w.color(e_axis).adjuster( 14, GET_TEXTF(VMAX_E4), getAxisMaxFeedrate_mm_s(E3) );
52 52
     #endif
53 53
   #endif
54 54
   w.increments();

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/move_axis_screen.cpp 查看文件

@@ -45,23 +45,23 @@ void MoveAxisScreen::onEntry() {
45 45
 void MoveAxisScreen::onRedraw(draw_mode_t what) {
46 46
   widgets_t w(what);
47 47
   w.precision(1);
48
-  w.units(PSTR("mm"));
49
-  w.heading(                                PSTR("Move Axis"));
48
+  w.units(GET_TEXTF(UNITS_MM));
49
+  w.heading(                                GET_TEXTF(MOVE_AXIS));
50 50
   w.home_buttons(20);
51
-  w.color(Theme::x_axis  )   .adjuster(  2, PSTR("X:"),  getAxisPosition_mm(X), canMove(X));
52
-  w.color(Theme::y_axis  )   .adjuster(  4, PSTR("Y:"),  getAxisPosition_mm(Y), canMove(Y));
53
-  w.color(Theme::z_axis  )   .adjuster(  6, PSTR("Z:"),  getAxisPosition_mm(Z), canMove(Z));
51
+  w.color(Theme::x_axis  )   .adjuster(  2, GET_TEXTF(AXIS_X),  getAxisPosition_mm(X), canMove(X));
52
+  w.color(Theme::y_axis  )   .adjuster(  4, GET_TEXTF(AXIS_Y),  getAxisPosition_mm(Y), canMove(Y));
53
+  w.color(Theme::z_axis  )   .adjuster(  6, GET_TEXTF(AXIS_Z),  getAxisPosition_mm(Z), canMove(Z));
54 54
 
55 55
   #if EXTRUDERS == 1
56
-    w.color(Theme::e_axis)   .adjuster(  8, PSTR("E:"),  screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
56
+    w.color(Theme::e_axis)   .adjuster(  8, GET_TEXTF(AXIS_E),  screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
57 57
   #elif EXTRUDERS > 1
58
-    w.color(Theme::e_axis)   .adjuster(  8, PSTR("E1:"), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
59
-    w.color(Theme::e_axis)   .adjuster( 10, PSTR("E2:"), screen_data.MoveAxisScreen.e_rel[1], canMove(E1));
58
+    w.color(Theme::e_axis)   .adjuster(  8, GET_TEXTF(AXIS_E1), screen_data.MoveAxisScreen.e_rel[0], canMove(E0));
59
+    w.color(Theme::e_axis)   .adjuster( 10, GET_TEXTF(AXIS_E2), screen_data.MoveAxisScreen.e_rel[1], canMove(E1));
60 60
     #if EXTRUDERS > 2
61
-      w.color(Theme::e_axis) .adjuster( 12, PSTR("E3:"), screen_data.MoveAxisScreen.e_rel[2], canMove(E2));
61
+      w.color(Theme::e_axis) .adjuster( 12, GET_TEXTF(AXIS_E3), screen_data.MoveAxisScreen.e_rel[2], canMove(E2));
62 62
     #endif
63 63
     #if EXTRUDERS > 3
64
-      w.color(Theme::e_axis) .adjuster( 14, PSTR("E4:"), screen_data.MoveAxisScreen.e_rel[3], canMove(E3));
64
+      w.color(Theme::e_axis) .adjuster( 14, GET_TEXTF(AXIS_E4), screen_data.MoveAxisScreen.e_rel[3], canMove(E3));
65 65
     #endif
66 66
   #endif
67 67
   w.increments();

+ 6
- 6
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/nozzle_offsets_screen.cpp 查看文件

@@ -39,14 +39,14 @@ void NozzleOffsetScreen::onEntry() {
39 39
 
40 40
 void NozzleOffsetScreen::onRedraw(draw_mode_t what) {
41 41
   widgets_t w(what);
42
-  w.precision(2).units(PSTR("mm"));
42
+  w.precision(2).units(GET_TEXTF(UNITS_MM));
43 43
 
44
-  w.heading(                          PSTR("Nozzle Offset"));
45
-  w.color(Theme::x_axis).adjuster(2,  PSTR("X:"), ExtUI::getNozzleOffset_mm(X, E1));
46
-  w.color(Theme::y_axis).adjuster(4,  PSTR("Y:"), ExtUI::getNozzleOffset_mm(Y, E1));
47
-  w.color(Theme::z_axis).adjuster(6,  PSTR("Z:"), ExtUI::getNozzleOffset_mm(Z, E1));
44
+  w.heading(                          GET_TEXTF(TOOL_OFFSETS));
45
+  w.color(Theme::x_axis).adjuster(2,  GET_TEXTF(AXIS_X), ExtUI::getNozzleOffset_mm(X, E1));
46
+  w.color(Theme::y_axis).adjuster(4,  GET_TEXTF(AXIS_Y), ExtUI::getNozzleOffset_mm(Y, E1));
47
+  w.color(Theme::z_axis).adjuster(6,  GET_TEXTF(AXIS_Z), ExtUI::getNozzleOffset_mm(Z, E1));
48 48
   #if ENABLED(CALIBRATION_GCODE)
49
-  w.button(8, PSTR("Measure automatically"), !isPrinting());
49
+  w.button(8, GET_TEXTF(MEASURE_AUTOMATICALLY), !isPrinting());
50 50
   #endif
51 51
   w.increments();
52 52
 }

+ 15
- 14
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/nudge_nozzle_screen.cpp 查看文件

@@ -44,41 +44,42 @@ void NudgeNozzleScreen::onEntry() {
44 44
 
45 45
 void NudgeNozzleScreen::onRedraw(draw_mode_t what) {
46 46
   widgets_t w(what);
47
-  w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(PSTR("mm"));
47
+  w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXTF(UNITS_MM));
48 48
 
49
-  w.heading(                          PSTR("Nudge Nozzle"));
49
+  w.heading(                   GET_TEXTF(NUDGE_NOZZLE));
50 50
   #if ENABLED(BABYSTEP_XY)
51
-  w.color(x_axis).adjuster(2,  PSTR("X:"), screen_data.NudgeNozzleScreen.rel[0] / getAxisSteps_per_mm(X));
52
-  w.color(y_axis).adjuster(4,  PSTR("Y:"), screen_data.NudgeNozzleScreen.rel[1] / getAxisSteps_per_mm(Y));
51
+  w.color(x_axis).adjuster(2,  GET_TEXTF(AXIS_X), screen_data.NudgeNozzleScreen.rel[0] / getAxisSteps_per_mm(X));
52
+  w.color(y_axis).adjuster(4,  GET_TEXTF(AXIS_Y), screen_data.NudgeNozzleScreen.rel[1] / getAxisSteps_per_mm(Y));
53 53
   #endif
54
-  w.color(z_axis).adjuster(6,  PSTR("Z:"), screen_data.NudgeNozzleScreen.rel[2] / getAxisSteps_per_mm(Z));
54
+  w.color(z_axis).adjuster(6,  GET_TEXTF(AXIS_Z), screen_data.NudgeNozzleScreen.rel[2] / getAxisSteps_per_mm(Z));
55 55
   w.increments();
56 56
   #if EXTRUDERS > 1
57
-    w.toggle  (8,  PSTR("Adjust Both Nozzles:"), PSTR("no\xFFyes"), screen_data.NudgeNozzleScreen.link_nozzles, PSTR("Yes\nNo"));
57
+    w.toggle  (8,  GET_TEXTF(ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles);
58 58
   #endif
59 59
 
60 60
   #if EXTRUDERS > 1 || HAS_BED_PROBE
61
-    w.toggle  (9,  PSTR("Show Offsets:"), PSTR("no\xFFyes"), screen_data.NudgeNozzleScreen.show_offsets, PSTR("Yes\nNo"));
61
+    w.toggle  (9,  GET_TEXTF(SHOW_OFFSETS), screen_data.NudgeNozzleScreen.show_offsets);
62 62
 
63 63
     if (screen_data.NudgeNozzleScreen.show_offsets) {
64
-      char str[19], num1[7];
64
+      char str[19];
65 65
 
66 66
       w.draw_mode(BOTH);
67 67
       w.color(other);
68 68
 
69 69
       #if HAS_BED_PROBE
70
-        dtostrf(getZOffset_mm(), 4, 2, num1);
71
-        sprintf_P(str, PSTR("%s mm"), num1);
72
-        w.text_field  (0,  PSTR("Z Offset"), str);
70
+        dtostrf(getZOffset_mm(), 4, 2, str);
71
+        strcat(str, " ");
72
+        strcat_P(str, GET_TEXT(UNITS_MM));
73
+        w.text_field  (0,  GET_TEXTF(ZPROBE_ZOFFSET), str);
73 74
       #endif
74 75
 
75 76
       #if EXTRUDERS > 1
76
-        char num2[7], num3[7];
77
+        char num1[7], num2[7], num3[7];
77 78
         dtostrf(getNozzleOffset_mm(X, E1), 4, 2, num1);
78 79
         dtostrf(getNozzleOffset_mm(Y, E1), 4, 2, num2);
79 80
         dtostrf(getNozzleOffset_mm(Z, E1), 4, 2, num3);
80
-        sprintf_P(str, PSTR("%s; %s; %s mm"), num1, num2, num3);
81
-        w.text_field  (0,  PSTR("Noz. Offset"), str);
81
+        sprintf_P(str, PSTR("%s; %s; %s %S"), num1, num2, num3, GET_TEXT(UNITS_MM));
82
+        w.text_field  (0, GET_TEXTF(TOOL_OFFSETS), str);
82 83
       #endif
83 84
     }
84 85
   #endif

+ 3
- 3
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/restore_failsafe_dialog_box.cpp 查看文件

@@ -29,15 +29,15 @@
29 29
 using namespace ExtUI;
30 30
 
31 31
 void RestoreFailsafeDialogBox::onRedraw(draw_mode_t) {
32
-  drawMessage(F("Are you sure? Customizations will be lost."));
32
+  drawMessage(GET_TEXTF(EEPROM_RESET_WARNING));
33 33
   drawYesNoButtons();
34 34
 }
35 35
 
36 36
 bool RestoreFailsafeDialogBox::onTouchEnd(uint8_t tag) {
37 37
   switch (tag) {
38 38
     case 1:
39
-      ExtUI::injectCommands_P(PSTR("M502\nM117 Factory settings restored."));
40
-      AlertDialogBox::show(F("Factory settings restored."));
39
+      ExtUI::injectCommands_P(PSTR("M502"));
40
+      AlertDialogBox::show(GET_TEXTF(EEPROM_RESET));
41 41
       // Remove RestoreFailsafeDialogBox from the stack
42 42
       // so the alert box doesn't return to it.
43 43
       current_screen.forget();

+ 2
- 2
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/save_settings_dialog_box.cpp 查看文件

@@ -31,7 +31,7 @@ using namespace ExtUI;
31 31
 bool SaveSettingsDialogBox::needs_save = false;
32 32
 
33 33
 void SaveSettingsDialogBox::onRedraw(draw_mode_t) {
34
-  drawMessage(F("Do you wish to save these settings as defaults?"));
34
+  drawMessage(GET_TEXTF(EEPROM_SAVE_PROMPT));
35 35
   drawYesNoButtons();
36 36
 }
37 37
 
@@ -40,7 +40,7 @@ bool SaveSettingsDialogBox::onTouchEnd(uint8_t tag) {
40 40
   switch (tag) {
41 41
     case 1:
42 42
       injectCommands_P(PSTR("M500"));
43
-      AlertDialogBox::show(F("Settings saved!"));
43
+      AlertDialogBox::show(GET_TEXTF(EEPROM_SAVED));
44 44
       // Remove SaveSettingsDialogBox from the stack
45 45
       // so the alert box doesn't return to me.
46 46
       current_screen.forget();

+ 3
- 0
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.cpp 查看文件

@@ -31,6 +31,9 @@ screen_data_t screen_data;
31 31
 
32 32
 SCREEN_TABLE {
33 33
   DECL_SCREEN(BootScreen),
34
+  #if ENABLED(TOUCH_UI_LANGUAGE_MENU)
35
+    DECL_SCREEN(LanguageMenu),
36
+  #endif
34 37
   DECL_SCREEN(TouchCalibrationScreen),
35 38
   DECL_SCREEN(StatusScreen),
36 39
   DECL_SCREEN(MainMenu),

+ 21
- 11
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h 查看文件

@@ -23,6 +23,7 @@
23 23
 #pragma once
24 24
 
25 25
 #include "../ftdi_eve_lib/ftdi_eve_lib.h"
26
+#include "../language/languages.h"
26 27
 #include "../theme/theme.h"
27 28
 
28 29
 #define ROUND(val) uint16_t((val)+0.5)
@@ -219,6 +220,7 @@ class StatusScreen : public BaseScreen, public CachedScreen<STATUS_SCREEN_CACHE,
219 220
     static void draw_status_message(draw_mode_t, const char * const);
220 221
 
221 222
   public:
223
+    static void loadBitmaps();
222 224
     static void setStatusMessage(const char *);
223 225
     static void setStatusMessage(progmem_str);
224 226
     static void onRedraw(draw_mode_t);
@@ -350,7 +352,7 @@ class BaseNumericAdjustmentScreen : public BaseScreen {
350 352
         uint8_t     _line;
351 353
         uint32_t    _color;
352 354
         uint8_t     _decimals;
353
-        const char *_units;
355
+        progmem_str _units;
354 356
 
355 357
       protected:
356 358
         void _draw_increment_btn(uint8_t line, const uint8_t tag);
@@ -359,19 +361,19 @@ class BaseNumericAdjustmentScreen : public BaseScreen {
359 361
         widgets_t(draw_mode_t);
360 362
 
361 363
         widgets_t &color(uint32_t color)       {_color = color; return *this;}
362
-        widgets_t &units(const char *units)    {_units = units; return *this;}
364
+        widgets_t &units(progmem_str units)    {_units = units; return *this;}
363 365
         widgets_t &draw_mode(draw_mode_t what) {_what  = what;  return *this;}
364 366
         widgets_t &precision(uint8_t decimals, precision_default_t = DEFAULT_HIGHEST);
365 367
 
366
-        void heading       (const char *label);
367
-        void adjuster_sram_val (uint8_t tag,  const char *label, const char *value,  bool is_enabled = true);
368
-        void adjuster          (uint8_t tag,  const char *label, const char *value,  bool is_enabled = true);
369
-        void adjuster          (uint8_t tag,  const char *label, float value=0,      bool is_enabled = true);
370
-        void button            (uint8_t tag,  const char *label,                     bool is_enabled = true);
371
-        void text_field        (uint8_t tag,  const char *label, const char *value,  bool is_enabled = true);
372
-        void two_buttons       (uint8_t tag1, const char *label1,
373
-                                uint8_t tag2, const char *label2,                    bool is_enabled = true);
374
-        void toggle            (uint8_t tag,  const char *label, const char *text, bool value, bool is_enabled = true);
368
+        void heading           (progmem_str label);
369
+        void adjuster_sram_val (uint8_t tag,  progmem_str label, const char *value,  bool is_enabled = true);
370
+        void adjuster          (uint8_t tag,  progmem_str label, const char *value,  bool is_enabled = true);
371
+        void adjuster          (uint8_t tag,  progmem_str label, float value=0,      bool is_enabled = true);
372
+        void button            (uint8_t tag,  progmem_str label,                     bool is_enabled = true);
373
+        void text_field        (uint8_t tag,  progmem_str label, const char *value,  bool is_enabled = true);
374
+        void two_buttons       (uint8_t tag1, progmem_str label1,
375
+                                uint8_t tag2, progmem_str label2,                    bool is_enabled = true);
376
+        void toggle            (uint8_t tag,  progmem_str label,                     bool value, bool is_enabled = true);
375 377
         void home_buttons      (uint8_t tag);
376 378
         void increments        ();
377 379
     };
@@ -710,3 +712,11 @@ class MediaPlayerScreen : public BaseScreen, public UncachedScreen {
710 712
 
711 713
     static void playStream(void *obj, media_streamer_func_t*);
712 714
 };
715
+
716
+#if ENABLED(TOUCH_UI_LANGUAGE_MENU)
717
+  class LanguageMenu : public BaseScreen, public UncachedScreen {
718
+    public:
719
+      static void onRedraw(draw_mode_t);
720
+      static bool onTouchEnd(uint8_t tag);
721
+  };
722
+#endif

+ 1
- 1
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/spinner_dialog_box.cpp 查看文件

@@ -46,7 +46,7 @@ void SpinnerDialogBox::hide() {
46 46
 }
47 47
 
48 48
 void SpinnerDialogBox::enqueueAndWait_P(const progmem_str commands) {
49
-  enqueueAndWait_P(F("Please wait..."), commands);
49
+  enqueueAndWait_P(GET_TEXTF(PLEASE_WAIT), commands);
50 50
 }
51 51
 
52 52
 void SpinnerDialogBox::enqueueAndWait_P(const progmem_str message, const progmem_str commands) {

+ 7
- 7
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/statistics_screen.cpp 查看文件

@@ -44,14 +44,14 @@ void StatisticsScreen::onRedraw(draw_mode_t what) {
44 44
        .tag(0)
45 45
 
46 46
        .font(Theme::font_medium)
47
-       .text(BTN_POS(1,1), BTN_SIZE(4,1), F("Printer Statistics"))
47
+       .text(BTN_POS(1,1), BTN_SIZE(4,1), GET_TEXTF(PRINTER_STATISTICS))
48 48
        .font(Theme::font_small)
49 49
        .tag(0)
50
-       .text(BTN_POS(1,2), BTN_SIZE(2,1), F("Total Prints:"),     OPT_RIGHTX | OPT_CENTERY)
51
-       .text(BTN_POS(1,3), BTN_SIZE(2,1), F("Finished Prints:"),  OPT_RIGHTX | OPT_CENTERY)
52
-       .text(BTN_POS(1,4), BTN_SIZE(2,1), F("Total Print Time:"), OPT_RIGHTX | OPT_CENTERY)
53
-       .text(BTN_POS(1,5), BTN_SIZE(2,1), F("Longest Print:"),    OPT_RIGHTX | OPT_CENTERY)
54
-       .text(BTN_POS(1,6), BTN_SIZE(2,1), F("Filament Used:"),    OPT_RIGHTX | OPT_CENTERY);
50
+       .text(BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(INFO_PRINT_COUNT),      OPT_RIGHTX | OPT_CENTERY)
51
+       .text(BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(INFO_COMPLETED_PRINTS), OPT_RIGHTX | OPT_CENTERY)
52
+       .text(BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(INFO_PRINT_TIME),       OPT_RIGHTX | OPT_CENTERY)
53
+       .text(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(INFO_PRINT_LONGEST),    OPT_RIGHTX | OPT_CENTERY)
54
+       .text(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXTF(INFO_PRINT_FILAMENT),   OPT_RIGHTX | OPT_CENTERY);
55 55
     // Don't chain the following, it causes strange issues with evaluation ordering!
56 56
     cmd.text(BTN_POS(3,2), BTN_SIZE(2,1), getTotalPrints_str(buffer));
57 57
     cmd.text(BTN_POS(3,3), BTN_SIZE(2,1), getFinishedPrints_str(buffer));
@@ -63,7 +63,7 @@ void StatisticsScreen::onRedraw(draw_mode_t what) {
63 63
   if (what & FOREGROUND) {
64 64
     cmd.font(Theme::font_medium)
65 65
        .colors(action_btn)
66
-       .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), F("Back"));
66
+       .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXTF(BACK));
67 67
   }
68 68
 }
69 69
 

+ 39
- 55
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/status_screen.cpp 查看文件

@@ -22,14 +22,14 @@
22 22
 
23 23
 #include "../config.h"
24 24
 
25
-#if ENABLED(LULZBOT_TOUCH_UI) && !defined(LULZBOT_USE_BIOPRINTER_UI)
25
+#if ENABLED(LULZBOT_TOUCH_UI) && DISABLED(LULZBOT_USE_BIOPRINTER_UI)
26 26
 
27 27
 #include "screens.h"
28 28
 #include "screen_data.h"
29 29
 
30 30
 #include "../archim2-flash/flash_storage.h"
31 31
 
32
-#if ENABLED(SDSUPPORT) && defined(LULZBOT_MANUAL_USB_STARTUP)
32
+#if BOTH(SDSUPPORT, LULZBOT_MANUAL_USB_STARTUP)
33 33
   #include "../../../../../sd/cardreader.h"
34 34
 #endif
35 35
 
@@ -57,9 +57,9 @@ void StatusScreen::draw_axis_position(draw_mode_t what) {
57 57
                          .button( BTN_POS(1,7), BTN_SIZE(2,1), F(""), OPT_FLAT)
58 58
 
59 59
         .font(Theme::font_small)
60
-                         .text  ( BTN_POS(1,5), BTN_SIZE(1,1), F("X"))
61
-                         .text  ( BTN_POS(1,6), BTN_SIZE(1,1), F("Y"))
62
-                         .text  ( BTN_POS(1,7), BTN_SIZE(1,1), F("Z"))
60
+                         .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXTF(AXIS_X))
61
+                         .text  ( BTN_POS(1,6), BTN_SIZE(1,1), GET_TEXTF(AXIS_Y))
62
+                         .text  ( BTN_POS(1,7), BTN_SIZE(1,1), GET_TEXTF(AXIS_Z))
63 63
 
64 64
         .font(Theme::font_medium)
65 65
         .fgcolor(Theme::x_axis) .button( BTN_POS(2,5), BTN_SIZE(2,1), F(""), OPT_FLAT)
@@ -73,9 +73,9 @@ void StatusScreen::draw_axis_position(draw_mode_t what) {
73 73
                          .button( BTN_POS(3,5), BTN_SIZE(1,2), F(""),  OPT_FLAT)
74 74
 
75 75
         .font(Theme::font_small)
76
-                         .text  ( BTN_POS(1,5), BTN_SIZE(1,1), F("X"))
77
-                         .text  ( BTN_POS(2,5), BTN_SIZE(1,1), F("Y"))
78
-                         .text  ( BTN_POS(3,5), BTN_SIZE(1,1), F("Z"))
76
+                         .text  ( BTN_POS(1,5), BTN_SIZE(1,1), GET_TEXTF(AXIS_X))
77
+                         .text  ( BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXTF(AXIS_Y))
78
+                         .text  ( BTN_POS(3,5), BTN_SIZE(1,1), GET_TEXTF(AXIS_Z))
79 79
                          .font(Theme::font_medium)
80 80
 
81 81
         .fgcolor(Theme::x_axis) .button( BTN_POS(1,6), BTN_SIZE(1,1), F(""), OPT_FLAT)
@@ -92,21 +92,24 @@ void StatusScreen::draw_axis_position(draw_mode_t what) {
92 92
 
93 93
     if (isAxisPositionKnown(X)) {
94 94
       dtostrf(getAxisPosition_mm(X), 5, 1, x_str);
95
-      strcat_P(x_str, PSTR(" mm"));
95
+      strcat_P(x_str, " ");
96
+      strcat_P(x_str, GET_TEXT(UNITS_MM));
96 97
     } else {
97 98
       strcpy_P(x_str, PSTR("?"));
98 99
     }
99 100
 
100 101
     if (isAxisPositionKnown(Y)) {
101 102
       dtostrf(getAxisPosition_mm(Y), 5, 1, y_str);
102
-      strcat_P(y_str, PSTR(" mm"));
103
+      strcat_P(y_str, " ");
104
+      strcat_P(y_str, GET_TEXT(UNITS_MM));
103 105
     } else {
104 106
       strcpy_P(y_str, PSTR("?"));
105 107
     }
106 108
 
107 109
     if (isAxisPositionKnown(Z)) {
108 110
       dtostrf(getAxisPosition_mm(Z), 5, 1, z_str);
109
-      strcat_P(z_str, PSTR(" mm"));
111
+      strcat_P(z_str, " ");
112
+      strcat_P(z_str, GET_TEXT(UNITS_MM));
110 113
     } else {
111 114
       strcpy_P(z_str, PSTR("?"));
112 115
     }
@@ -182,10 +185,10 @@ void StatusScreen::draw_temperature(draw_mode_t what) {
182 185
 
183 186
   if (what & FOREGROUND) {
184 187
     using namespace ExtUI;
185
-    char e0_str[15];
186
-    char e1_str[15];
187
-    char bed_str[15];
188
-    char fan_str[15];
188
+    char e0_str[20];
189
+    char e1_str[20];
190
+    char bed_str[20];
191
+    char fan_str[20];
189 192
 
190 193
     sprintf_P(
191 194
       fan_str,
@@ -193,35 +196,21 @@ void StatusScreen::draw_temperature(draw_mode_t what) {
193 196
       int8_t(getActualFan_percent(FAN0))
194 197
     );
195 198
 
196
-    #if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
197
-      const char *idle = PSTR(u8"%3d°C / idle");
198
-      const char *not_idle = PSTR(u8"%3d / %3d°C");
199
-    #else
200
-      const char *idle = PSTR("%3d C / idle");
201
-      const char *not_idle = PSTR("%3d / %3d C");
202
-    #endif
199
+    if (isHeaterIdle(BED))
200
+      sprintf_P(bed_str, PSTR("%3d%S / %S"), ROUND(getActualTemp_celsius(BED)), GET_TEXT(UNITS_C), GET_TEXT(TEMP_IDLE));
201
+    else
202
+      sprintf_P(bed_str, PSTR("%3d / %3d%S"), ROUND(getActualTemp_celsius(BED)), ROUND(getTargetTemp_celsius(BED)), GET_TEXT(UNITS_C));
203 203
 
204
-    sprintf_P(
205
-      bed_str,
206
-      isHeaterIdle(BED) ? idle : not_idle,
207
-      ROUND(getActualTemp_celsius(BED)),
208
-      ROUND(getTargetTemp_celsius(BED))
209
-    );
210
-
211
-    sprintf_P(
212
-      e0_str,
213
-      isHeaterIdle(H0) ? idle : not_idle,
214
-      ROUND(getActualTemp_celsius(H0)),
215
-      ROUND(getTargetTemp_celsius(H0))
216
-    );
204
+    if (isHeaterIdle(H0))
205
+      sprintf_P(e0_str, PSTR("%3d%S / %S"), ROUND(getActualTemp_celsius(H0)), GET_TEXT(UNITS_C), GET_TEXT(TEMP_IDLE));
206
+    else
207
+      sprintf_P(e0_str, PSTR("%3d / %3d%S"), ROUND(getActualTemp_celsius(H0)), ROUND(getTargetTemp_celsius(H0)), GET_TEXT(UNITS_C));
217 208
 
218 209
     #if EXTRUDERS == 2
219
-      sprintf_P(
220
-        e1_str,
221
-        isHeaterIdle(H1) ? idle : not_idle,
222
-        ROUND(getActualTemp_celsius(H1)),
223
-        ROUND(getTargetTemp_celsius(H1))
224
-      );
210
+      if (isHeaterIdle(H1))
211
+        sprintf_P(e1_str, PSTR("%3d%S / %S"), ROUND(getActualTemp_celsius(H1)), PSTR(GET_TEXT(UNITS_C)), GET_TEXT(TEMP_IDLE));
212
+      else
213
+        sprintf_P(e1_str, PSTR("%3d / %3d%S"), ROUND(getActualTemp_celsius(H1)), ROUND(getTargetTemp_celsius(H1)), GET_TEXT(UNITS_C));
225 214
     #else
226 215
       strcpy_P(
227 216
         e1_str,
@@ -290,7 +279,7 @@ void StatusScreen::draw_interaction_buttons(draw_mode_t what) {
290 279
     CommandProcessor cmd;
291 280
     cmd.colors(normal_btn)
292 281
        .font(Theme::font_medium)
293
-    #if ENABLED(USB_FLASH_DRIVE_SUPPORT) && defined(LULZBOT_MANUAL_USB_STARTUP)
282
+    #if BOTH(SDSUPPORT, LULZBOT_MANUAL_USB_STARTUP)
294 283
       .enabled(!Sd2Card::ready() || has_media)
295 284
     #else
296 285
       .enabled(has_media)
@@ -301,22 +290,17 @@ void StatusScreen::draw_interaction_buttons(draw_mode_t what) {
301 290
       #else
302 291
          .tag(3).button( BTN_POS(1,7), BTN_SIZE(2,2),
303 292
       #endif
304
-      isPrintingFromMedia() ? F("Printing") :
305
-      #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
306
-        #ifdef LULZBOT_MANUAL_USB_STARTUP
307
-        (Sd2Card::ready() ? F("USB Drive") : F("Enable USB"))
308
-        #else
309
-        F("USB Drive")
310
-        #endif
311
-        )
293
+      isPrintingFromMedia() ? GET_TEXTF(PRINTING) :
294
+      #if BOTH(SDSUPPORT, LULZBOT_MANUAL_USB_STARTUP)
295
+      (!Sd2Card::ready() ? GET_TEXTF(ENABLE_MEDIA) :
312 296
       #else
313
-        F("SD Card"))
297
+      GET_TEXTF(MEDIA))
314 298
       #endif
315 299
       .colors(!has_media ? action_btn : normal_btn)
316 300
       #ifdef TOUCH_UI_PORTRAIT
317
-       .tag(4).button( BTN_POS(3,8), BTN_SIZE(2,1), F("MENU"));
301
+       .tag(4).button( BTN_POS(3,8), BTN_SIZE(2,1), GET_TEXTF(MENU));
318 302
       #else
319
-       .tag(4).button( BTN_POS(3,7), BTN_SIZE(2,2), F("MENU"));
303
+       .tag(4).button( BTN_POS(3,7), BTN_SIZE(2,2), GET_TEXTF(MENU));
320 304
     #endif
321 305
   }
322 306
   #undef  GRID_COLS
@@ -423,9 +407,9 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
423 407
 
424 408
   switch (tag) {
425 409
     case 3:
426
-      #if ENABLED(USB_FLASH_DRIVE_SUPPORT) && defined(LULZBOT_MANUAL_USB_STARTUP)
410
+      #if BOTH(SDSUPPORT, LULZBOT_MANUAL_USB_STARTUP)
427 411
       if (!Sd2Card::ready()) {
428
-        StatusScreen::setStatusMessage(F("Insert USB drive..."));
412
+        StatusScreen::setStatusMessage(GET_TEXTF(INSERT_MEDIA));
429 413
         Sd2Card::usbStartup();
430 414
       } else {
431 415
         GOTO_SCREEN(FilesScreen);

+ 4
- 4
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/stepper_bump_sensitivity_screen.cpp 查看文件

@@ -33,22 +33,22 @@ using namespace Theme;
33 33
 void StepperBumpSensitivityScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST);
36
-  w.heading(                     PSTR("TMC Bump Sensitivity"));
37
-  w.color(x_axis)  .adjuster( 2, PSTR("X:"),  getTMCBumpSensitivity(X),
36
+  w.heading(                     GET_TEXTF(HOME_SENSE));
37
+  w.color(x_axis)  .adjuster( 2, GET_TEXTF(AXIS_X),  getTMCBumpSensitivity(X),
38 38
   #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
39 39
     true
40 40
   #else
41 41
     false
42 42
   #endif
43 43
   );
44
-  w.color(y_axis)  .adjuster( 4, PSTR("Y:"),  getTMCBumpSensitivity(Y),
44
+  w.color(y_axis)  .adjuster( 4, GET_TEXTF(AXIS_Y),  getTMCBumpSensitivity(Y),
45 45
    #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
46 46
      true
47 47
    #else
48 48
      false
49 49
    #endif
50 50
   );
51
-  w.color(z_axis)  .adjuster( 6, PSTR("Z:"),  getTMCBumpSensitivity(Z),
51
+  w.color(z_axis)  .adjuster( 6, GET_TEXTF(AXIS_Z),  getTMCBumpSensitivity(Z),
52 52
    #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
53 53
      true
54 54
    #else

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/stepper_current_screen.cpp 查看文件

@@ -33,21 +33,21 @@ using namespace Theme;
33 33
 void StepperCurrentScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(0);
36
-  w.units(PSTR("mA"));
37
-  w.heading(                     PSTR("Stepper Current"));
38
-  w.color(x_axis)  .adjuster( 2, PSTR("X:"),  getAxisCurrent_mA(X) );
39
-  w.color(y_axis)  .adjuster( 4, PSTR("Y:"),  getAxisCurrent_mA(Y) );
40
-  w.color(z_axis)  .adjuster( 6, PSTR("Z:"),  getAxisCurrent_mA(Z) );
36
+  w.units(GET_TEXTF(UNITS_MILLIAMP));
37
+  w.heading(                     GET_TEXTF(MOTOR_CURRENT));
38
+  w.color(x_axis)  .adjuster( 2, GET_TEXTF(AXIS_X),  getAxisCurrent_mA(X) );
39
+  w.color(y_axis)  .adjuster( 4, GET_TEXTF(AXIS_Y),  getAxisCurrent_mA(Y) );
40
+  w.color(z_axis)  .adjuster( 6, GET_TEXTF(AXIS_Z),  getAxisCurrent_mA(Z) );
41 41
   #if EXTRUDERS == 1
42
-    w.color(e_axis).adjuster( 8, PSTR("E:"),  getAxisCurrent_mA(E0) );
42
+    w.color(e_axis).adjuster( 8, GET_TEXTF(AXIS_E),  getAxisCurrent_mA(E0) );
43 43
   #elif EXTRUDERS > 1
44
-    w.color(e_axis).adjuster( 8, PSTR("E1:"), getAxisCurrent_mA(E0) );
45
-    w.color(e_axis).adjuster(10, PSTR("E2:"), getAxisCurrent_mA(E1) );
44
+    w.color(e_axis).adjuster( 8, GET_TEXTF(AXIS_E1), getAxisCurrent_mA(E0) );
45
+    w.color(e_axis).adjuster(10, GET_TEXTF(AXIS_E2), getAxisCurrent_mA(E1) );
46 46
     #if EXTRUDERS > 2
47
-    w.color(e_axis).adjuster(12, PSTR("E3:"), getAxisCurrent_mA(E2) );
47
+    w.color(e_axis).adjuster(12, GET_TEXTF(AXIS_E3), getAxisCurrent_mA(E2) );
48 48
     #endif
49 49
     #if EXTRUDERS > 3
50
-    w.color(e_axis).adjuster(14, PSTR("E4:"), getAxisCurrent_mA(E3) );
50
+    w.color(e_axis).adjuster(14, GET_TEXTF(AXIS_E4), getAxisCurrent_mA(E3) );
51 51
     #endif
52 52
   #endif
53 53
   w.increments();

+ 10
- 10
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/steps_screen.cpp 查看文件

@@ -33,21 +33,21 @@ using namespace Theme;
33 33
 void StepsScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35 35
   w.precision(0);
36
-  w.units(PSTR("st/mm"));
37
-  w.heading(                               PSTR("Steps/mm"));
38
-  w.color(x_axis)     .adjuster( 2, PSTR("X:"),  getAxisSteps_per_mm(X) );
39
-  w.color(y_axis)     .adjuster( 4, PSTR("Y:"),  getAxisSteps_per_mm(Y) );
40
-  w.color(z_axis)     .adjuster( 6, PSTR("Z:"),  getAxisSteps_per_mm(Z) );
36
+  w.units(GET_TEXTF(UNITS_STEP_MM));
37
+  w.heading(                        GET_TEXTF(STEPS_PER_MM));
38
+  w.color(x_axis)     .adjuster( 2, GET_TEXTF(AXIS_X),  getAxisSteps_per_mm(X) );
39
+  w.color(y_axis)     .adjuster( 4, GET_TEXTF(AXIS_Y),  getAxisSteps_per_mm(Y) );
40
+  w.color(z_axis)     .adjuster( 6, GET_TEXTF(AXIS_Z),  getAxisSteps_per_mm(Z) );
41 41
   #if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS)
42
-    w.color(e_axis)   .adjuster( 8, PSTR("E:"),  getAxisSteps_per_mm(E0) );
42
+    w.color(e_axis)   .adjuster( 8, GET_TEXTF(AXIS_E),  getAxisSteps_per_mm(E0) );
43 43
   #elif EXTRUDERS > 1
44
-    w.color(e_axis)   .adjuster( 8, PSTR("E1:"), getAxisSteps_per_mm(E0) );
45
-    w.color(e_axis)   .adjuster(10, PSTR("E2:"), getAxisSteps_per_mm(E1) );
44
+    w.color(e_axis)   .adjuster( 8, GET_TEXTF(AXIS_E1), getAxisSteps_per_mm(E0) );
45
+    w.color(e_axis)   .adjuster(10, GET_TEXTF(AXIS_E2), getAxisSteps_per_mm(E1) );
46 46
     #if EXTRUDERS > 2
47
-      w.color(e_axis) .adjuster(12, PSTR("E3:"), getAxisSteps_per_mm(E2) );
47
+      w.color(e_axis) .adjuster(12, GET_TEXTF(AXIS_E3), getAxisSteps_per_mm(E2) );
48 48
     #endif
49 49
     #if EXTRUDERS > 3
50
-      w.color(e_axis) .adjuster(14, PSTR("E4:"), getAxisSteps_per_mm(E3) );
50
+      w.color(e_axis) .adjuster(14, GET_TEXTF(AXIS_E4), getAxisSteps_per_mm(E3) );
51 51
     #endif
52 52
   #endif
53 53
   w.increments();

+ 13
- 20
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/temperature_screen.cpp 查看文件

@@ -32,36 +32,29 @@ using namespace ExtUI;
32 32
 
33 33
 void TemperatureScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35
-  w.precision(0).color(temp).units(
36
-    PSTR(
37
-    #if defined(TOUCH_UI_USE_UTF8) && defined(TOUCH_UI_UTF8_WESTERN_CHARSET)
38
-      u8"°C"
39
-    #else
40
-      "C"
41
-    #endif
42
-  ));
43
-  w.heading(         PSTR("Temperature:"));
44
-  w.button(30, PSTR("Cooldown (All Off)"));
35
+  w.precision(0).color(temp).units(GET_TEXTF(UNITS_C));
36
+  w.heading(GET_TEXTF(TEMPERATURE));
37
+  w.button(30, GET_TEXTF(COOLDOWN));
45 38
   #ifndef LULZBOT_DISABLE_TOOLHEAD_HEATER
46 39
     #if HOTENDS == 1
47
-      w.adjuster(   2, PSTR("Hot End:"),   getTargetTemp_celsius(E0));
40
+      w.adjuster(   2, GET_TEXTF(HOTEND),   getTargetTemp_celsius(E0));
48 41
     #else
49
-      w.adjuster(   2, PSTR("Hot End 1:"), getTargetTemp_celsius(E0));
50
-      w.adjuster(   4, PSTR("Hot End 2:"), getTargetTemp_celsius(E1));
42
+      w.adjuster(   2, GET_TEXTF(HOTEND1), getTargetTemp_celsius(E0));
43
+      w.adjuster(   4, GET_TEXTF(HOTEND2), getTargetTemp_celsius(E1));
51 44
       #if HOTENDS > 2
52
-        w.adjuster( 6, PSTR("Hot End 3:"), getTargetTemp_celsius(E2));
45
+        w.adjuster( 6, GET_TEXTF(HOTEND3), getTargetTemp_celsius(E2));
53 46
       #endif
54 47
       #if HOTENDS > 3
55
-        w.adjuster( 8, PSTR("Hot End 4:"), getTargetTemp_celsius(E3));
48
+        w.adjuster( 8, GET_TEXTF(HOTEND4), getTargetTemp_celsius(E3));
56 49
       #endif
57 50
     #endif
58 51
   #endif
59 52
   #if HAS_HEATED_BED
60
-    w.adjuster(    20, PSTR("Bed:"),     getTargetTemp_celsius(BED));
53
+    w.adjuster(    20, GET_TEXTF(BED),     getTargetTemp_celsius(BED));
61 54
   #endif
62 55
   #if FAN_COUNT > 0
63
-    w.color(fan_speed).units(PSTR("%"));
64
-    w.adjuster(    10, PSTR("Fan Speed:"), getTargetFan_percent(FAN0));
56
+    w.color(fan_speed).units(GET_TEXTF(UNITS_PERCENT));
57
+    w.adjuster(    10, GET_TEXTF(FAN_SPEED), getTargetFan_percent(FAN0));
65 58
   #endif
66 59
   w.increments();
67 60
 }
@@ -88,8 +81,8 @@ bool TemperatureScreen::onTouchHeld(uint8_t tag) {
88 81
     case  9: UI_INCREMENT(TargetTemp_celsius, E3); break;
89 82
     #endif
90 83
     #if FAN_COUNT > 0
91
-    case 10: UI_DECREMENT(TargetFan_percent, FAN0);      break;
92
-    case 11: UI_INCREMENT(TargetFan_percent, FAN0);      break;
84
+    case 10: UI_DECREMENT(TargetFan_percent, FAN0); break;
85
+    case 11: UI_INCREMENT(TargetFan_percent, FAN0); break;
93 86
     #endif
94 87
     case 30:
95 88
       setTargetTemp_celsius(0,E0);

+ 7
- 33
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/touch_calibration_screen.cpp 查看文件

@@ -44,22 +44,9 @@ void TouchCalibrationScreen::onEntry() {
44 44
     cmd.cmd(CMD_DLSTART)
45 45
        .cmd(CLEAR_COLOR_RGB(bg_color))
46 46
        .cmd(CLEAR(true,true,true))
47
-       .cmd(COLOR_RGB(bg_text_enabled))
48
-    #ifdef TOUCH_UI_PORTRAIT
49
-       .font(font_large)
50
-       .text  ( BTN_POS(1,8), BTN_SIZE(4,1), F("Release to begin"))
51
-       .text  ( BTN_POS(1,9), BTN_SIZE(4,1), F("screen calibration"))
52
-    #else
53
-       .font(
54
-        #ifdef TOUCH_UI_800x480
55
-          font_large
56
-        #else
57
-          font_medium
58
-        #endif
59
-        )
60
-       .text  ( BTN_POS(1,1), BTN_SIZE(4,16), F("Release to calibrate"))
61
-    #endif
62
-       .cmd(DL::DL_DISPLAY)
47
+       .cmd(COLOR_RGB(bg_text_enabled));
48
+    draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXTF(TOUCH_CALIBRATION_START), OPT_CENTER, font_large);
49
+    cmd.cmd(DL::DL_DISPLAY)
63 50
        .cmd(CMD_SWAP)
64 51
        .execute();
65 52
 
@@ -88,23 +75,10 @@ void TouchCalibrationScreen::onRedraw(draw_mode_t) {
88 75
   CommandProcessor cmd;
89 76
   cmd.cmd(CLEAR_COLOR_RGB(bg_color))
90 77
      .cmd(CLEAR(true,true,true))
91
-     .cmd(COLOR_RGB(bg_text_enabled))
92
-
93
-  #ifdef TOUCH_UI_PORTRAIT
94
-     .font(font_large)
95
-     .text  ( BTN_POS(1,8), BTN_SIZE(4,1), F("Touch the dots"))
96
-     .text  ( BTN_POS(1,9), BTN_SIZE(4,1), F("to calibrate"))
97
-  #else
98
-     .font(
99
-       #ifdef TOUCH_UI_800x480
100
-         font_large
101
-       #else
102
-         font_medium
103
-       #endif
104
-     )
105
-     .text  ( BTN_POS(1,1), BTN_SIZE(4,16), F("Touch the dots to calibrate"))
106
-  #endif
107
-     .cmd(CMD_CALIBRATE);
78
+     .cmd(COLOR_RGB(bg_text_enabled));
79
+
80
+  draw_text_box(cmd, BTN_POS(1,1), BTN_SIZE(4,16), GET_TEXTF(TOUCH_CALIBRATION_PROMPT), OPT_CENTER, font_large);
81
+  cmd.cmd(CMD_CALIBRATE);
108 82
 }
109 83
 
110 84
 void TouchCalibrationScreen::onIdle() {

+ 20
- 20
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/tune_menu.cpp 查看文件

@@ -52,79 +52,79 @@ void TuneMenu::onRedraw(draw_mode_t what) {
52 52
     cmd.colors(normal_btn)
53 53
        .font(font_medium)
54 54
     #ifdef TOUCH_UI_PORTRAIT
55
-       .tag(2).enabled(1)      .button( BTN_POS(1,1), BTN_SIZE(2,1), F("Temperature"))
56
-       .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(2,1), F("Change Filament"))
57
-        #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
55
+       .tag(2).enabled(1)      .button( BTN_POS(1,1), BTN_SIZE(2,1), GET_TEXTF(TEMPERATURE))
56
+       .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(2,1), GET_TEXTF(CHANGE_FILAMENT))
57
+       #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
58 58
           .enabled(1)
59 59
         #else
60 60
           .enabled(0)
61 61
         #endif
62
-       .tag(9).button( BTN_POS(1,3), BTN_SIZE(2,1), F("Filament Options"))
62
+       .tag(9).button( BTN_POS(1,3), BTN_SIZE(2,1), GET_TEXTF(FILAMENT))
63 63
       #if ENABLED(BABYSTEPPING)
64
-       .tag(4).enabled(1)      .button( BTN_POS(1,4), BTN_SIZE(2,1), F("Nudge Nozzle"))
64
+       .tag(4).enabled(1)      .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(NUDGE_NOZZLE))
65 65
       #else
66 66
         #if HAS_BED_PROBE
67 67
           .enabled(1)
68 68
         #else
69 69
           .enabled(0)
70 70
         #endif
71
-       .tag(4)                 .button( BTN_POS(1,4), BTN_SIZE(2,1), F("Adjust Z-Offset"))
71
+       .tag(4)                 .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(ZPROBE_ZOFFSET))
72 72
       #endif
73
-       .tag(5).enabled(1)      .button( BTN_POS(1,5), BTN_SIZE(2,1), F("Print Speed"))
73
+       .tag(5).enabled(1)      .button( BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXTF(PRINT_SPEED))
74 74
        .tag(isPrintingFromMediaPaused() ? 7 : 6)
75 75
       #if ENABLED(SDSUPPORT)
76 76
         .enabled(isPrintingFromMedia())
77 77
       #else
78 78
         .enabled(0)
79 79
       #endif
80
-        .button( BTN_POS(1,6), BTN_SIZE(2,1), isPrintingFromMediaPaused() ? F("Resume Print") : F("Pause Print"))
80
+        .button( BTN_POS(1,6), BTN_SIZE(2,1), isPrintingFromMediaPaused() ? GET_TEXTF(RESUME_PRINT) : GET_TEXTF(PAUSE_PRINT))
81 81
       #if ENABLED(SDSUPPORT)
82 82
         .enabled(isPrintingFromMedia())
83 83
       #else
84 84
         .enabled(0)
85 85
       #endif
86
-      .tag(8)             .button( BTN_POS(1,7), BTN_SIZE(2,1), F("Cancel Print"))
86
+      .tag(8)             .button( BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXTF(STOP_PRINT))
87 87
       .tag(1).colors(action_btn)
88
-                          .button( BTN_POS(1,8), BTN_SIZE(2,1), F("Back"));
88
+                          .button( BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXTF(BACK));
89 89
     #else // TOUCH_UI_PORTRAIT
90
-       .tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(1,1), F("Temperature"))
91
-       .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(1,1), F("Change Filament"))
90
+       .tag(2).enabled(1) .button( BTN_POS(1,1), BTN_SIZE(1,1), GET_TEXTF(TEMPERATURE))
91
+       .tag(3).enabled(!isPrinting()).button( BTN_POS(1,2), BTN_SIZE(1,1), GET_TEXTF(CHANGE_FILAMENT))
92 92
       #if ENABLED(BABYSTEPPING)
93 93
        .enabled(1)
94 94
       #else
95 95
        .enabled(0)
96 96
       #endif
97 97
         #if ENABLED(BABYSTEPPING)
98
-          .tag(4)         .button( BTN_POS(2,1), BTN_SIZE(1,1), F("Nudge Nozzle"))
98
+          .tag(4)         .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXTF(NUDGE_NOZZLE))
99 99
         #else
100 100
           #if HAS_BED_PROBE
101 101
             .enabled(1)
102 102
           #else
103 103
             .enabled(0)
104 104
           #endif
105
-          .tag(4)         .button( BTN_POS(1,4), BTN_SIZE(2,1), F("Adjust Z-Offset"))
105
+          .tag(4)         .button( BTN_POS(1,4), BTN_SIZE(2,1), GET_TEXTF(ZPROBE_ZOFFSET))
106 106
         #endif
107
-       .tag(5).enabled(1) .button( BTN_POS(2,2), BTN_SIZE(1,1), F("Print Speed"))
107
+       .tag(5).enabled(1) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXTF(PRINT_SPEED))
108 108
        .tag(isPrintingFromMediaPaused() ? 7 : 6)
109 109
       #if ENABLED(SDSUPPORT)
110 110
         .enabled(isPrintingFromMedia())
111 111
       #else
112 112
         .enabled(0)
113 113
       #endif
114
-                          .button( BTN_POS(1,3), BTN_SIZE(1,1), isPrintingFromMediaPaused() ? F("Resume Print") : F("Pause Print"))
114
+                          .button( BTN_POS(1,3), BTN_SIZE(1,1), isPrintingFromMediaPaused() ? GET_TEXTF(RESUME_PRINT) : GET_TEXTF(PAUSE_PRINT))
115 115
       #if ENABLED(SDSUPPORT)
116 116
         .enabled(isPrintingFromMedia())
117 117
       #else
118 118
         .enabled(0)
119 119
       #endif
120
-       .tag(8).           button( BTN_POS(2,3), BTN_SIZE(1,1), F("Cancel Print"))
121
-        #if EITHER(LIN_ADVANCE, FILAMENT_RUNOUT_SENSOR)
120
+       .tag(8).           button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXTF(STOP_PRINT))
121
+       #if ENABLED(LIN_ADVANCE) || ENABLED(FILAMENT_RUNOUT_SENSOR)
122 122
           .enabled(1)
123 123
         #else
124 124
           .enabled(0)
125 125
         #endif
126
-       .tag(9).button( BTN_POS(1,4), BTN_SIZE(1,1), F("Filament Options"))
127
-       .tag(1).colors(action_btn) .button( BTN_POS(2,4), BTN_SIZE(1,1), F("Back"));
126
+       .tag(9).button( BTN_POS(1,4), BTN_SIZE(1,1), GET_TEXTF(FILAMENT))
127
+       .tag(1).colors(action_btn) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXTF(BACK));
128 128
     #endif
129 129
   }
130 130
   #undef GRID_COLS

+ 3
- 3
Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/z_offset_screen.cpp 查看文件

@@ -32,10 +32,10 @@ using namespace Theme;
32 32
 
33 33
 void ZOffsetScreen::onRedraw(draw_mode_t what) {
34 34
   widgets_t w(what);
35
-  w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(PSTR("mm"));
35
+  w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXTF(UNITS_MM));
36 36
 
37
-  w.heading(                  PSTR("Z Offset"));
38
-  w.color(z_axis).adjuster(4, PSTR("Z Offset:"), getZOffset_mm());
37
+  w.heading(                  GET_TEXTF(ZPROBE_ZOFFSET));
38
+  w.color(z_axis).adjuster(4, GET_TEXTF(ZPROBE_ZOFFSET), getZOffset_mm());
39 39
   w.increments();
40 40
 }
41 41
 

+ 7
- 0
config/default/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/3DFabXYZ/Migbot/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/ADIMLab/Gantry v1/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/ADIMLab/Gantry v2/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/AlephObjects/TAZ4/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Alfawise/U20-bltouch/Configuration_adv.h 查看文件

@@ -1215,6 +1215,13 @@
1215 1215
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1216 1216
   #endif
1217 1217
 
1218
+  // When labels do not fit buttons, use smaller font
1219
+  #define TOUCH_UI_FIT_TEXT
1220
+
1221
+  // Enable support for selection of languages at run-time
1222
+  // (otherwise will use the value of LCD_LANGUAGE)
1223
+  //#define TOUCH_UI_LANGUAGE_MENU
1224
+
1218 1225
   // Use a numeric passcode for "Screen lock" keypad.
1219 1226
   // (recommended for smaller displays)
1220 1227
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Alfawise/U20/Configuration_adv.h 查看文件

@@ -1214,6 +1214,13 @@
1214 1214
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1215 1215
   #endif
1216 1216
 
1217
+  // When labels do not fit buttons, use smaller font
1218
+  #define TOUCH_UI_FIT_TEXT
1219
+
1220
+  // Enable support for selection of languages at run-time
1221
+  // (otherwise will use the value of LCD_LANGUAGE)
1222
+  //#define TOUCH_UI_LANGUAGE_MENU
1223
+
1217 1224
   // Use a numeric passcode for "Screen lock" keypad.
1218 1225
   // (recommended for smaller displays)
1219 1226
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/AliExpress/UM2pExt/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/A2/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/A2plus/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/A6/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/A8/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/A8plus/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Anet/E16/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/AnyCubic/i3/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/ArmEd/Configuration_adv.h 查看文件

@@ -1215,6 +1215,13 @@
1215 1215
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1216 1216
   #endif
1217 1217
 
1218
+  // When labels do not fit buttons, use smaller font
1219
+  #define TOUCH_UI_FIT_TEXT
1220
+
1221
+  // Enable support for selection of languages at run-time
1222
+  // (otherwise will use the value of LCD_LANGUAGE)
1223
+  //#define TOUCH_UI_LANGUAGE_MENU
1224
+
1218 1225
   // Use a numeric passcode for "Screen lock" keypad.
1219 1226
   // (recommended for smaller displays)
1220 1227
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/BIBO/TouchX/cyclops/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/BIBO/TouchX/default/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/BQ/Hephestos/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/BQ/Hephestos_2/Configuration_adv.h 查看文件

@@ -1219,6 +1219,13 @@
1219 1219
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1220 1220
   #endif
1221 1221
 
1222
+  // When labels do not fit buttons, use smaller font
1223
+  #define TOUCH_UI_FIT_TEXT
1224
+
1225
+  // Enable support for selection of languages at run-time
1226
+  // (otherwise will use the value of LCD_LANGUAGE)
1227
+  //#define TOUCH_UI_LANGUAGE_MENU
1228
+
1222 1229
   // Use a numeric passcode for "Screen lock" keypad.
1223 1230
   // (recommended for smaller displays)
1224 1231
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/BQ/WITBOX/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Cartesio/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-10/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-10S/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-10_5S/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-10mini/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-20 Pro/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-20/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/CR-8/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/Ender-2/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/Ender-3/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/Ender-4/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Creality/Ender-5/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Dagoma/Disco Ultimate/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/Einstart-S/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 7
- 0
config/examples/FYSETC/AIO_II/Configuration_adv.h 查看文件

@@ -1211,6 +1211,13 @@
1211 1211
     #define TOUCH_UI_UTF8_WESTERN_CHARSET
1212 1212
   #endif
1213 1213
 
1214
+  // When labels do not fit buttons, use smaller font
1215
+  #define TOUCH_UI_FIT_TEXT
1216
+
1217
+  // Enable support for selection of languages at run-time
1218
+  // (otherwise will use the value of LCD_LANGUAGE)
1219
+  //#define TOUCH_UI_LANGUAGE_MENU
1220
+
1214 1221
   // Use a numeric passcode for "Screen lock" keypad.
1215 1222
   // (recommended for smaller displays)
1216 1223
   //#define TOUCH_UI_PASSCODE

+ 0
- 0
config/examples/FYSETC/Cheetah 1.2/BLTouch/Configuration_adv.h 查看文件


部分文件因文件數量過多而無法顯示

Loading…
取消
儲存