Browse Source

🧑‍💻 Extend LCD string substitution (#24278)

Scott Lahteine 2 years ago
parent
commit
8aca38351c
No account linked to committer's email address
83 changed files with 1068 additions and 1312 deletions
  1. 0
    1
      Marlin/src/feature/dac/stepper_dac.cpp
  2. 5
    5
      Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp
  3. 12
    11
      Marlin/src/lcd/HD44780/marlinui_HD44780.cpp
  4. 5
    5
      Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp
  5. 73
    69
      Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
  6. 3
    3
      Marlin/src/lcd/dogm/lcdprint_u8g.cpp
  7. 19
    19
      Marlin/src/lcd/dogm/marlinui_DOGM.cpp
  8. 1
    1
      Marlin/src/lcd/dogm/u8g_fontutf8.cpp
  9. 3
    3
      Marlin/src/lcd/dogm/u8g_fontutf8.h
  10. 5
    5
      Marlin/src/lcd/e3v2/jyersui/dwin.cpp
  11. 31
    29
      Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp
  12. 66
    27
      Marlin/src/lcd/e3v2/marlinui/dwin_string.h
  13. 20
    21
      Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp
  14. 18
    20
      Marlin/src/lcd/e3v2/marlinui/ui_common.cpp
  15. 4
    6
      Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp
  16. 5
    5
      Marlin/src/lcd/e3v2/proui/dwin.cpp
  17. 1
    1
      Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp
  18. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp
  19. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp
  20. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp
  21. 1
    1
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp
  22. 2
    0
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.h
  23. 127
    127
      Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h
  24. 4
    9
      Marlin/src/lcd/fontutils.cpp
  25. 8
    4
      Marlin/src/lcd/fontutils.h
  26. 5
    8
      Marlin/src/lcd/language/language_an.h
  27. 3
    4
      Marlin/src/lcd/language/language_bg.h
  28. 5
    6
      Marlin/src/lcd/language/language_ca.h
  29. 10
    23
      Marlin/src/lcd/language/language_cz.h
  30. 2
    8
      Marlin/src/lcd/language/language_da.h
  31. 12
    42
      Marlin/src/lcd/language/language_de.h
  32. 6
    14
      Marlin/src/lcd/language/language_el.h
  33. 6
    14
      Marlin/src/lcd/language/language_el_gr.h
  34. 19
    79
      Marlin/src/lcd/language/language_en.h
  35. 14
    27
      Marlin/src/lcd/language/language_es.h
  36. 5
    14
      Marlin/src/lcd/language/language_eu.h
  37. 1
    1
      Marlin/src/lcd/language/language_fi.h
  38. 11
    32
      Marlin/src/lcd/language/language_fr.h
  39. 13
    27
      Marlin/src/lcd/language/language_gl.h
  40. 1
    1
      Marlin/src/lcd/language/language_hr.h
  41. 11
    32
      Marlin/src/lcd/language/language_hu.h
  42. 13
    66
      Marlin/src/lcd/language/language_it.h
  43. 6
    16
      Marlin/src/lcd/language/language_jp_kana.h
  44. 2
    1
      Marlin/src/lcd/language/language_nl.h
  45. 7
    18
      Marlin/src/lcd/language/language_pl.h
  46. 2
    4
      Marlin/src/lcd/language/language_pt.h
  47. 5
    8
      Marlin/src/lcd/language/language_pt_br.h
  48. 16
    29
      Marlin/src/lcd/language/language_ro.h
  49. 10
    34
      Marlin/src/lcd/language/language_ru.h
  50. 19
    47
      Marlin/src/lcd/language/language_sk.h
  51. 10
    23
      Marlin/src/lcd/language/language_sv.h
  52. 10
    23
      Marlin/src/lcd/language/language_tr.h
  53. 10
    34
      Marlin/src/lcd/language/language_uk.h
  54. 9
    22
      Marlin/src/lcd/language/language_vi.h
  55. 9
    23
      Marlin/src/lcd/language/language_zh_CN.h
  56. 9
    23
      Marlin/src/lcd/language/language_zh_TW.h
  57. 11
    8
      Marlin/src/lcd/lcdprint.cpp
  58. 109
    25
      Marlin/src/lcd/lcdprint.h
  59. 3
    2
      Marlin/src/lcd/marlinui.cpp
  60. 4
    3
      Marlin/src/lcd/menu/menu.cpp
  61. 12
    10
      Marlin/src/lcd/menu/menu.h
  62. 20
    28
      Marlin/src/lcd/menu/menu_advanced.cpp
  63. 1
    1
      Marlin/src/lcd/menu/menu_backlash.cpp
  64. 1
    1
      Marlin/src/lcd/menu/menu_configuration.cpp
  65. 10
    10
      Marlin/src/lcd/menu/menu_filament.cpp
  66. 71
    9
      Marlin/src/lcd/menu/menu_item.h
  67. 4
    16
      Marlin/src/lcd/menu/menu_motion.cpp
  68. 2
    15
      Marlin/src/lcd/menu/menu_probe_offset.cpp
  69. 12
    12
      Marlin/src/lcd/menu/menu_temperature.cpp
  70. 5
    3
      Marlin/src/lcd/menu/menu_tune.cpp
  71. 3
    3
      Marlin/src/lcd/menu/menu_ubl.cpp
  72. 1
    10
      Marlin/src/lcd/menu/menu_x_twist.cpp
  73. 1
    1
      Marlin/src/lcd/tft/tft.h
  74. 2
    2
      Marlin/src/lcd/tft/tft_queue.cpp
  75. 4
    1
      Marlin/src/lcd/tft/tft_queue.h
  76. 19
    19
      Marlin/src/lcd/tft/tft_string.cpp
  77. 67
    26
      Marlin/src/lcd/tft/tft_string.h
  78. 5
    5
      Marlin/src/lcd/tft/ui_1024x600.cpp
  79. 5
    5
      Marlin/src/lcd/tft/ui_320x240.cpp
  80. 5
    5
      Marlin/src/lcd/tft/ui_480x320.cpp
  81. 12
    12
      Marlin/src/lcd/tft/ui_common.cpp
  82. 1
    1
      Marlin/src/libs/L64XX/L64XX_Marlin.cpp
  83. 1
    1
      buildroot/share/fonts/genpages.c

+ 0
- 1
Marlin/src/feature/dac/stepper_dac.cpp View File

29
 #if HAS_MOTOR_CURRENT_DAC
29
 #if HAS_MOTOR_CURRENT_DAC
30
 
30
 
31
 #include "stepper_dac.h"
31
 #include "stepper_dac.h"
32
-#include "../../MarlinCore.h" // for SP_X_LBL...
33
 
32
 
34
 bool dac_present = false;
33
 bool dac_present = false;
35
 constexpr xyze_uint8_t dac_order = DAC_STEPPER_ORDER;
34
 constexpr xyze_uint8_t dac_order = DAC_STEPPER_ORDER;

+ 5
- 5
Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp View File

992
 
992
 
993
 // return < 0 on error
993
 // return < 0 on error
994
 // return the advanced cols
994
 // return the advanced cols
995
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
995
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length) {
996
 
996
 
997
   // find the HD44780 internal ROM first
997
   // find the HD44780 internal ROM first
998
   int ret;
998
   int ret;
1047
  *
1047
  *
1048
  * Draw a UTF-8 string
1048
  * Draw a UTF-8 string
1049
  */
1049
  */
1050
-static int lcd_put_u8str_max_cb(const char * utf8_str, uint8_t (*cb_read_byte)(uint8_t * str), pixel_len_t max_length) {
1050
+static int lcd_put_u8str_max_cb(const char * utf8_str, read_byte_cb_t cb_read_byte, const pixel_len_t max_length) {
1051
   pixel_len_t ret = 0;
1051
   pixel_len_t ret = 0;
1052
-  uint8_t *p = (uint8_t *)utf8_str;
1052
+  const uint8_t *p = (uint8_t *)utf8_str;
1053
   while (ret < max_length) {
1053
   while (ret < max_length) {
1054
     wchar_t ch = 0;
1054
     wchar_t ch = 0;
1055
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
1055
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
1059
   return (int)ret;
1059
   return (int)ret;
1060
 }
1060
 }
1061
 
1061
 
1062
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
1062
+int lcd_put_u8str_max(const char * utf8_str, const pixel_len_t max_length) {
1063
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
1063
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
1064
 }
1064
 }
1065
 
1065
 
1066
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length) {
1066
+int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) {
1067
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
1067
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
1068
 }
1068
 }
1069
 
1069
 

+ 12
- 11
Marlin/src/lcd/HD44780/marlinui_HD44780.cpp View File

495
 #endif // SHOW_BOOTSCREEN
495
 #endif // SHOW_BOOTSCREEN
496
 
496
 
497
 void MarlinUI::draw_kill_screen() {
497
 void MarlinUI::draw_kill_screen() {
498
-  lcd_put_u8str(0, 0, status_message);
499
-  lcd_uint_t y = 2;
498
+  lcd_uint_t x = 0, y = 0;
499
+  lcd_put_u8str(x, y, status_message);
500
+  y = 2;
500
   #if LCD_HEIGHT >= 4
501
   #if LCD_HEIGHT >= 4
501
-    lcd_put_u8str(0, y++, GET_TEXT_F(MSG_HALTED));
502
+    lcd_put_u8str(x, y++, GET_TEXT_F(MSG_HALTED));
502
   #endif
503
   #endif
503
-  lcd_put_u8str(0, y, GET_TEXT_F(MSG_PLEASE_RESET));
504
+  lcd_put_u8str(x, y, GET_TEXT_F(MSG_PLEASE_RESET));
504
 }
505
 }
505
 
506
 
506
 //
507
 //
1076
       int8_t pad = (LCD_WIDTH - plen - vlen) / 2;
1077
       int8_t pad = (LCD_WIDTH - plen - vlen) / 2;
1077
       while (--pad >= 0) { lcd_put_wchar(' '); n--; }
1078
       while (--pad >= 0) { lcd_put_wchar(' '); n--; }
1078
     }
1079
     }
1079
-    if (plen) n = lcd_put_u8str_ind(fstr, itemIndex, itemString, n);
1080
+    if (plen) n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n);
1080
     if (vlen) n -= lcd_put_u8str_max(vstr, n);
1081
     if (vlen) n -= lcd_put_u8str_max(vstr, n);
1081
     for (; n > 0; --n) lcd_put_wchar(' ');
1082
     for (; n > 0; --n) lcd_put_wchar(' ');
1082
   }
1083
   }
1083
 
1084
 
1084
   // Draw a generic menu item with pre_char (if selected) and post_char
1085
   // Draw a generic menu item with pre_char (if selected) and post_char
1085
-  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char) {
1086
+  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char pre_char, const char post_char) {
1086
     lcd_put_wchar(0, row, sel ? pre_char : ' ');
1087
     lcd_put_wchar(0, row, sel ? pre_char : ' ');
1087
-    uint8_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 2);
1088
+    uint8_t n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2);
1088
     for (; n; --n) lcd_put_wchar(' ');
1089
     for (; n; --n) lcd_put_wchar(' ');
1089
     lcd_put_wchar(post_char);
1090
     lcd_put_wchar(post_char);
1090
   }
1091
   }
1091
 
1092
 
1092
   // Draw a menu item with a (potentially) editable value
1093
   // Draw a menu item with a (potentially) editable value
1093
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm) {
1094
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char * const inStr, const bool pgm) {
1094
     const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0;
1095
     const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0;
1095
     lcd_put_wchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
1096
     lcd_put_wchar(0, row, sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
1096
-    uint8_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 2 - vlen);
1097
+    uint8_t n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2 - vlen);
1097
     if (vlen) {
1098
     if (vlen) {
1098
       lcd_put_wchar(':');
1099
       lcd_put_wchar(':');
1099
       for (; n; --n) lcd_put_wchar(' ');
1100
       for (; n; --n) lcd_put_wchar(' ');
1102
   }
1103
   }
1103
 
1104
 
1104
   // Low-level draw_edit_screen can be used to draw an edit screen from anyplace
1105
   // Low-level draw_edit_screen can be used to draw an edit screen from anyplace
1105
-  void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) {
1106
+  void MenuEditItemBase::draw_edit_screen(FSTR_P const ftpl, const char * const value/*=nullptr*/) {
1106
     ui.encoder_direction_normal();
1107
     ui.encoder_direction_normal();
1107
-    uint8_t n = lcd_put_u8str_ind(0, 1, fstr, itemIndex, itemString, LCD_WIDTH - 1);
1108
+    uint8_t n = lcd_put_u8str(0, 1, ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 1);
1108
     if (value) {
1109
     if (value) {
1109
       lcd_put_wchar(':'); n--;
1110
       lcd_put_wchar(':'); n--;
1110
       const uint8_t len = utf8_strlen(value) + 1;   // Plus one for a leading space
1111
       const uint8_t len = utf8_strlen(value) + 1;   // Plus one for a leading space

+ 5
- 5
Marlin/src/lcd/TFTGLCD/lcdprint_TFTGLCD.cpp View File

991
 
991
 
992
 // return < 0 on error
992
 // return < 0 on error
993
 // return the advanced cols
993
 // return the advanced cols
994
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
994
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length) {
995
 
995
 
996
   // find the HD44780 internal ROM first
996
   // find the HD44780 internal ROM first
997
   int ret;
997
   int ret;
1045
  *
1045
  *
1046
  * Draw a UTF-8 string
1046
  * Draw a UTF-8 string
1047
  */
1047
  */
1048
-static int lcd_put_u8str_max_cb(const char * utf8_str, uint8_t (*cb_read_byte)(uint8_t * str), pixel_len_t max_length) {
1048
+static int lcd_put_u8str_max_cb(const char * utf8_str, read_byte_cb_t cb_read_byte, const pixel_len_t max_length) {
1049
   pixel_len_t ret = 0;
1049
   pixel_len_t ret = 0;
1050
-  uint8_t *p = (uint8_t *)utf8_str;
1050
+  const uint8_t *p = (uint8_t *)utf8_str;
1051
   while (ret < max_length) {
1051
   while (ret < max_length) {
1052
     wchar_t ch = 0;
1052
     wchar_t ch = 0;
1053
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
1053
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
1057
   return (int)ret;
1057
   return (int)ret;
1058
 }
1058
 }
1059
 
1059
 
1060
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
1060
+int lcd_put_u8str_max(const char * utf8_str, const pixel_len_t max_length) {
1061
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
1061
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
1062
 }
1062
 }
1063
 
1063
 
1064
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length) {
1064
+int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) {
1065
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
1065
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
1066
 }
1066
 }
1067
 
1067
 

+ 73
- 69
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp View File

380
   void MarlinUI::_set_contrast() { lcd.setContrast(contrast); }
380
   void MarlinUI::_set_contrast() { lcd.setContrast(contrast); }
381
 #endif
381
 #endif
382
 
382
 
383
+#if !IS_TFTGLCD_PANEL
384
+  void lcd_moveto(const uint8_t col, const uint8_t row) { lcd.setCursor(col, row); }
385
+#endif
386
+
383
 static void center_text(FSTR_P const fstart, const uint8_t y) {
387
 static void center_text(FSTR_P const fstart, const uint8_t y) {
384
   const uint8_t len = utf8_strlen(fstart);
388
   const uint8_t len = utf8_strlen(fstart);
385
-  lcd.setCursor(len < LCD_WIDTH ? (LCD_WIDTH - len) / 2 : 0, y);
389
+  lcd_moveto(len < LCD_WIDTH ? (LCD_WIDTH - len) / 2 : 0, y);
386
   lcd_put_u8str(fstart);
390
   lcd_put_u8str(fstart);
387
 }
391
 }
388
 
392
 
396
     uint8_t indent = (LCD_WIDTH - 8) / 2;
400
     uint8_t indent = (LCD_WIDTH - 8) / 2;
397
     // symbols 217 (bottom right corner) and 218 (top left corner) are using for letters in some languages
401
     // symbols 217 (bottom right corner) and 218 (top left corner) are using for letters in some languages
398
     // and they should be moved to beginning ASCII table as special symbols
402
     // and they should be moved to beginning ASCII table as special symbols
399
-    lcd.setCursor(indent, 0); lcd.write(TLC); lcd_put_u8str(F("------"));  lcd.write(TRC);
400
-    lcd.setCursor(indent, 1); lcd.write(LR);  lcd_put_u8str(F("Marlin"));  lcd.write(LR);
401
-    lcd.setCursor(indent, 2); lcd.write(BLC); lcd_put_u8str(F("------"));  lcd.write(BRC);
403
+    lcd_moveto(indent, 0); lcd.write(TLC); lcd_put_u8str(F("------")); lcd.write(TRC);
404
+    lcd_moveto(indent, 1); lcd.write(LR);  lcd_put_u8str(F("Marlin")); lcd.write(LR);
405
+    lcd_moveto(indent, 2); lcd.write(BLC); lcd_put_u8str(F("------")); lcd.write(BRC);
402
     center_text(F(SHORT_BUILD_VERSION), 3);
406
     center_text(F(SHORT_BUILD_VERSION), 3);
403
     center_text(F(MARLIN_WEBSITE_URL), 4);
407
     center_text(F(MARLIN_WEBSITE_URL), 4);
404
     picBits = ICON_LOGO;
408
     picBits = ICON_LOGO;
414
 void MarlinUI::draw_kill_screen() {
418
 void MarlinUI::draw_kill_screen() {
415
   if (!PanelDetected) return;
419
   if (!PanelDetected) return;
416
   lcd.clear_buffer();
420
   lcd.clear_buffer();
417
-  lcd.setCursor(0, 3);  lcd.write(COLOR_ERROR);
418
-  lcd.setCursor((LCD_WIDTH - utf8_strlen(status_message)) / 2 + 1, 3);
421
+  lcd_moveto(0, 3); lcd.write(COLOR_ERROR);
422
+  lcd_moveto((LCD_WIDTH - utf8_strlen(status_message)) / 2 + 1, 3);
419
   lcd_put_u8str(status_message);
423
   lcd_put_u8str(status_message);
420
   center_text(GET_TEXT_F(MSG_HALTED), 5);
424
   center_text(GET_TEXT_F(MSG_HALTED), 5);
421
   center_text(GET_TEXT_F(MSG_PLEASE_RESET), 6);
425
   center_text(GET_TEXT_F(MSG_PLEASE_RESET), 6);
453
 
457
 
454
     #if HOTENDS < 2
458
     #if HOTENDS < 2
455
       if (heater_id == H_E0) {
459
       if (heater_id == H_E0) {
456
-        lcd.setCursor(2, 5);  lcd.print(prefix); //HE
457
-        lcd.setCursor(1, 6);  lcd.print(i16tostr3rj(t1));
458
-        lcd.setCursor(1, 7);
460
+        lcd_moveto(2, 5); lcd.print(prefix); //HE
461
+        lcd_moveto(1, 6); lcd.print(i16tostr3rj(t1));
462
+        lcd_moveto(1, 7);
459
       }
463
       }
460
       else {
464
       else {
461
-        lcd.setCursor(6, 5);  lcd.print(prefix); //BED
462
-        lcd.setCursor(6, 6);  lcd.print(i16tostr3rj(t1));
463
-        lcd.setCursor(6, 7);
465
+        lcd_moveto(6, 5); lcd.print(prefix); //BED
466
+        lcd_moveto(6, 6); lcd.print(i16tostr3rj(t1));
467
+        lcd_moveto(6, 7);
464
       }
468
       }
465
     #else
469
     #else
466
       if (heater_id > H_BED) {
470
       if (heater_id > H_BED) {
467
-        lcd.setCursor(heater_id * 4, 5);  lcd.print(prefix); // HE1 or HE2 or HE3
468
-        lcd.setCursor(heater_id * 4, 6);  lcd.print(i16tostr3rj(t1));
469
-        lcd.setCursor(heater_id * 4, 7);
471
+        lcd_moveto(heater_id * 4, 5); lcd.print(prefix); // HE1 or HE2 or HE3
472
+        lcd_moveto(heater_id * 4, 6); lcd.print(i16tostr3rj(t1));
473
+        lcd_moveto(heater_id * 4, 7);
470
       }
474
       }
471
       else {
475
       else {
472
-        lcd.setCursor(13, 5);  lcd.print(prefix); //BED
473
-        lcd.setCursor(13, 6);  lcd.print(i16tostr3rj(t1));
474
-        lcd.setCursor(13, 7);
476
+        lcd_moveto(13, 5); lcd.print(prefix); //BED
477
+        lcd_moveto(13, 6); lcd.print(i16tostr3rj(t1));
478
+        lcd_moveto(13, 7);
475
       }
479
       }
476
     #endif // HOTENDS <= 1
480
     #endif // HOTENDS <= 1
477
 
481
 
512
   FORCE_INLINE void _draw_cooler_status(const bool blink) {
516
   FORCE_INLINE void _draw_cooler_status(const bool blink) {
513
     const celsius_t t2 = thermalManager.degTargetCooler();
517
     const celsius_t t2 = thermalManager.degTargetCooler();
514
 
518
 
515
-    lcd.setCursor(0, 5); lcd_put_u8str(F("COOL"));
516
-    lcd.setCursor(1, 6); lcd_put_u8str(i16tostr3rj(thermalManager.wholeDegCooler()));
517
-    lcd.setCursor(1, 7);
519
+    lcd_moveto(0, 5); lcd_put_u8str(F("COOL"));
520
+    lcd_moveto(1, 6); lcd_put_u8str(i16tostr3rj(thermalManager.wholeDegCooler()));
521
+    lcd_moveto(1, 7);
518
 
522
 
519
     #if !HEATER_IDLE_HANDLER
523
     #if !HEATER_IDLE_HANDLER
520
       UNUSED(blink);
524
       UNUSED(blink);
540
 #if ENABLED(LASER_COOLANT_FLOW_METER)
544
 #if ENABLED(LASER_COOLANT_FLOW_METER)
541
 
545
 
542
   FORCE_INLINE void _draw_flowmeter_status() {
546
   FORCE_INLINE void _draw_flowmeter_status() {
543
-    lcd.setCursor(5, 5); lcd_put_u8str(F("FLOW"));
544
-    lcd.setCursor(7, 6); lcd_put_wchar('L');
545
-    lcd.setCursor(6, 7); lcd_put_u8str(ftostr11ns(cooler.flowrate));
547
+    lcd_moveto(5, 5); lcd_put_u8str(F("FLOW"));
548
+    lcd_moveto(7, 6); lcd_put_wchar('L');
549
+    lcd_moveto(6, 7); lcd_put_u8str(ftostr11ns(cooler.flowrate));
546
 
550
 
547
     if (cooler.flowrate)  picBits |= ICON_FAN;
551
     if (cooler.flowrate)  picBits |= ICON_FAN;
548
     else                  picBits &= ~ICON_FAN;
552
     else                  picBits &= ~ICON_FAN;
553
 #if ENABLED(I2C_AMMETER)
557
 #if ENABLED(I2C_AMMETER)
554
 
558
 
555
   FORCE_INLINE void _draw_ammeter_status() {
559
   FORCE_INLINE void _draw_ammeter_status() {
556
-    lcd.setCursor(10, 5); lcd_put_u8str(F("ILAZ"));
560
+    lcd_moveto(10, 5); lcd_put_u8str(F("ILAZ"));
557
     ammeter.read();
561
     ammeter.read();
558
-    lcd.setCursor(11, 6);
562
+    lcd_moveto(11, 6);
559
     if (ammeter.current <= 0.999f)
563
     if (ammeter.current <= 0.999f)
560
     {
564
     {
561
       lcd_put_u8str("mA");
565
       lcd_put_u8str("mA");
562
-      lcd.setCursor(10, 7);
566
+      lcd_moveto(10, 7);
563
       lcd_put_wchar(' '); lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
567
       lcd_put_wchar(' '); lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
564
     }
568
     }
565
     else {
569
     else {
566
       lcd_put_u8str(" A");
570
       lcd_put_u8str(" A");
567
-      lcd.setCursor(10, 7);
571
+      lcd_moveto(10, 7);
568
       lcd_put_u8str(ftostr12ns(ammeter.current));
572
       lcd_put_u8str(ftostr12ns(ammeter.current));
569
     }
573
     }
570
 
574
 
577
 #if HAS_CUTTER
581
 #if HAS_CUTTER
578
 
582
 
579
   FORCE_INLINE void _draw_cutter_status() {
583
   FORCE_INLINE void _draw_cutter_status() {
580
-    lcd.setCursor(15, 5);  lcd_put_u8str(F("CUTT"));
584
+    lcd_moveto(15, 5);  lcd_put_u8str(F("CUTT"));
581
     #if CUTTER_UNIT_IS(RPM)
585
     #if CUTTER_UNIT_IS(RPM)
582
-      lcd.setCursor(16, 6);  lcd_put_u8str(F("RPM"));
583
-      lcd.setCursor(15, 7);  lcd_put_u8str(ftostr31ns(float(cutter.unitPower) / 1000));
586
+      lcd_moveto(16, 6);  lcd_put_u8str(F("RPM"));
587
+      lcd_moveto(15, 7);  lcd_put_u8str(ftostr31ns(float(cutter.unitPower) / 1000));
584
       lcd_put_wchar('K');
588
       lcd_put_wchar('K');
585
     #elif CUTTER_UNIT_IS(PERCENT)
589
     #elif CUTTER_UNIT_IS(PERCENT)
586
-      lcd.setCursor(17, 6);  lcd_put_wchar('%');
587
-      lcd.setCursor(18, 7);  lcd_put_u8str(cutter_power2str(cutter.unitPower));
590
+      lcd_moveto(17, 6);  lcd_put_wchar('%');
591
+      lcd_moveto(18, 7);  lcd_put_u8str(cutter_power2str(cutter.unitPower));
588
     #else
592
     #else
589
-      lcd.setCursor(17, 7);  lcd_put_u8str(cutter_power2str(cutter.unitPower));
593
+      lcd_moveto(17, 7);  lcd_put_u8str(cutter_power2str(cutter.unitPower));
590
     #endif
594
     #endif
591
 
595
 
592
     if (cutter.unitPower) picBits |= ICON_HOT;
596
     if (cutter.unitPower) picBits |= ICON_HOT;
622
       lcd.write('%'); lcd.write(percent);
626
       lcd.write('%'); lcd.write(percent);
623
     }
627
     }
624
     else { // For progress bar test
628
     else { // For progress bar test
625
-      lcd.setCursor(LCD_WIDTH / 2 - 2, MIDDLE_Y);
626
-      lcd.print(i16tostr3rj(percent));  lcd.write('%');
629
+      lcd_moveto(LCD_WIDTH / 2 - 2, MIDDLE_Y);
630
+      lcd.print(i16tostr3rj(percent)); lcd.write('%');
627
       lcd.print_line();
631
       lcd.print_line();
628
-      lcd.setCursor(0, MIDDLE_Y + 1);
632
+      lcd_moveto(0, MIDDLE_Y + 1);
629
       lcd.write('%'); lcd.write(percent);
633
       lcd.write('%'); lcd.write(percent);
630
       lcd.print_line();
634
       lcd.print_line();
631
     }
635
     }
635
 
639
 
636
 void MarlinUI::draw_status_message(const bool blink) {
640
 void MarlinUI::draw_status_message(const bool blink) {
637
   if (!PanelDetected) return;
641
   if (!PanelDetected) return;
638
-  lcd.setCursor(0, 3);
642
+  lcd_moveto(0, 3);
639
   #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
643
   #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
640
 
644
 
641
     // Alternate Status message and Filament display
645
     // Alternate Status message and Filament display
784
   // Line 1 - XYZ coordinates
788
   // Line 1 - XYZ coordinates
785
   //
789
   //
786
 
790
 
787
-  lcd.setCursor(0, 0);
791
+  lcd_moveto(0, 0);
788
   const xyz_pos_t lpos = current_position.asLogical();
792
   const xyz_pos_t lpos = current_position.asLogical();
789
   _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); lcd.write(' ');
793
   _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); lcd.write(' ');
790
   _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); lcd.write(' ');
794
   _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); lcd.write(' ');
798
   // Line 2 - feedrate, , time
802
   // Line 2 - feedrate, , time
799
   //
803
   //
800
 
804
 
801
-  lcd.setCursor(0, 1);
805
+  lcd_moveto(0, 1);
802
   lcd_put_u8str(F("FR")); lcd.print(i16tostr3rj(feedrate_percentage)); lcd.write('%');
806
   lcd_put_u8str(F("FR")); lcd.print(i16tostr3rj(feedrate_percentage)); lcd.write('%');
803
 
807
 
804
   #if BOTH(SDSUPPORT, HAS_PRINT_PROGRESS)
808
   #if BOTH(SDSUPPORT, HAS_PRINT_PROGRESS)
805
-    lcd.setCursor(LCD_WIDTH / 2 - 3, 1);
809
+    lcd_moveto(LCD_WIDTH / 2 - 3, 1);
806
     _draw_print_progress();
810
     _draw_print_progress();
807
   #endif
811
   #endif
808
 
812
 
810
   duration_t elapsed = print_job_timer.duration();
814
   duration_t elapsed = print_job_timer.duration();
811
   uint8_t len = elapsed.toDigital(buffer);
815
   uint8_t len = elapsed.toDigital(buffer);
812
 
816
 
813
-  lcd.setCursor((LCD_WIDTH - 1) - len, 1);
817
+  lcd_moveto((LCD_WIDTH - 1) - len, 1);
814
   lcd.write(LCD_STR_CLOCK[0]); lcd.print(buffer);
818
   lcd.write(LCD_STR_CLOCK[0]); lcd.print(buffer);
815
 
819
 
816
   //
820
   //
817
   // Line 3 - progressbar
821
   // Line 3 - progressbar
818
   //
822
   //
819
 
823
 
820
-  lcd.setCursor(0, 2);
824
+  lcd_moveto(0, 2);
821
   #if ENABLED(LCD_PROGRESS_BAR)
825
   #if ENABLED(LCD_PROGRESS_BAR)
822
     draw_progress_bar(_get_progress());
826
     draw_progress_bar(_get_progress());
823
   #else
827
   #else
836
 
840
 
837
   #if HOTENDS <= 1 || (HOTENDS <= 2 && !HAS_HEATED_BED)
841
   #if HOTENDS <= 1 || (HOTENDS <= 2 && !HAS_HEATED_BED)
838
     #if DUAL_MIXING_EXTRUDER
842
     #if DUAL_MIXING_EXTRUDER
839
-      lcd.setCursor(0, 4);
843
+      lcd_moveto(0, 4);
840
       // Two-component mix / gradient instead of XY
844
       // Two-component mix / gradient instead of XY
841
       char mixer_messages[12];
845
       char mixer_messages[12];
842
       const char *mix_label;
846
       const char *mix_label;
892
       #else
896
       #else
893
         #define FANX 17
897
         #define FANX 17
894
       #endif
898
       #endif
895
-      lcd.setCursor(FANX, 5); lcd_put_u8str(F("FAN"));
896
-      lcd.setCursor(FANX + 1, 6); lcd.write('%');
897
-      lcd.setCursor(FANX, 7);
899
+      lcd_moveto(FANX, 5); lcd_put_u8str(F("FAN"));
900
+      lcd_moveto(FANX + 1, 6); lcd.write('%');
901
+      lcd_moveto(FANX, 7);
898
       lcd.print(i16tostr3rj(per));
902
       lcd.print(i16tostr3rj(per));
899
 
903
 
900
       if (TERN0(HAS_FAN0, thermalManager.fan_speed[0]) || TERN0(HAS_FAN1, thermalManager.fan_speed[1]) || TERN0(HAS_FAN2, thermalManager.fan_speed[2]))
904
       if (TERN0(HAS_FAN0, thermalManager.fan_speed[0]) || TERN0(HAS_FAN1, thermalManager.fan_speed[1]) || TERN0(HAS_FAN2, thermalManager.fan_speed[2]))
927
 
931
 
928
     void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) {
932
     void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) {
929
       if (!PanelDetected) return;
933
       if (!PanelDetected) return;
930
-      lcd.setCursor((LCD_WIDTH - 14) / 2, row + 1);
934
+      lcd_moveto((LCD_WIDTH - 14) / 2, row + 1);
931
       lcd.write(LCD_STR_THERMOMETER[0]); lcd_put_u8str(F(" E")); lcd.write('1' + extruder); lcd.write(' ');
935
       lcd.write(LCD_STR_THERMOMETER[0]); lcd_put_u8str(F(" E")); lcd.write('1' + extruder); lcd.write(' ');
932
       lcd.print(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); lcd.write(LCD_STR_DEGREE[0]); lcd.write('/');
936
       lcd.print(i16tostr3rj(thermalManager.wholeDegHotend(extruder))); lcd.write(LCD_STR_DEGREE[0]); lcd.write('/');
933
       lcd.print(i16tostr3rj(thermalManager.degTargetHotend(extruder))); lcd.write(LCD_STR_DEGREE[0]);
937
       lcd.print(i16tostr3rj(thermalManager.degTargetHotend(extruder))); lcd.write(LCD_STR_DEGREE[0]);
940
   void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
944
   void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
941
     if (!PanelDetected) return;
945
     if (!PanelDetected) return;
942
     uint8_t n = LCD_WIDTH;
946
     uint8_t n = LCD_WIDTH;
943
-    lcd.setCursor(0, row);
947
+    lcd_moveto(0, row);
944
     if ((style & SS_CENTER) && !valstr) {
948
     if ((style & SS_CENTER) && !valstr) {
945
       int8_t pad = (LCD_WIDTH - utf8_strlen(fstr)) / 2;
949
       int8_t pad = (LCD_WIDTH - utf8_strlen(fstr)) / 2;
946
       while (--pad >= 0) { lcd.write(' '); n--; }
950
       while (--pad >= 0) { lcd.write(' '); n--; }
947
     }
951
     }
948
-    n = lcd_put_u8str_ind(fstr, itemIndex, itemString, n);
952
+    n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, n);
949
     if (valstr) n -= lcd_put_u8str_max(valstr, n);
953
     if (valstr) n -= lcd_put_u8str_max(valstr, n);
950
     for (; n; --n) lcd.write(' ');
954
     for (; n; --n) lcd.write(' ');
951
     lcd.print_line();
955
     lcd.print_line();
954
   // Draw a generic menu item with pre_char (if selected) and post_char
958
   // Draw a generic menu item with pre_char (if selected) and post_char
955
   void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char) {
959
   void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char) {
956
     if (!PanelDetected) return;
960
     if (!PanelDetected) return;
957
-    lcd.setCursor(0, row);
961
+    lcd_moveto(0, row);
958
     lcd.write(sel ? pre_char : ' ');
962
     lcd.write(sel ? pre_char : ' ');
959
-    uint8_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 2);
963
+    uint8_t n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2);
960
     for (; n; --n) lcd.write(' ');
964
     for (; n; --n) lcd.write(' ');
961
     lcd.write(post_char);
965
     lcd.write(post_char);
962
     lcd.print_line();
966
     lcd.print_line();
963
   }
967
   }
964
 
968
 
965
   // Draw a menu item with a (potentially) editable value
969
   // Draw a menu item with a (potentially) editable value
966
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const data, const bool pgm) {
970
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm) {
967
     if (!PanelDetected) return;
971
     if (!PanelDetected) return;
968
-    const uint8_t vlen = data ? (pgm ? utf8_strlen_P(data) : utf8_strlen(data)) : 0;
969
-    lcd.setCursor(0, row);
972
+    const uint8_t vlen = inStr ? (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)) : 0;
973
+    lcd_moveto(0, row);
970
     lcd.write(sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
974
     lcd.write(sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
971
-    uint8_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 2 - vlen);
975
+    uint8_t n = lcd_put_u8str(fstr, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2 - vlen);
972
     if (vlen) {
976
     if (vlen) {
973
       lcd.write(':');
977
       lcd.write(':');
974
       for (; n; --n) lcd.write(' ');
978
       for (; n; --n) lcd.write(' ');
975
-      if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str(data);
979
+      if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str(inStr);
976
     }
980
     }
977
     lcd.print_line();
981
     lcd.print_line();
978
   }
982
   }
983
     if (!PanelDetected) return;
987
     if (!PanelDetected) return;
984
     ui.encoder_direction_normal();
988
     ui.encoder_direction_normal();
985
     const uint8_t y = TERN0(AUTO_BED_LEVELING_UBL, ui.external_control) ? LCD_HEIGHT - 1 : MIDDLE_Y;
989
     const uint8_t y = TERN0(AUTO_BED_LEVELING_UBL, ui.external_control) ? LCD_HEIGHT - 1 : MIDDLE_Y;
986
-    lcd.setCursor(0, y);
990
+    lcd_moveto(0, y);
987
     lcd.write(COLOR_EDIT);
991
     lcd.write(COLOR_EDIT);
988
     lcd_put_u8str(fstr);
992
     lcd_put_u8str(fstr);
989
     if (value) {
993
     if (value) {
990
       lcd.write(':');
994
       lcd.write(':');
991
-      lcd.setCursor((LCD_WIDTH - 1) - (utf8_strlen(value) + 1), y); // Right-justified, padded by spaces
995
+      lcd_moveto((LCD_WIDTH - 1) - (utf8_strlen(value) + 1), y); // Right-justified, padded by spaces
992
       lcd.write(' ');                                               // Overwrite char if value gets shorter
996
       lcd.write(' ');                                               // Overwrite char if value gets shorter
993
       lcd.print(value);
997
       lcd.print(value);
994
       lcd.write(' ');
998
       lcd.write(' ');
1002
     ui.draw_select_screen_prompt(pref, string, suff);
1006
     ui.draw_select_screen_prompt(pref, string, suff);
1003
     lcd.write(COLOR_EDIT);
1007
     lcd.write(COLOR_EDIT);
1004
     if (no) {
1008
     if (no) {
1005
-      lcd.setCursor(0, MIDDLE_Y);
1009
+      lcd_moveto(0, MIDDLE_Y);
1006
       lcd.write(yesno ? ' ' : '['); lcd_put_u8str(no); lcd.write(yesno ? ' ' : ']');
1010
       lcd.write(yesno ? ' ' : '['); lcd_put_u8str(no); lcd.write(yesno ? ' ' : ']');
1007
     }
1011
     }
1008
     if (yes) {
1012
     if (yes) {
1009
-      lcd.setCursor(LCD_WIDTH - utf8_strlen(yes) - 3, MIDDLE_Y);
1013
+      lcd_moveto(LCD_WIDTH - utf8_strlen(yes) - 3, MIDDLE_Y);
1010
       lcd.write(yesno ? '[' : ' '); lcd_put_u8str(yes); lcd.write(yesno ? ']' : ' ');
1014
       lcd.write(yesno ? '[' : ' '); lcd_put_u8str(yes); lcd.write(yesno ? ']' : ' ');
1011
     }
1015
     }
1012
     lcd.print_line();
1016
     lcd.print_line();
1016
 
1020
 
1017
     void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) {
1021
     void MenuItem_sdbase::draw(const bool sel, const uint8_t row, FSTR_P const, CardReader &theCard, const bool isDir) {
1018
       if (!PanelDetected) return;
1022
       if (!PanelDetected) return;
1019
-      lcd.setCursor(0, row);
1023
+      lcd_moveto(0, row);
1020
       lcd.write(sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
1024
       lcd.write(sel ? LCD_STR_ARROW_RIGHT[0] : ' ');
1021
       constexpr uint8_t maxlen = LCD_WIDTH - 2;
1025
       constexpr uint8_t maxlen = LCD_WIDTH - 2;
1022
       uint8_t n = maxlen - lcd_put_u8str_max(ui.scrolled_filename(theCard, maxlen, row, sel), maxlen);
1026
       uint8_t n = maxlen - lcd_put_u8str_max(ui.scrolled_filename(theCard, maxlen, row, sel), maxlen);
1055
       lcd.clear_buffer();
1059
       lcd.clear_buffer();
1056
 
1060
 
1057
       //print only top left corner. All frame with grid points will be printed by panel
1061
       //print only top left corner. All frame with grid points will be printed by panel
1058
-      lcd.setCursor(0, 0);
1062
+      lcd_moveto(0, 0);
1059
       *fb++ = TLC;   //top left corner - marker for plot parameters
1063
       *fb++ = TLC;   //top left corner - marker for plot parameters
1060
       *fb = (GRID_MAX_POINTS_X << 4) + GRID_MAX_POINTS_Y; //set mesh size
1064
       *fb = (GRID_MAX_POINTS_X << 4) + GRID_MAX_POINTS_Y; //set mesh size
1061
 
1065
 
1062
       // Print plot position
1066
       // Print plot position
1063
-      lcd.setCursor(_LCD_W_POS, 0);
1064
-      *fb++ = '(';  lcd.print(i16tostr3left(x_plot));
1065
-      *fb++ = ',';  lcd.print(i16tostr3left(y_plot)); *fb = ')';
1067
+      lcd_moveto(_LCD_W_POS, 0);
1068
+      *fb++ = '('; lcd.print(i16tostr3left(x_plot));
1069
+      *fb++ = ','; lcd.print(i16tostr3left(y_plot)); *fb = ')';
1066
 
1070
 
1067
       // Show all values
1071
       // Show all values
1068
-      lcd.setCursor(_LCD_W_POS, 1); lcd_put_u8str(F("X:"));
1072
+      lcd_moveto(_LCD_W_POS, 1); lcd_put_u8str(F("X:"));
1069
       lcd.print(ftostr52(LOGICAL_X_POSITION(pgm_read_float(&bedlevel._mesh_index_to_xpos[x_plot]))));
1073
       lcd.print(ftostr52(LOGICAL_X_POSITION(pgm_read_float(&bedlevel._mesh_index_to_xpos[x_plot]))));
1070
-      lcd.setCursor(_LCD_W_POS, 2); lcd_put_u8str(F("Y:"));
1074
+      lcd_moveto(_LCD_W_POS, 2); lcd_put_u8str(F("Y:"));
1071
       lcd.print(ftostr52(LOGICAL_Y_POSITION(pgm_read_float(&bedlevel._mesh_index_to_ypos[y_plot]))));
1075
       lcd.print(ftostr52(LOGICAL_Y_POSITION(pgm_read_float(&bedlevel._mesh_index_to_ypos[y_plot]))));
1072
 
1076
 
1073
       // Show the location value
1077
       // Show the location value
1074
-      lcd.setCursor(_LCD_W_POS, 3); lcd_put_u8str(F("Z:"));
1078
+      lcd_moveto(_LCD_W_POS, 3); lcd_put_u8str(F("Z:"));
1075
 
1079
 
1076
       if (!isnan(bedlevel.z_values[x_plot][y_plot]))
1080
       if (!isnan(bedlevel.z_values[x_plot][y_plot]))
1077
         lcd.print(ftostr43sign(bedlevel.z_values[x_plot][y_plot]));
1081
         lcd.print(ftostr43sign(bedlevel.z_values[x_plot][y_plot]));

+ 3
- 3
Marlin/src/lcd/dogm/lcdprint_u8g.cpp View File

28
 
28
 
29
 // return < 0 on error
29
 // return < 0 on error
30
 // return the advanced pixels
30
 // return the advanced pixels
31
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
31
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length) {
32
   if (c < 256) {
32
   if (c < 256) {
33
     u8g.print((char)c);
33
     u8g.print((char)c);
34
     return u8g_GetFontBBXWidth(u8g.getU8g());
34
     return u8g_GetFontBBXWidth(u8g.getU8g());
39
   return ret;
39
   return ret;
40
 }
40
 }
41
 
41
 
42
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
42
+int lcd_put_u8str_max(const char * utf8_str, const pixel_len_t max_length) {
43
   u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
43
   u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
44
            ret = uxg_DrawUtf8Str(u8g.getU8g(), x, y, utf8_str, max_length);
44
            ret = uxg_DrawUtf8Str(u8g.getU8g(), x, y, utf8_str, max_length);
45
   u8g.setPrintPos(x + ret, y);
45
   u8g.setPrintPos(x + ret, y);
46
   return ret;
46
   return ret;
47
 }
47
 }
48
 
48
 
49
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length) {
49
+int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) {
50
   u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
50
   u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
51
            ret = uxg_DrawUtf8StrP(u8g.getU8g(), x, y, utf8_pstr, max_length);
51
            ret = uxg_DrawUtf8StrP(u8g.getU8g(), x, y, utf8_pstr, max_length);
52
   u8g.setPrintPos(x + ret, y);
52
   u8g.setPrintPos(x + ret, y);

+ 19
- 19
Marlin/src/lcd/dogm/marlinui_DOGM.cpp View File

330
 // The kill screen is displayed for unrecoverable conditions
330
 // The kill screen is displayed for unrecoverable conditions
331
 void MarlinUI::draw_kill_screen() {
331
 void MarlinUI::draw_kill_screen() {
332
   TERN_(LIGHTWEIGHT_UI, ST7920_Lite_Status_Screen::clear_text_buffer());
332
   TERN_(LIGHTWEIGHT_UI, ST7920_Lite_Status_Screen::clear_text_buffer());
333
-  const u8g_uint_t h4 = u8g.getHeight() / 4;
333
+  const u8g_uint_t x = 0, h4 = u8g.getHeight() / 4;
334
   u8g.firstPage();
334
   u8g.firstPage();
335
   do {
335
   do {
336
     set_font(FONT_MENU);
336
     set_font(FONT_MENU);
337
-    lcd_put_u8str(0, h4 * 1, status_message);
338
-    lcd_put_u8str(0, h4 * 2, GET_TEXT_F(MSG_HALTED));
339
-    lcd_put_u8str(0, h4 * 3, GET_TEXT_F(MSG_PLEASE_RESET));
337
+    lcd_put_u8str(x, h4 * 1, status_message);
338
+    lcd_put_u8str(x, h4 * 2, GET_TEXT_F(MSG_HALTED));
339
+    lcd_put_u8str(x, h4 * 3, GET_TEXT_F(MSG_PLEASE_RESET));
340
   } while (u8g.nextPage());
340
   } while (u8g.nextPage());
341
 }
341
 }
342
 
342
 
412
   }
412
   }
413
 
413
 
414
   // Draw a static line of text in the same idiom as a menu item
414
   // Draw a static line of text in the same idiom as a menu item
415
-  void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
415
+  void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
416
 
416
 
417
     if (mark_as_selected(row, style & SS_INVERT)) {
417
     if (mark_as_selected(row, style & SS_INVERT)) {
418
       pixel_len_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
418
       pixel_len_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
419
 
419
 
420
-      const int plen = fstr ? calculateWidth(FTOP(fstr)) : 0,
420
+      const int plen = ftpl ? calculateWidth(ftpl) : 0,
421
                 vlen = vstr ? utf8_strlen(vstr) : 0;
421
                 vlen = vstr ? utf8_strlen(vstr) : 0;
422
       if (style & SS_CENTER) {
422
       if (style & SS_CENTER) {
423
         int pad = (LCD_PIXEL_WIDTH - plen - vlen * MENU_FONT_WIDTH) / MENU_FONT_WIDTH / 2;
423
         int pad = (LCD_PIXEL_WIDTH - plen - vlen * MENU_FONT_WIDTH) / MENU_FONT_WIDTH / 2;
424
         while (--pad >= 0) n -= lcd_put_wchar(' ');
424
         while (--pad >= 0) n -= lcd_put_wchar(' ');
425
       }
425
       }
426
 
426
 
427
-      if (plen) n = lcd_put_u8str_ind(fstr, itemIndex, itemString, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
427
+      if (plen) n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
428
       if (vlen) n -= lcd_put_u8str_max(vstr, n);
428
       if (vlen) n -= lcd_put_u8str_max(vstr, n);
429
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
429
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
430
     }
430
     }
431
   }
431
   }
432
 
432
 
433
   // Draw a generic menu item
433
   // Draw a generic menu item
434
-  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char, const char post_char) {
434
+  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char, const char post_char) {
435
     if (mark_as_selected(row, sel)) {
435
     if (mark_as_selected(row, sel)) {
436
-      pixel_len_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
436
+      pixel_len_t n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
437
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
437
       while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
438
       lcd_put_wchar(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH), row_y2, post_char);
438
       lcd_put_wchar(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH), row_y2, post_char);
439
       lcd_put_wchar(' ');
439
       lcd_put_wchar(' ');
441
   }
441
   }
442
 
442
 
443
   // Draw a menu item with an editable value
443
   // Draw a menu item with an editable value
444
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm) {
444
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char * const inStr, const bool pgm) {
445
     if (mark_as_selected(row, sel)) {
445
     if (mark_as_selected(row, sel)) {
446
-      const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen((char*)inStr)),
447
-                    pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), inStr) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)inStr));
446
+      const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen(inStr)),
447
+                    pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), inStr) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), inStr));
448
       const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
448
       const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
449
 
449
 
450
-      pixel_len_t n = lcd_put_u8str_ind(fstr, itemIndex, itemString, LCD_WIDTH - 2 - vallen * prop) * (MENU_FONT_WIDTH);
450
+      pixel_len_t n = lcd_put_u8str(ftpl, itemIndex, itemStringC, itemStringF, LCD_WIDTH - 2 - vallen * prop) * (MENU_FONT_WIDTH);
451
       if (vallen) {
451
       if (vallen) {
452
         lcd_put_wchar(':');
452
         lcd_put_wchar(':');
453
         while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
453
         while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
454
         lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
454
         lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
455
-        if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str((char*)inStr);
455
+        if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str(inStr);
456
       }
456
       }
457
     }
457
     }
458
   }
458
   }
459
 
459
 
460
-  void MenuEditItemBase::draw_edit_screen(FSTR_P const fstr, const char * const value/*=nullptr*/) {
460
+  void MenuEditItemBase::draw_edit_screen(FSTR_P const ftpl, const char * const value/*=nullptr*/) {
461
     ui.encoder_direction_normal();
461
     ui.encoder_direction_normal();
462
 
462
 
463
     const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
463
     const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
464
-    const u8g_uint_t labellen = utf8_strlen(fstr), vallen = utf8_strlen(value);
464
+    const u8g_uint_t labellen = utf8_strlen(ftpl), vallen = utf8_strlen(value);
465
     bool extra_row = labellen * prop > LCD_WIDTH - 2 - vallen * prop;
465
     bool extra_row = labellen * prop > LCD_WIDTH - 2 - vallen * prop;
466
 
466
 
467
     #if ENABLED(USE_BIG_EDIT_FONT)
467
     #if ENABLED(USE_BIG_EDIT_FONT)
490
 
490
 
491
     // Assume the label is alpha-numeric (with a descender)
491
     // Assume the label is alpha-numeric (with a descender)
492
     bool onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline + EDIT_FONT_DESCENT);
492
     bool onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline + EDIT_FONT_DESCENT);
493
-    if (onpage) lcd_put_u8str_ind(0, baseline, fstr, itemIndex, itemString);
493
+    if (onpage) lcd_put_u8str(0, baseline, ftpl, itemIndex, itemStringC, itemStringF);
494
 
494
 
495
     // If a value is included, print a colon, then print the value right-justified
495
     // If a value is included, print a colon, then print the value right-justified
496
     if (value) {
496
     if (value) {
522
     if (inv) u8g.setColorIndex(1);
522
     if (inv) u8g.setColorIndex(1);
523
   }
523
   }
524
 
524
 
525
-  void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const pref, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) {
526
-    ui.draw_select_screen_prompt(pref, string, suff);
525
+  void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, const bool yesno, FSTR_P const fpre, const char * const string/*=nullptr*/, FSTR_P const suff/*=nullptr*/) {
526
+    ui.draw_select_screen_prompt(fpre, string, suff);
527
     if (no)  draw_boxed_string(1, LCD_HEIGHT - 1, no, !yesno);
527
     if (no)  draw_boxed_string(1, LCD_HEIGHT - 1, no, !yesno);
528
     if (yes) draw_boxed_string(LCD_WIDTH - (utf8_strlen(yes) * (USE_WIDE_GLYPH ? 2 : 1) + 1), LCD_HEIGHT - 1, yes, yesno);
528
     if (yes) draw_boxed_string(LCD_WIDTH - (utf8_strlen(yes) * (USE_WIDE_GLYPH ? 2 : 1) + 1), LCD_HEIGHT - 1, yes, yesno);
529
   }
529
   }

+ 1
- 1
Marlin/src/lcd/dogm/u8g_fontutf8.cpp View File

104
  * Get the screen pixel width of a ROM UTF-8 string
104
  * Get the screen pixel width of a ROM UTF-8 string
105
  */
105
  */
106
 static void fontgroup_drawstring(font_group_t *group, const font_t *fnt_default, const char *utf8_msg, read_byte_cb_t cb_read_byte, void * userdata, fontgroup_cb_draw_t cb_draw_ram) {
106
 static void fontgroup_drawstring(font_group_t *group, const font_t *fnt_default, const char *utf8_msg, read_byte_cb_t cb_read_byte, void * userdata, fontgroup_cb_draw_t cb_draw_ram) {
107
-  uint8_t *p = (uint8_t*)utf8_msg;
107
+  const uint8_t *p = (uint8_t*)utf8_msg;
108
   for (;;) {
108
   for (;;) {
109
     wchar_t val = 0;
109
     wchar_t val = 0;
110
     p = get_utf8_value_cb(p, cb_read_byte, &val);
110
     p = get_utf8_value_cb(p, cb_read_byte, &val);

+ 3
- 3
Marlin/src/lcd/dogm/u8g_fontutf8.h View File

26
 
26
 
27
 int uxg_SetUtf8Fonts(const uxg_fontinfo_t * fntinfo, int number); // fntinfo is type of PROGMEM
27
 int uxg_SetUtf8Fonts(const uxg_fontinfo_t * fntinfo, int number); // fntinfo is type of PROGMEM
28
 
28
 
29
-unsigned int uxg_DrawWchar(u8g_t *pu8g, unsigned int x, unsigned int y, wchar_t ch, pixel_len_t max_length);
29
+unsigned int uxg_DrawWchar(u8g_t *pu8g, unsigned int x, unsigned int y, wchar_t ch, const pixel_len_t max_length);
30
 
30
 
31
-unsigned int uxg_DrawUtf8Str(u8g_t *pu8g, unsigned int x, unsigned int y, const char *utf8_msg, pixel_len_t max_length);
32
-unsigned int uxg_DrawUtf8StrP(u8g_t *pu8g, unsigned int x, unsigned int y, PGM_P utf8_msg, pixel_len_t max_length);
31
+unsigned int uxg_DrawUtf8Str(u8g_t *pu8g, unsigned int x, unsigned int y, const char *utf8_msg, const pixel_len_t max_length);
32
+unsigned int uxg_DrawUtf8StrP(u8g_t *pu8g, unsigned int x, unsigned int y, PGM_P utf8_msg, const pixel_len_t max_length);
33
 
33
 
34
 int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg);
34
 int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg);
35
 int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg);
35
 int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg);

+ 5
- 5
Marlin/src/lcd/e3v2/jyersui/dwin.cpp View File

4280
               card.startOrResumeFilePrinting();
4280
               card.startOrResumeFilePrinting();
4281
               TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
4281
               TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
4282
             #else
4282
             #else
4283
-              char cmnd[20];
4283
+              char cmd[20];
4284
               #if HAS_HEATED_BED
4284
               #if HAS_HEATED_BED
4285
-                cmnd[sprintf_P(cmnd, PSTR("M140 S%i"), pausebed)] = '\0';
4286
-                gcode.process_subcommands_now(cmnd);
4285
+                sprintf_P(cmd, PSTR("M140 S%i"), pausebed);
4286
+                gcode.process_subcommands_now(cmd);
4287
               #endif
4287
               #endif
4288
               #if HAS_EXTRUDERS
4288
               #if HAS_EXTRUDERS
4289
-                cmnd[sprintf_P(cmnd, PSTR("M109 S%i"), pausetemp)] = '\0';
4290
-                gcode.process_subcommands_now(cmnd);
4289
+                sprintf_P(cmd, PSTR("M109 S%i"), pausetemp);
4290
+                gcode.process_subcommands_now(cmd);
4291
               #endif
4291
               #endif
4292
               TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan);
4292
               TERN_(HAS_FAN, thermalManager.fan_speed[0] = pausefan);
4293
               planner.synchronize();
4293
               planner.synchronize();

+ 31
- 29
Marlin/src/lcd/e3v2/marlinui/dwin_string.cpp View File

27
 #include "dwin_string.h"
27
 #include "dwin_string.h"
28
 //#include "../../fontutils.h"
28
 //#include "../../fontutils.h"
29
 
29
 
30
-uint8_t DWIN_String::data[];
30
+char DWIN_String::data[];
31
 uint16_t DWIN_String::span;
31
 uint16_t DWIN_String::span;
32
-uint8_t DWIN_String::len;
32
+uint8_t DWIN_String::length;
33
 
33
 
34
 void DWIN_String::set() {
34
 void DWIN_String::set() {
35
   //*data = 0x00;
35
   //*data = 0x00;
36
   memset(data, 0x00, sizeof(data));
36
   memset(data, 0x00, sizeof(data));
37
   span = 0;
37
   span = 0;
38
-  len = 0;
38
+  length = 0;
39
 }
39
 }
40
 
40
 
41
-uint8_t read_byte(uint8_t *byte) { return *byte; }
41
+uint8_t read_byte(const uint8_t *byte) { return *byte; }
42
 
42
 
43
 /**
43
 /**
44
  * Add a string, applying substitutions for the following characters:
44
  * Add a string, applying substitutions for the following characters:
45
  *
45
  *
46
- *   $ displays the clipped C-string given by the inStr argument
46
+ *   $ displays the clipped string given by fstr or cstr
47
  *   = displays  '0'....'10' for indexes 0 - 10
47
  *   = displays  '0'....'10' for indexes 0 - 10
48
  *   ~ displays  '1'....'11' for indexes 0 - 10
48
  *   ~ displays  '1'....'11' for indexes 0 - 10
49
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
49
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
50
  *   @ displays an axis name such as XYZUVW, or E for an extruder
50
  *   @ displays an axis name such as XYZUVW, or E for an extruder
51
  */
51
  */
52
-void DWIN_String::add(uint8_t *string, const int8_t index, uint8_t *inStr/*=nullptr*/) {
52
+void DWIN_String::add(const char *tpl, const int8_t index, const char *cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/) {
53
   wchar_t wchar;
53
   wchar_t wchar;
54
 
54
 
55
-  while (*string) {
56
-    string = get_utf8_value_cb(string, read_byte, &wchar);
55
+  while (*tpl) {
56
+    tpl = get_utf8_value_cb(tpl, read_byte, &wchar);
57
     if (wchar > 255) wchar |= 0x0080;
57
     if (wchar > 255) wchar |= 0x0080;
58
-    uint8_t ch = uint8_t(wchar & 0x00FF);
58
+    const uint8_t ch = uint8_t(wchar & 0x00FF);
59
 
59
 
60
     if (ch == '=' || ch == '~' || ch == '*') {
60
     if (ch == '=' || ch == '~' || ch == '*') {
61
       if (index >= 0) {
61
       if (index >= 0) {
65
         add_character('0' + inum);
65
         add_character('0' + inum);
66
       }
66
       }
67
       else
67
       else
68
-        add(index == -2 ? GET_TEXT(MSG_CHAMBER) : GET_TEXT(MSG_BED));
68
+        add(index == -2 ? GET_TEXT_F(MSG_CHAMBER) : GET_TEXT_F(MSG_BED));
69
     }
69
     }
70
-    else if (ch == '$' && inStr)
71
-      add(inStr);
70
+    else if (ch == '$' && fstr)
71
+      add(fstr);
72
+    else if (ch == '$' && cstr)
73
+      add(cstr);
72
     else if (ch == '@')
74
     else if (ch == '@')
73
       add_character(AXIS_CHAR(index));
75
       add_character(AXIS_CHAR(index));
74
     else
76
     else
77
   eol();
79
   eol();
78
 }
80
 }
79
 
81
 
80
-void DWIN_String::add(uint8_t *string, uint8_t max_len) {
82
+void DWIN_String::add(const char *cstr, uint8_t max_len/*=MAX_STRING_LENGTH*/) {
81
   wchar_t wchar;
83
   wchar_t wchar;
82
-  while (*string && max_len) {
83
-    string = get_utf8_value_cb(string, read_byte, &wchar);
84
+  while (*cstr && max_len) {
85
+    cstr = get_utf8_value_cb(cstr, read_byte, &wchar);
84
     /*
86
     /*
85
     if (wchar > 255) wchar |= 0x0080;
87
     if (wchar > 255) wchar |= 0x0080;
86
     uint8_t ch = uint8_t(wchar & 0x00FF);
88
     uint8_t ch = uint8_t(wchar & 0x00FF);
92
   eol();
94
   eol();
93
 }
95
 }
94
 
96
 
95
-void DWIN_String::add(wchar_t character) {
97
+void DWIN_String::add(const wchar_t character) {
96
   int ret;
98
   int ret;
97
   size_t idx = 0;
99
   size_t idx = 0;
98
   dwin_charmap_t pinval;
100
   dwin_charmap_t pinval;
127
   if (str[1]) add_character(str[1]);
129
   if (str[1]) add_character(str[1]);
128
 }
130
 }
129
 
131
 
130
-void DWIN_String::add_character(const uint8_t character) {
131
-  if (len < MAX_STRING_LENGTH) {
132
-    data[len] = character;
133
-    len++;
132
+void DWIN_String::add_character(const char character) {
133
+  if (length < MAX_STRING_LENGTH) {
134
+    data[length] = character;
135
+    length++;
134
     //span += glyph(character)->DWidth;
136
     //span += glyph(character)->DWidth;
135
   }
137
   }
136
 }
138
 }
137
 
139
 
138
-void DWIN_String::rtrim(const uint8_t character) {
139
-  while (len) {
140
-    if (data[len - 1] == 0x20 || data[len - 1] == character) {
141
-      len--;
140
+void DWIN_String::rtrim(const char character) {
141
+  while (length) {
142
+    if (data[length - 1] == 0x20 || data[length - 1] == character) {
143
+      length--;
142
       //span -= glyph(data[length])->DWidth;
144
       //span -= glyph(data[length])->DWidth;
143
       eol();
145
       eol();
144
     }
146
     }
147
   }
149
   }
148
 }
150
 }
149
 
151
 
150
-void DWIN_String::ltrim(const uint8_t character) {
152
+void DWIN_String::ltrim(const char character) {
151
   uint16_t i, j;
153
   uint16_t i, j;
152
-  for (i = 0; (i < len) && (data[i] == 0x20 || data[i] == character); i++) {
154
+  for (i = 0; (i < length) && (data[i] == 0x20 || data[i] == character); i++) {
153
     //span -= glyph(data[i])->DWidth;
155
     //span -= glyph(data[i])->DWidth;
154
   }
156
   }
155
   if (i == 0) return;
157
   if (i == 0) return;
156
-  for (j = 0; i < len; data[j++] = data[i++]);
157
-  len = j;
158
+  for (j = 0; i < length; data[j++] = data[i++]);
159
+  length = j;
158
   eol();
160
   eol();
159
 }
161
 }
160
 
162
 
161
-void DWIN_String::trim(const uint8_t character) {
163
+void DWIN_String::trim(const char character) {
162
   rtrim(character);
164
   rtrim(character);
163
   ltrim(character);
165
   ltrim(character);
164
 }
166
 }

+ 66
- 27
Marlin/src/lcd/e3v2/marlinui/dwin_string.h View File

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
+// TODO: Make AVR-compatible with separate ROM / RAM string methods
25
+
24
 #include "../../fontutils.h"
26
 #include "../../fontutils.h"
25
 #include "../../marlinui.h"
27
 #include "../../marlinui.h"
26
 
28
 
41
     //static glyph_t *glyphs[256];
43
     //static glyph_t *glyphs[256];
42
     //static font_t *font_header;
44
     //static font_t *font_header;
43
 
45
 
44
-    static uint8_t data[MAX_STRING_LENGTH + 1];
46
+    static char data[MAX_STRING_LENGTH + 1];
45
     static uint16_t span;   // in pixels
47
     static uint16_t span;   // in pixels
46
-    static uint8_t len;  // in characters
47
 
48
 
48
-    static void add_character(const uint8_t character);
49
-    static void eol() { data[len] = 0x00; }
49
+    static void add_character(const char character);
50
+    static void eol() { data[length] = 0x00; }
50
 
51
 
51
   public:
52
   public:
53
+    static uint8_t length;  // in characters
52
     //static void set_font(const uint8_t *font);
54
     //static void set_font(const uint8_t *font);
53
     //static void add_glyphs(const uint8_t *font);
55
     //static void add_glyphs(const uint8_t *font);
54
 
56
 
57
     //static glyph_t *glyph(uint8_t character) { return glyphs[character] ?: glyphs[0x3F]; }  /* Use '?' for unknown glyphs */
59
     //static glyph_t *glyph(uint8_t character) { return glyphs[character] ?: glyphs[0x3F]; }  /* Use '?' for unknown glyphs */
58
     //static glyph_t *glyph(uint8_t *character) { return glyph(*character); }
60
     //static glyph_t *glyph(uint8_t *character) { return glyph(*character); }
59
 
61
 
62
+    /**
63
+     * @brief Set the string empty
64
+     */
60
     static void set();
65
     static void set();
61
-    //static void add(uint8_t character) { add_character(character); eol(); }
62
-    static void add(wchar_t character);
63
-    static void add(uint8_t *string, uint8_t max_len=MAX_STRING_LENGTH);
64
-    static void add(uint8_t *string, const int8_t index, uint8_t *inStr=nullptr);
65
-    static void set(uint8_t *string)   { set(); add(string); }
66
-    static void set(wchar_t character) { set(); add(character); }
67
-    static void set(uint8_t *string, int8_t index, const char *inStr=nullptr) { set(); add(string, index, (uint8_t *)inStr); }
68
-    static void set(const char *string) { set((uint8_t *)string); }
69
-    static void set(const char *string, int8_t index, const char *inStr=nullptr) { set((uint8_t *)string, index, inStr); }
70
-    static void add(const char *string) { add((uint8_t *)string); }
71
 
66
 
72
-    static void add(FSTR_P const string, uint8_t max_len=MAX_STRING_LENGTH) { add((uint8_t *)FTOP(string), max_len); }
73
-    static void add(FSTR_P const string, int8_t index, uint8_t *inStr=nullptr) { add((uint8_t *)FTOP(string), index, inStr); }
74
-    static void set(FSTR_P const string) { set((uint8_t *)FTOP(string)); }
75
-    static void set(FSTR_P const string, int8_t index, const char *inStr=nullptr) { set((uint8_t *)FTOP(string), index, inStr); }
76
-    static void add(FSTR_P const string) { add((uint8_t *)FTOP(string)); }
67
+    //static void add(const char character) { add_character(character); eol(); }
77
 
68
 
78
-    static void trim(const uint8_t character=0x20);
79
-    static void rtrim(const uint8_t character=0x20);
80
-    static void ltrim(const uint8_t character=0x20);
81
-
82
-    static void truncate(uint8_t maxlen) { if (len > maxlen) { len = maxlen; eol(); } }
69
+    /**
70
+     * @brief Append a UTF-8 character
71
+     *
72
+     * @param character The UTF-8 character
73
+     */
74
+    static void add(wchar_t character);
75
+    static void set(wchar_t character) { set(); add(character); }
83
 
76
 
84
-    static uint8_t length() { return len; }
77
+    /**
78
+     * @brief Append / Set C-string
79
+     *
80
+     * @param cstr The string
81
+     * @param max_len Character limit
82
+     */
83
+    static void add(const char *cstr, uint8_t max_len=MAX_STRING_LENGTH);
84
+    static void set(const char *cstr) { set(); add(cstr); }
85
+
86
+    /**
87
+     * @brief Append / Set F-string
88
+     *
89
+     * @param fstr The string
90
+     * @param max_len Character limit
91
+     */
92
+    static void add(FSTR_P const fstr, uint8_t max_len=MAX_STRING_LENGTH) { add(FTOP(fstr), max_len); }
93
+    static void set(FSTR_P const fstr) { set(FTOP(fstr)); }
94
+
95
+    /**
96
+     * @brief Append / Set C-string with optional substitution
97
+     *
98
+     * @param tpl A string with optional substitution
99
+     * @param index An index
100
+     * @param cstr An SRAM C-string to use for $ substitution
101
+     * @param fstr A ROM F-string to use for $ substitution
102
+     */
103
+    static void add(const char *tpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr);
104
+    static void set(const char *tpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { set(); add(tpl, index, cstr, fstr); }
105
+
106
+    /**
107
+     * @brief Append / Set F-string with optional substitution
108
+     *
109
+     * @param ftpl A ROM F-string with optional substitution
110
+     * @param index An index
111
+     * @param cstr An SRAM C-string to use for $ substitution
112
+     * @param fstr A ROM F-string to use for $ substitution
113
+     */
114
+    static void add(FSTR_P const ftpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { add(FTOP(ftpl), index, cstr, fstr); }
115
+    static void set(FSTR_P const ftpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { set(); add(ftpl, index, cstr, fstr); }
116
+
117
+    // Common string ops
118
+    static void trim(const char character=' ');
119
+    static void rtrim(const char character=' ');
120
+    static void ltrim(const char character=' ');
121
+    static void truncate(const uint8_t maxlen) { if (length > maxlen) { length = maxlen; eol(); } }
122
+
123
+    // Accessors
124
+    static char *string() { return data; }
85
     static uint16_t width() { return span; }
125
     static uint16_t width() { return span; }
86
-    static uint8_t *string() { return data; }
87
-    static uint16_t center(uint16_t width) { return span > width ? 0 : (width - span) / 2; }
126
+    static uint16_t center(const uint16_t width) { return span > width ? 0 : (width - span) / 2; }
88
 };
127
 };
89
 
128
 
90
 int dwin_charmap_compare(dwin_charmap_t *v1, dwin_charmap_t *v2);
129
 int dwin_charmap_compare(dwin_charmap_t *v1, dwin_charmap_t *v2);

+ 20
- 21
Marlin/src/lcd/e3v2/marlinui/lcdprint_dwin.cpp View File

56
 }
56
 }
57
 
57
 
58
 int lcd_put_dwin_string() {
58
 int lcd_put_dwin_string() {
59
-  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
60
-  lcd_advance_cursor(dwin_string.length());
61
-  return dwin_string.length();
59
+  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string());
60
+  lcd_advance_cursor(dwin_string.length);
61
+  return dwin_string.length;
62
 }
62
 }
63
 
63
 
64
 // return < 0 on error
64
 // return < 0 on error
65
 // return the advanced cols
65
 // return the advanced cols
66
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
66
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length) {
67
   dwin_string.set(c);
67
   dwin_string.set(c);
68
   dwin_string.truncate(max_length);
68
   dwin_string.truncate(max_length);
69
   // Draw the char(s) at the cursor and advance the cursor
69
   // Draw the char(s) at the cursor and advance the cursor
70
-  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
71
-  lcd_advance_cursor(dwin_string.length());
72
-  return dwin_string.length();
70
+  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string());
71
+  lcd_advance_cursor(dwin_string.length);
72
+  return dwin_string.length;
73
 }
73
 }
74
 
74
 
75
 /**
75
 /**
83
  *
83
  *
84
  * Draw a UTF-8 string
84
  * Draw a UTF-8 string
85
  */
85
  */
86
-static int lcd_put_u8str_max_cb(const char * utf8_str, uint8_t (*cb_read_byte)(uint8_t * str), pixel_len_t max_length) {
87
-  uint8_t *p = (uint8_t *)utf8_str;
86
+static int lcd_put_u8str_max_cb(const char * utf8_str, read_byte_cb_t cb_read_byte, const pixel_len_t max_length) {
87
+  const uint8_t *p = (uint8_t *)utf8_str;
88
   dwin_string.set();
88
   dwin_string.set();
89
-  while (dwin_string.length() < max_length) {
89
+  while (dwin_string.length < max_length) {
90
     wchar_t ch = 0;
90
     wchar_t ch = 0;
91
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
91
     p = get_utf8_value_cb(p, cb_read_byte, &ch);
92
     if (!ch) break;
92
     if (!ch) break;
93
     dwin_string.add(ch);
93
     dwin_string.add(ch);
94
   }
94
   }
95
-  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
96
-  lcd_advance_cursor(dwin_string.length());
97
-  return dwin_string.length();
95
+  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string());
96
+  lcd_advance_cursor(dwin_string.length);
97
+  return dwin_string.length;
98
 }
98
 }
99
 
99
 
100
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
100
+int lcd_put_u8str_max(const char * utf8_str, const pixel_len_t max_length) {
101
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
101
   return lcd_put_u8str_max_cb(utf8_str, read_byte_ram, max_length);
102
 }
102
 }
103
 
103
 
104
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length) {
104
+int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) {
105
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
105
   return lcd_put_u8str_max_cb(utf8_pstr, read_byte_rom, max_length);
106
 }
106
 }
107
 
107
 
108
-lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const inStr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
109
-  dwin_string.set();
110
-  dwin_string.add((uint8_t*)pstr, ind, (uint8_t*)inStr);
108
+lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char * const cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
109
+  dwin_string.set(ptpl, ind, cstr, fstr);
111
   dwin_string.truncate(maxlen);
110
   dwin_string.truncate(maxlen);
112
-  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, (char*)dwin_string.string());
113
-  lcd_advance_cursor(dwin_string.length());
114
-  return dwin_string.length();
111
+  DWIN_Draw_String(dwin_font.solid, dwin_font.index, dwin_font.fg, dwin_font.bg, cursor.x, cursor.y, dwin_string.string());
112
+  lcd_advance_cursor(dwin_string.length);
113
+  return dwin_string.length;
115
 }
114
 }
116
 
115
 
117
 #if ENABLED(DEBUG_LCDPRINT)
116
 #if ENABLED(DEBUG_LCDPRINT)

+ 18
- 20
Marlin/src/lcd/e3v2/marlinui/ui_common.cpp View File

110
       #define VERSION_Y   84
110
       #define VERSION_Y   84
111
     #endif
111
     #endif
112
 
112
 
113
-    DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length() * 10) / 2, VERSION_Y, S(dwin_string.string()));
113
+    DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string()));
114
     TERN_(SHOW_CUSTOM_BOOTSCREEN, safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT));
114
     TERN_(SHOW_CUSTOM_BOOTSCREEN, safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT));
115
     clear_lcd();
115
     clear_lcd();
116
 
116
 
127
       DWIN_ICON_Show(BOOT_ICON, ICON_MarlinURL,  INFO_CENTER - 100 / 2, 152);
127
       DWIN_ICON_Show(BOOT_ICON, ICON_MarlinURL,  INFO_CENTER - 100 / 2, 152);
128
       DWIN_ICON_Show(BOOT_ICON, ICON_Copyright,  INFO_CENTER - 126 / 2, 200);
128
       DWIN_ICON_Show(BOOT_ICON, ICON_Copyright,  INFO_CENTER - 126 / 2, 200);
129
     #endif
129
     #endif
130
-    DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length() * 10) / 2, VERSION_Y, S(dwin_string.string()));
130
+    DWIN_Draw_String(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, VERSION_Y, S(dwin_string.string()));
131
     DWIN_UpdateLCD();
131
     DWIN_UpdateLCD();
132
   }
132
   }
133
 
133
 
284
       else
284
       else
285
         dwin_string.add(PSTR("    "));
285
         dwin_string.add(PSTR("    "));
286
 
286
 
287
-      lcd_moveto(LCD_WIDTH - dwin_string.length(), row);
287
+      lcd_moveto(LCD_WIDTH - dwin_string.length, row);
288
       lcd_put_dwin_string();
288
       lcd_put_dwin_string();
289
     }
289
     }
290
 
290
 
311
 
311
 
312
   // Draw a static line of text in the same idiom as a menu item
312
   // Draw a static line of text in the same idiom as a menu item
313
 
313
 
314
-  void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
314
+  void MenuItem_static::draw(const uint8_t row, FSTR_P const ftpl, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
315
     // Call mark_as_selected to draw a bigger selection box
315
     // Call mark_as_selected to draw a bigger selection box
316
     // and draw the text without a background
316
     // and draw the text without a background
317
     if (mark_as_selected(row, (bool)(style & SS_INVERT), true)) {
317
     if (mark_as_selected(row, (bool)(style & SS_INVERT), true)) {
320
       dwin_font.fg = Color_White;
320
       dwin_font.fg = Color_White;
321
 
321
 
322
       dwin_string.set();
322
       dwin_string.set();
323
-      const int8_t plen = fstr ? utf8_strlen(fstr) : 0,
323
+      const int8_t plen = ftpl ? utf8_strlen(ftpl) : 0,
324
                    vlen = vstr ? utf8_strlen(vstr) : 0;
324
                    vlen = vstr ? utf8_strlen(vstr) : 0;
325
       if (style & SS_CENTER) {
325
       if (style & SS_CENTER) {
326
         int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2;
326
         int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2;
327
         while (--pad) dwin_string.add(' ');
327
         while (--pad) dwin_string.add(' ');
328
       }
328
       }
329
 
329
 
330
-      if (plen) dwin_string.add((uint8_t*)FTOP(fstr), itemIndex, (uint8_t*)FTOP(itemString));
331
-      if (vlen) dwin_string.add((uint8_t*)vstr);
330
+      if (plen) dwin_string.add(ftpl, itemIndex, itemStringC, itemStringF);
331
+      if (vlen) dwin_string.add(vstr);
332
       if (style & SS_CENTER) {
332
       if (style & SS_CENTER) {
333
         int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2;
333
         int8_t pad = (LCD_WIDTH - 1 - plen - vlen) / 2;
334
         while (--pad) dwin_string.add(' ');
334
         while (--pad) dwin_string.add(' ');
340
   }
340
   }
341
 
341
 
342
   // Draw a generic menu item
342
   // Draw a generic menu item
343
-  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char, const char post_char) {
343
+  void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char, const char post_char) {
344
     if (mark_as_selected(row, sel)) {
344
     if (mark_as_selected(row, sel)) {
345
       ui.set_font(DWIN_FONT_MENU);
345
       ui.set_font(DWIN_FONT_MENU);
346
       dwin_font.solid = false;
346
       dwin_font.solid = false;
347
       dwin_font.fg = Color_White;
347
       dwin_font.fg = Color_White;
348
 
348
 
349
-      dwin_string.set(fstr, itemIndex, FTOP(itemString));
349
+      dwin_string.set(ftpl, itemIndex, itemStringC, itemStringF);
350
 
350
 
351
-      pixel_len_t n = LCD_WIDTH - 1 - dwin_string.length();
351
+      pixel_len_t n = LCD_WIDTH - 1 - dwin_string.length;
352
       while (--n > 1) dwin_string.add(' ');
352
       while (--n > 1) dwin_string.add(' ');
353
 
353
 
354
       dwin_string.add(post_char);
354
       dwin_string.add(post_char);
361
   //
361
   //
362
   // Draw a menu item with an editable value
362
   // Draw a menu item with an editable value
363
   //
363
   //
364
-  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm) {
364
+  void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char * const inStr, const bool pgm) {
365
     if (mark_as_selected(row, sel)) {
365
     if (mark_as_selected(row, sel)) {
366
       ui.set_font(DWIN_FONT_MENU);
366
       ui.set_font(DWIN_FONT_MENU);
367
       dwin_font.solid = false;
367
       dwin_font.solid = false;
369
 
369
 
370
       const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen(S(inStr)));
370
       const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen(S(inStr)));
371
 
371
 
372
-      dwin_string.set(fstr, itemIndex, FTOP(itemString));
372
+      dwin_string.set(ftpl, itemIndex, itemStringC, itemStringF);
373
       if (vallen) dwin_string.add(':');
373
       if (vallen) dwin_string.add(':');
374
 
374
 
375
       lcd_moveto(1, row);
375
       lcd_moveto(1, row);
392
 
392
 
393
     const dwin_coord_t labellen = utf8_strlen(fstr), vallen = utf8_strlen(value);
393
     const dwin_coord_t labellen = utf8_strlen(fstr), vallen = utf8_strlen(value);
394
 
394
 
395
-    dwin_string.set();
396
-    dwin_string.add((uint8_t*)FTOP(fstr), itemIndex);
395
+    dwin_string.set(FTOP(fstr), itemIndex);
397
     if (vallen) dwin_string.add(':');  // If a value is included, add a colon
396
     if (vallen) dwin_string.add(':');  // If a value is included, add a colon
398
 
397
 
399
     // Assume the label is alpha-numeric (with a descender)
398
     // Assume the label is alpha-numeric (with a descender)
406
 
405
 
407
     // If a value is included, print the value in larger text below the label
406
     // If a value is included, print the value in larger text below the label
408
     if (vallen) {
407
     if (vallen) {
409
-      dwin_string.set();
410
-      dwin_string.add(value);
408
+      dwin_string.set(value);
411
 
409
 
412
       const dwin_coord_t by = (row * MENU_LINE_HEIGHT) + MENU_FONT_HEIGHT + EXTRA_ROW_HEIGHT / 2;
410
       const dwin_coord_t by = (row * MENU_LINE_HEIGHT) + MENU_FONT_HEIGHT + EXTRA_ROW_HEIGHT / 2;
413
       DWIN_Draw_String(true, font16x32, Color_Yellow, Color_Bg_Black, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string()));
411
       DWIN_Draw_String(true, font16x32, Color_Yellow, Color_Bg_Black, (LCD_PIXEL_WIDTH - vallen * 16) / 2, by, S(dwin_string.string()));
464
           maxlen -= 2;
462
           maxlen -= 2;
465
         }
463
         }
466
 
464
 
467
-        dwin_string.add((uint8_t*)ui.scrolled_filename(theCard, maxlen, row, sel), maxlen);
468
-        uint8_t n = maxlen - dwin_string.length();
465
+        dwin_string.add(ui.scrolled_filename(theCard, maxlen, row, sel), maxlen);
466
+        uint8_t n = maxlen - dwin_string.length;
469
         while (n > 0) { dwin_string.add(' '); --n; }
467
         while (n > 0) { dwin_string.add(' '); --n; }
470
         lcd_moveto(1, row);
468
         lcd_moveto(1, row);
471
         lcd_put_dwin_string();
469
         lcd_put_dwin_string();
548
       dwin_string.add(i8tostr3rj(y_plot));
546
       dwin_string.add(i8tostr3rj(y_plot));
549
       dwin_string.add(")");
547
       dwin_string.add(")");
550
       lcd_moveto(
548
       lcd_moveto(
551
-        TERN(DWIN_MARLINUI_LANDSCAPE, ((x_offset + x_map_pixels) / MENU_FONT_WIDTH) + 2, LCD_WIDTH - dwin_string.length()),
549
+        TERN(DWIN_MARLINUI_LANDSCAPE, ((x_offset + x_map_pixels) / MENU_FONT_WIDTH) + 2, LCD_WIDTH - dwin_string.length),
552
         TERN(DWIN_MARLINUI_LANDSCAPE, LCD_HEIGHT - 2, ((y_offset + y_map_pixels) / MENU_LINE_HEIGHT) + 1)
550
         TERN(DWIN_MARLINUI_LANDSCAPE, LCD_HEIGHT - 2, ((y_offset + y_map_pixels) / MENU_LINE_HEIGHT) + 1)
553
       );
551
       );
554
       lcd_put_dwin_string();
552
       lcd_put_dwin_string();
560
       else
558
       else
561
         dwin_string.add(PSTR(" -----"));
559
         dwin_string.add(PSTR(" -----"));
562
       lcd_moveto(
560
       lcd_moveto(
563
-        TERN(DWIN_MARLINUI_LANDSCAPE, ((x_offset + x_map_pixels) / MENU_FONT_WIDTH) + 2, LCD_WIDTH - dwin_string.length()),
561
+        TERN(DWIN_MARLINUI_LANDSCAPE, ((x_offset + x_map_pixels) / MENU_FONT_WIDTH) + 2, LCD_WIDTH - dwin_string.length),
564
         TERN(DWIN_MARLINUI_LANDSCAPE, LCD_HEIGHT - 1, ((y_offset + y_map_pixels) / MENU_LINE_HEIGHT) + 2)
562
         TERN(DWIN_MARLINUI_LANDSCAPE, LCD_HEIGHT - 1, ((y_offset + y_map_pixels) / MENU_LINE_HEIGHT) + 2)
565
       );
563
       );
566
       lcd_put_dwin_string();
564
       lcd_put_dwin_string();

+ 4
- 6
Marlin/src/lcd/e3v2/marlinui/ui_status_480x272.cpp View File

72
 
72
 
73
     uint8_t vallen = utf8_strlen(value);
73
     uint8_t vallen = utf8_strlen(value);
74
     if (!ui.did_first_redraw) {
74
     if (!ui.did_first_redraw) {
75
-      dwin_string.set();
76
-      dwin_string.add('X' + axis);
75
+      dwin_string.set('X' + axis);
77
       DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (vallen * 14 - 14) / 2, y + 2, S(dwin_string.string()));
76
       DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x + (vallen * 14 - 14) / 2, y + 2, S(dwin_string.string()));
78
     }
77
     }
79
 
78
 
96
   #else // !DWIN_MARLINUI_PORTRAIT
95
   #else // !DWIN_MARLINUI_PORTRAIT
97
 
96
 
98
     if (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) {
97
     if (!ui.did_first_redraw || ui.old_is_printing != print_job_timer.isRunning()) {
99
-      dwin_string.set();
100
-      dwin_string.add('X' + axis);
98
+      dwin_string.set('X' + axis);
101
       DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string()));
99
       DWIN_Draw_String(true, font16x32, Color_IconBlue, Color_Bg_Black, x, y, S(dwin_string.string()));
102
     }
100
     }
103
 
101
 
391
     time.toDigital(buffer);
389
     time.toDigital(buffer);
392
     dwin_string.add(prefix);
390
     dwin_string.add(prefix);
393
     dwin_string.add(buffer);
391
     dwin_string.add(buffer);
394
-    DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, (LCD_PIXEL_WIDTH - ((dwin_string.length() + 1) * 14)), 290, S(dwin_string.string()));
392
+    DWIN_Draw_String(true, font14x28, Color_White, Color_Bg_Black, (LCD_PIXEL_WIDTH - ((dwin_string.length + 1) * 14)), 290, S(dwin_string.string()));
395
 
393
 
396
   #else
394
   #else
397
 
395
 
454
         dwin_string.add(PSTR("%"));
452
         dwin_string.add(PSTR("%"));
455
         DWIN_Draw_String(
453
         DWIN_Draw_String(
456
           false, font16x32, Percent_Color, Color_Bg_Black,
454
           false, font16x32, Percent_Color, Color_Bg_Black,
457
-          pb_left + (pb_width - dwin_string.length() * 16) / 2,
455
+          pb_left + (pb_width - dwin_string.length * 16) / 2,
458
           pb_top + (pb_height - 32) / 2,
456
           pb_top + (pb_height - 32) / 2,
459
           S(dwin_string.string())
457
           S(dwin_string.string())
460
         );
458
         );

+ 5
- 5
Marlin/src/lcd/e3v2/proui/dwin.cpp View File

3509
   if (!MaxSpeedMenu) MaxSpeedMenu = new MenuClass();
3509
   if (!MaxSpeedMenu) MaxSpeedMenu = new MenuClass();
3510
   if (CurrentMenu != MaxSpeedMenu) {
3510
   if (CurrentMenu != MaxSpeedMenu) {
3511
     CurrentMenu = MaxSpeedMenu;
3511
     CurrentMenu = MaxSpeedMenu;
3512
-    SetMenuTitle({1, 16, 28, 13}, GET_TEXT_F(MSG_MAXSPEED));
3512
+    SetMenuTitle({1, 16, 28, 13}, GET_TEXT_F(MSG_MAX_SPEED));
3513
     MenuItemsPrepare(5);
3513
     MenuItemsPrepare(5);
3514
     BACK_ITEM(Draw_Motion_Menu);
3514
     BACK_ITEM(Draw_Motion_Menu);
3515
-    EDIT_ITEM_F(ICON_MaxSpeedX, MSG_MAXSPEED_X, onDrawMaxSpeedX, SetMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]);
3516
-    EDIT_ITEM_F(ICON_MaxSpeedY, MSG_MAXSPEED_Y, onDrawMaxSpeedY, SetMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]);
3517
-    EDIT_ITEM_F(ICON_MaxSpeedZ, MSG_MAXSPEED_Z, onDrawMaxSpeedZ, SetMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]);
3515
+    EDIT_ITEM_F(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, SetMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]);
3516
+    EDIT_ITEM_F(ICON_MaxSpeedY, MSG_VMAX_B, onDrawMaxSpeedY, SetMaxSpeedY, &planner.settings.max_feedrate_mm_s[Y_AXIS]);
3517
+    EDIT_ITEM_F(ICON_MaxSpeedZ, MSG_VMAX_C, onDrawMaxSpeedZ, SetMaxSpeedZ, &planner.settings.max_feedrate_mm_s[Z_AXIS]);
3518
     #if HAS_HOTEND
3518
     #if HAS_HOTEND
3519
-      EDIT_ITEM_F(ICON_MaxSpeedE, MSG_MAXSPEED_E, onDrawMaxSpeedE, SetMaxSpeedE, &planner.settings.max_feedrate_mm_s[E_AXIS]);
3519
+      EDIT_ITEM_F(ICON_MaxSpeedE, MSG_VMAX_E, onDrawMaxSpeedE, SetMaxSpeedE, &planner.settings.max_feedrate_mm_s[E_AXIS]);
3520
     #endif
3520
     #endif
3521
   }
3521
   }
3522
   CurrentMenu->draw();
3522
   CurrentMenu->draw();

+ 1
- 1
Marlin/src/lcd/e3v2/proui/dwin_lcd.cpp View File

147
 
147
 
148
 //--------------------------Test area -------------------------
148
 //--------------------------Test area -------------------------
149
 
149
 
150
-//void DWIN_ReadSRAM(uint16_t addr, uint8_t length, const char * const data) {
150
+//void DWIN_ReadSRAM(uint16_t addr, const uint8_t length, const char * const data) {
151
 //  size_t i = 0;
151
 //  size_t i = 0;
152
 //  DWIN_Byte(i, 0x32);
152
 //  DWIN_Byte(i, 0x32);
153
 //  DWIN_Byte(i, 0x5A);  // 0x5A Read from SRAM - 0xA5 Read from Flash
153
 //  DWIN_Byte(i, 0x5A);  // 0x5A Read from SRAM - 0xA5 Read from Flash

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp View File

54
 
54
 
55
 
55
 
56
       .tag(7) .button(BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM))
56
       .tag(7) .button(BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM))
57
-      .tag(8) .button(BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY))
57
+      .tag(8) .button(BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_MAX_SPEED))
58
       .tag(9) .button(BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION))
58
       .tag(9) .button(BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION))
59
       .tag(10) .button(BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
59
       .tag(10) .button(BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
60
                .enabled(ENABLED(BACKLASH_GCODE))
60
                .enabled(ENABLED(BACKLASH_GCODE))

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp View File

59
       .tag(3) .button(TMC_CURRENT_POS,        GET_TEXT_F(MSG_TMC_CURRENT))
59
       .tag(3) .button(TMC_CURRENT_POS,        GET_TEXT_F(MSG_TMC_CURRENT))
60
               .enabled(ENABLED(LIN_ADVANCE))
60
               .enabled(ENABLED(LIN_ADVANCE))
61
       .tag(4) .button(LIN_ADVANCE_POS,         GET_TEXT_F(MSG_LINEAR_ADVANCE))
61
       .tag(4) .button(LIN_ADVANCE_POS,         GET_TEXT_F(MSG_LINEAR_ADVANCE))
62
-      .tag(5) .button(VELOCITY_POS,           GET_TEXT_F(MSG_VELOCITY))
62
+      .tag(5) .button(VELOCITY_POS,           GET_TEXT_F(MSG_MAX_SPEED))
63
       .tag(6) .button(ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
63
       .tag(6) .button(ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
64
       .tag(7) .button(JERK_POS,               GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
64
       .tag(7) .button(JERK_POS,               GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
65
       .tag(8) .button(ENDSTOPS_POS,           GET_TEXT_F(MSG_LCD_ENDSTOPS))
65
       .tag(8) .button(ENDSTOPS_POS,           GET_TEXT_F(MSG_LCD_ENDSTOPS))

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp View File

105
       .tag(15).button(DISPLAY_POS,            GET_TEXT_F(MSG_DISPLAY_MENU))
105
       .tag(15).button(DISPLAY_POS,            GET_TEXT_F(MSG_DISPLAY_MENU))
106
       .tag(9) .button(INTERFACE_POS,          GET_TEXT_F(MSG_INTERFACE))
106
       .tag(9) .button(INTERFACE_POS,          GET_TEXT_F(MSG_INTERFACE))
107
       .tag(10).button(RESTORE_DEFAULTS_POS,   GET_TEXT_F(MSG_RESTORE_DEFAULTS))
107
       .tag(10).button(RESTORE_DEFAULTS_POS,   GET_TEXT_F(MSG_RESTORE_DEFAULTS))
108
-      .tag(5) .button(VELOCITY_POS,           GET_TEXT_F(MSG_VELOCITY))
108
+      .tag(5) .button(VELOCITY_POS,           GET_TEXT_F(MSG_MAX_SPEED))
109
       .tag(6) .button(ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
109
       .tag(6) .button(ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
110
       .tag(7) .button(JERK_POS,               GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
110
       .tag(7) .button(JERK_POS,               GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK)))
111
       .enabled(ENABLED(BACKLASH_GCODE))
111
       .enabled(ENABLED(BACKLASH_GCODE))

+ 1
- 1
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/max_velocity_screen.cpp View File

34
   widgets_t w(what);
34
   widgets_t w(what);
35
   w.precision(0);
35
   w.precision(0);
36
   w.units(GET_TEXT_F(MSG_UNITS_MM_S));
36
   w.units(GET_TEXT_F(MSG_UNITS_MM_S));
37
-  w.heading(                        GET_TEXT_F(MSG_VELOCITY));
37
+  w.heading(                        GET_TEXT_F(MSG_MAX_SPEED));
38
   w.color(x_axis)    .adjuster(  2, GET_TEXT_F(MSG_VMAX_X), getAxisMaxFeedrate_mm_s(X) );
38
   w.color(x_axis)    .adjuster(  2, GET_TEXT_F(MSG_VMAX_X), getAxisMaxFeedrate_mm_s(X) );
39
   w.color(y_axis)    .adjuster(  4, GET_TEXT_F(MSG_VMAX_Y), getAxisMaxFeedrate_mm_s(Y) );
39
   w.color(y_axis)    .adjuster(  4, GET_TEXT_F(MSG_VMAX_Y), getAxisMaxFeedrate_mm_s(Y) );
40
   w.color(z_axis)    .adjuster(  6, GET_TEXT_F(MSG_VMAX_Z), getAxisMaxFeedrate_mm_s(Z) );
40
   w.color(z_axis)    .adjuster(  6, GET_TEXT_F(MSG_VMAX_Z), getAxisMaxFeedrate_mm_s(Z) );

+ 2
- 0
Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language.h View File

20
  ****************************************************************************/
20
  ****************************************************************************/
21
 #pragma once
21
 #pragma once
22
 
22
 
23
+#define LSTR PROGMEM Language_Str
24
+
23
 #include "language_en.h"
25
 #include "language_en.h"

+ 127
- 127
Marlin/src/lcd/extui/ftdi_eve_touch_ui/language/language_en.h View File

36
 #endif
36
 #endif
37
 
37
 
38
 namespace Language_en {
38
 namespace Language_en {
39
-  PROGMEM Language_Str MSG_BUTTON_OKAY              = u8"Okay";
40
-  PROGMEM Language_Str MSG_BUTTON_MENU              = u8"Menu";
41
-  PROGMEM Language_Str MSG_BUTTON_MEDIA             = u8"Media";
42
-  PROGMEM Language_Str MSG_BUTTON_OPEN              = u8"Open";
43
-  PROGMEM Language_Str MSG_CLEAN_NOZZLE             = u8"Clean Nozzle";
44
-  PROGMEM Language_Str MSG_VMAX_X                   = u8"Vmax X";
45
-  PROGMEM Language_Str MSG_VMAX_Y                   = u8"Vmax Y";
46
-  PROGMEM Language_Str MSG_VMAX_Z                   = u8"Vmax Z";
47
-  PROGMEM Language_Str MSG_ACCEL_PRINTING           = u8"Printing";
48
-  PROGMEM Language_Str MSG_ACCEL_TRAVEL             = u8"Travel";
49
-  PROGMEM Language_Str MSG_ACCEL_RETRACT            = u8"Retraction";
50
-  PROGMEM Language_Str MSG_AMAX_X                   = u8"Amax X";
51
-  PROGMEM Language_Str MSG_AMAX_Y                   = u8"Amax Y";
52
-  PROGMEM Language_Str MSG_AMAX_Z                   = u8"Amax Z";
53
-  PROGMEM Language_Str MSG_AXIS_X                   = u8"X";
54
-  PROGMEM Language_Str MSG_AXIS_X2                  = u8"X2";
55
-  PROGMEM Language_Str MSG_AXIS_Y                   = u8"Y";
56
-  PROGMEM Language_Str MSG_AXIS_Y2                  = u8"Y2";
57
-  PROGMEM Language_Str MSG_AXIS_Z                   = u8"Z";
58
-  PROGMEM Language_Str MSG_AXIS_Z2                  = u8"Z2";
59
-  PROGMEM Language_Str MSG_AXIS_E                   = u8"E";
60
-  PROGMEM Language_Str MSG_AXIS_E1                  = u8"E1";
61
-  PROGMEM Language_Str MSG_AXIS_E2                  = u8"E2";
62
-  PROGMEM Language_Str MSG_AXIS_E3                  = u8"E3";
63
-  PROGMEM Language_Str MSG_AXIS_E4                  = u8"E4";
64
-  PROGMEM Language_Str MSG_AXIS_ALL                 = u8"All";
65
-  PROGMEM Language_Str MSG_HOME                     = u8"Home";
66
-  PROGMEM Language_Str MSG_PRINT_STARTING           = u8"Print starting";
67
-  PROGMEM Language_Str MSG_PRINT_FINISHED           = u8"Print finished";
68
-  PROGMEM Language_Str MSG_PRINT_ERROR              = u8"Print error";
69
-  PROGMEM Language_Str MSG_ABOUT_TOUCH_PANEL_1      = u8"Color Touch Panel";
70
-  PROGMEM Language_Str MSG_ABOUT_TOUCH_PANEL_2      = WEBSITE_URL;
71
-  PROGMEM Language_Str MSG_LICENSE                  = u8"This program is free software: you can redistribute it and/or modify it under the terms of "
39
+  LSTR MSG_BUTTON_OKAY              = u8"Okay";
40
+  LSTR MSG_BUTTON_MENU              = u8"Menu";
41
+  LSTR MSG_BUTTON_MEDIA             = u8"Media";
42
+  LSTR MSG_BUTTON_OPEN              = u8"Open";
43
+  LSTR MSG_CLEAN_NOZZLE             = u8"Clean Nozzle";
44
+  LSTR MSG_VMAX_X                   = u8"Max X Speed";
45
+  LSTR MSG_VMAX_Y                   = u8"Max Y Speed";
46
+  LSTR MSG_VMAX_Z                   = u8"Max Z Speed";
47
+  LSTR MSG_ACCEL_PRINTING           = u8"Printing";
48
+  LSTR MSG_ACCEL_TRAVEL             = u8"Travel";
49
+  LSTR MSG_ACCEL_RETRACT            = u8"Retraction";
50
+  LSTR MSG_AMAX_X                   = u8"Max X Accel.";
51
+  LSTR MSG_AMAX_Y                   = u8"Max Y Accel.";
52
+  LSTR MSG_AMAX_Z                   = u8"Max Z Accel.";
53
+  LSTR MSG_AXIS_X                   = u8"X";
54
+  LSTR MSG_AXIS_X2                  = u8"X2";
55
+  LSTR MSG_AXIS_Y                   = u8"Y";
56
+  LSTR MSG_AXIS_Y2                  = u8"Y2";
57
+  LSTR MSG_AXIS_Z                   = u8"Z";
58
+  LSTR MSG_AXIS_Z2                  = u8"Z2";
59
+  LSTR MSG_AXIS_E                   = u8"E";
60
+  LSTR MSG_AXIS_E1                  = u8"E1";
61
+  LSTR MSG_AXIS_E2                  = u8"E2";
62
+  LSTR MSG_AXIS_E3                  = u8"E3";
63
+  LSTR MSG_AXIS_E4                  = u8"E4";
64
+  LSTR MSG_AXIS_ALL                 = u8"All";
65
+  LSTR MSG_HOME                     = u8"Home";
66
+  LSTR MSG_PRINT_STARTING           = u8"Print starting";
67
+  LSTR MSG_PRINT_FINISHED           = u8"Print finished";
68
+  LSTR MSG_PRINT_ERROR              = u8"Print error";
69
+  LSTR MSG_ABOUT_TOUCH_PANEL_1      = u8"Color Touch Panel";
70
+  LSTR MSG_ABOUT_TOUCH_PANEL_2      = WEBSITE_URL;
71
+  LSTR MSG_LICENSE                  = u8"This program is free software: you can redistribute it and/or modify it under the terms of "
72
                                                         "the GNU General Public License as published by the Free Software Foundation, either version 3 "
72
                                                         "the GNU General Public License as published by the Free Software Foundation, either version 3 "
73
                                                         "of the License, or (at your option) any later version. To view a copy of the GNU General "
73
                                                         "of the License, or (at your option) any later version. To view a copy of the GNU General "
74
                                                         "Public License, go to the following location: https://www.gnu.org/licenses.";
74
                                                         "Public License, go to the following location: https://www.gnu.org/licenses.";
75
-  PROGMEM Language_Str MSG_RUNOUT_1                 = u8"Runout 1";
76
-  PROGMEM Language_Str MSG_RUNOUT_2                 = u8"Runout 2";
77
-  PROGMEM Language_Str MSG_DISPLAY_MENU             = u8"Display";
78
-  PROGMEM Language_Str MSG_INTERFACE                = u8"Interface";
79
-  PROGMEM Language_Str MSG_MEASURE_AUTOMATICALLY    = u8"Measure automatically";
80
-  PROGMEM Language_Str MSG_H_OFFSET                 = u8"H Offset";
81
-  PROGMEM Language_Str MSG_V_OFFSET                 = u8"V Offset";
82
-  PROGMEM Language_Str MSG_TOUCH_SCREEN             = u8"Touch Screen";
83
-  PROGMEM Language_Str MSG_CALIBRATE                = u8"Calibrate";
84
-  PROGMEM Language_Str MSG_UNITS_MILLIAMP           = u8"mA";
85
-  PROGMEM Language_Str MSG_UNITS_MM                 = u8"mm";
86
-  PROGMEM Language_Str MSG_UNITS_MM_S               = u8"mm/s";
87
-  PROGMEM Language_Str MSG_UNITS_MM_S2              = u8"mm/s" SUPERSCRIPT_TWO;
88
-  PROGMEM Language_Str MSG_UNITS_STEP_MM            = u8"st/mm";
89
-  PROGMEM Language_Str MSG_UNITS_PERCENT            = u8"%";
90
-  PROGMEM Language_Str MSG_UNITS_C                  = DEGREE_SIGN u8"C";
91
-  PROGMEM Language_Str MSG_IDLE                     = u8"idle";
92
-  PROGMEM Language_Str MSG_SET_MAXIMUM              = u8"Set Maximum";
93
-  PROGMEM Language_Str MSG_PRINT_SPEED              = u8"Print Speed";
94
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE           = u8"Linear Advance";
95
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE_K         = u8"K";
96
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE_K1        = u8"K E1";
97
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE_K2        = u8"K E2";
98
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE_K3        = u8"K E3";
99
-  PROGMEM Language_Str MSG_LINEAR_ADVANCE_K4        = u8"K E4";
100
-  PROGMEM Language_Str MSG_NUDGE_NOZZLE             = u8"Nudge Nozzle";
101
-  PROGMEM Language_Str MSG_ADJUST_BOTH_NOZZLES      = u8"Adjust Both Nozzles";
102
-  PROGMEM Language_Str MSG_SHOW_OFFSETS             = u8"Show Offsets";
103
-  PROGMEM Language_Str MSG_INCREMENT                = u8"Increment";
104
-  PROGMEM Language_Str MSG_ERASE_FLASH_WARNING      = u8"Are you sure? SPI flash will be erased.";
105
-  PROGMEM Language_Str MSG_ERASING                  = u8"Erasing...";
106
-  PROGMEM Language_Str MSG_ERASED                   = u8"SPI flash erased";
107
-  PROGMEM Language_Str MSG_CALIBRATION_WARNING      = u8"For best results, unload the filament and clean the hotend prior to starting calibration. Continue?";
108
-  PROGMEM Language_Str MSG_START_PRINT_CONFIRMATION = u8"Start printing %s?";
109
-  PROGMEM Language_Str MSG_ABORT_WARNING            = u8"Are you sure you want to cancel the print?";
110
-  PROGMEM Language_Str MSG_EXTRUDER_SELECTION       = u8"Extruder Selection";
111
-  PROGMEM Language_Str MSG_CURRENT_TEMPERATURE      = u8"Current Temp";
112
-  PROGMEM Language_Str MSG_REMOVAL_TEMPERATURE      = u8"Removal Temp";
113
-  PROGMEM Language_Str MSG_CAUTION                  = u8"Caution:";
114
-  PROGMEM Language_Str MSG_HOT                      = u8"Hot!";
115
-  PROGMEM Language_Str MSG_UNLOAD_FILAMENT          = u8"Unload/Retract";
116
-  PROGMEM Language_Str MSG_LOAD_FILAMENT            = u8"Load/Extrude";
117
-  PROGMEM Language_Str MSG_MOMENTARY                = u8"Momentary";
118
-  PROGMEM Language_Str MSG_CONTINUOUS               = u8"Continuous";
119
-  PROGMEM Language_Str MSG_PRINT_MENU               = u8"Print Menu";
120
-  PROGMEM Language_Str MSG_FINE_MOTION              = u8"Fine motion";
121
-  PROGMEM Language_Str MSG_ENABLE_MEDIA             = u8"Enable Media";
122
-  PROGMEM Language_Str MSG_INSERT_MEDIA             = u8"Insert Media...";
123
-  PROGMEM Language_Str MSG_LCD_BRIGHTNESS           = u8"LCD brightness";
124
-  PROGMEM Language_Str MSG_SOUND_VOLUME             = u8"Sound volume";
125
-  PROGMEM Language_Str MSG_SCREEN_LOCK              = u8"Screen lock";
126
-  PROGMEM Language_Str MSG_BOOT_SCREEN              = u8"Boot screen";
127
-  PROGMEM Language_Str MSG_SOUNDS                   = u8"Sounds";
128
-  PROGMEM Language_Str MSG_CLICK_SOUNDS             = u8"Click sounds";
129
-  PROGMEM Language_Str MSG_EEPROM_RESTORED          = u8"Settings restored from backup";
130
-  PROGMEM Language_Str MSG_EEPROM_RESET             = u8"Settings restored to default";
131
-  PROGMEM Language_Str MSG_EEPROM_SAVED             = u8"Settings saved!";
132
-  PROGMEM Language_Str MSG_EEPROM_SAVE_PROMPT       = u8"Settings applied. Save these settings for next power-on?";
133
-  PROGMEM Language_Str MSG_EEPROM_RESET_WARNING     = u8"Are you sure? Customizations will be lost.";
75
+  LSTR MSG_RUNOUT_1                 = u8"Runout 1";
76
+  LSTR MSG_RUNOUT_2                 = u8"Runout 2";
77
+  LSTR MSG_DISPLAY_MENU             = u8"Display";
78
+  LSTR MSG_INTERFACE                = u8"Interface";
79
+  LSTR MSG_MEASURE_AUTOMATICALLY    = u8"Measure automatically";
80
+  LSTR MSG_H_OFFSET                 = u8"H Offset";
81
+  LSTR MSG_V_OFFSET                 = u8"V Offset";
82
+  LSTR MSG_TOUCH_SCREEN             = u8"Touch Screen";
83
+  LSTR MSG_CALIBRATE                = u8"Calibrate";
84
+  LSTR MSG_UNITS_MILLIAMP           = u8"mA";
85
+  LSTR MSG_UNITS_MM                 = u8"mm";
86
+  LSTR MSG_UNITS_MM_S               = u8"mm/s";
87
+  LSTR MSG_UNITS_MM_S2              = u8"mm/s" SUPERSCRIPT_TWO;
88
+  LSTR MSG_UNITS_STEP_MM            = u8"st/mm";
89
+  LSTR MSG_UNITS_PERCENT            = u8"%";
90
+  LSTR MSG_UNITS_C                  = DEGREE_SIGN u8"C";
91
+  LSTR MSG_IDLE                     = u8"idle";
92
+  LSTR MSG_SET_MAXIMUM              = u8"Set Maximum";
93
+  LSTR MSG_PRINT_SPEED              = u8"Print Speed";
94
+  LSTR MSG_LINEAR_ADVANCE           = u8"Linear Advance";
95
+  LSTR MSG_LINEAR_ADVANCE_K         = u8"K";
96
+  LSTR MSG_LINEAR_ADVANCE_K1        = u8"K E1";
97
+  LSTR MSG_LINEAR_ADVANCE_K2        = u8"K E2";
98
+  LSTR MSG_LINEAR_ADVANCE_K3        = u8"K E3";
99
+  LSTR MSG_LINEAR_ADVANCE_K4        = u8"K E4";
100
+  LSTR MSG_NUDGE_NOZZLE             = u8"Nudge Nozzle";
101
+  LSTR MSG_ADJUST_BOTH_NOZZLES      = u8"Adjust Both Nozzles";
102
+  LSTR MSG_SHOW_OFFSETS             = u8"Show Offsets";
103
+  LSTR MSG_INCREMENT                = u8"Increment";
104
+  LSTR MSG_ERASE_FLASH_WARNING      = u8"Are you sure? SPI flash will be erased.";
105
+  LSTR MSG_ERASING                  = u8"Erasing...";
106
+  LSTR MSG_ERASED                   = u8"SPI flash erased";
107
+  LSTR MSG_CALIBRATION_WARNING      = u8"For best results, unload the filament and clean the hotend prior to starting calibration. Continue?";
108
+  LSTR MSG_START_PRINT_CONFIRMATION = u8"Start printing %s?";
109
+  LSTR MSG_ABORT_WARNING            = u8"Are you sure you want to cancel the print?";
110
+  LSTR MSG_EXTRUDER_SELECTION       = u8"Extruder Selection";
111
+  LSTR MSG_CURRENT_TEMPERATURE      = u8"Current Temp";
112
+  LSTR MSG_REMOVAL_TEMPERATURE      = u8"Removal Temp";
113
+  LSTR MSG_CAUTION                  = u8"Caution:";
114
+  LSTR MSG_HOT                      = u8"Hot!";
115
+  LSTR MSG_UNLOAD_FILAMENT          = u8"Unload/Retract";
116
+  LSTR MSG_LOAD_FILAMENT            = u8"Load/Extrude";
117
+  LSTR MSG_MOMENTARY                = u8"Momentary";
118
+  LSTR MSG_CONTINUOUS               = u8"Continuous";
119
+  LSTR MSG_PRINT_MENU               = u8"Print Menu";
120
+  LSTR MSG_FINE_MOTION              = u8"Fine motion";
121
+  LSTR MSG_ENABLE_MEDIA             = u8"Enable Media";
122
+  LSTR MSG_INSERT_MEDIA             = u8"Insert Media...";
123
+  LSTR MSG_LCD_BRIGHTNESS           = u8"LCD brightness";
124
+  LSTR MSG_SOUND_VOLUME             = u8"Sound volume";
125
+  LSTR MSG_SCREEN_LOCK              = u8"Screen lock";
126
+  LSTR MSG_BOOT_SCREEN              = u8"Boot screen";
127
+  LSTR MSG_SOUNDS                   = u8"Sounds";
128
+  LSTR MSG_CLICK_SOUNDS             = u8"Click sounds";
129
+  LSTR MSG_EEPROM_RESTORED          = u8"Settings restored from backup";
130
+  LSTR MSG_EEPROM_RESET             = u8"Settings restored to default";
131
+  LSTR MSG_EEPROM_SAVED             = u8"Settings saved!";
132
+  LSTR MSG_EEPROM_SAVE_PROMPT       = u8"Settings applied. Save these settings for next power-on?";
133
+  LSTR MSG_EEPROM_RESET_WARNING     = u8"Are you sure? Customizations will be lost.";
134
 
134
 
135
-  PROGMEM Language_Str MSG_PASSCODE_REJECTED        = u8"Wrong passcode!";
136
-  PROGMEM Language_Str MSG_PASSCODE_ACCEPTED        = u8"Passcode accepted!";
137
-  PROGMEM Language_Str MSG_PASSCODE_SELECT          = u8"Select Passcode:";
138
-  PROGMEM Language_Str MSG_PASSCODE_REQUEST         = u8"Enter Passcode:";
135
+  LSTR MSG_PASSCODE_REJECTED        = u8"Wrong passcode!";
136
+  LSTR MSG_PASSCODE_ACCEPTED        = u8"Passcode accepted!";
137
+  LSTR MSG_PASSCODE_SELECT          = u8"Select Passcode:";
138
+  LSTR MSG_PASSCODE_REQUEST         = u8"Enter Passcode:";
139
 
139
 
140
-  PROGMEM Language_Str MSG_TOUCH_CALIBRATION_START  = u8"Release to begin screen calibration";
141
-  PROGMEM Language_Str MSG_TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate";
142
-  PROGMEM Language_Str MSG_BED_MAPPING_DONE         = u8"Bed mapping finished";
143
-  PROGMEM Language_Str MSG_BED_MAPPING_INCOMPLETE   = u8"Not all points probed";
144
-  PROGMEM Language_Str MSG_LEVELING                 = u8"Leveling";
145
-  PROGMEM Language_Str MSG_AXIS_LEVELING            = u8"Axis Leveling";
146
-  PROGMEM Language_Str MSG_PROBE_BED                = u8"Probe Mesh";
147
-  PROGMEM Language_Str MSG_PRINT_TEST               = u8"Print Test (PLA)";
148
-  PROGMEM Language_Str MSG_MOVE_Z_TO_TOP            = u8"Raise Z to Top";
140
+  LSTR MSG_TOUCH_CALIBRATION_START  = u8"Release to begin screen calibration";
141
+  LSTR MSG_TOUCH_CALIBRATION_PROMPT = u8"Touch the dots to calibrate";
142
+  LSTR MSG_BED_MAPPING_DONE         = u8"Bed mapping finished";
143
+  LSTR MSG_BED_MAPPING_INCOMPLETE   = u8"Not all points probed";
144
+  LSTR MSG_LEVELING                 = u8"Leveling";
145
+  LSTR MSG_AXIS_LEVELING            = u8"Axis Leveling";
146
+  LSTR MSG_PROBE_BED                = u8"Probe Mesh";
147
+  LSTR MSG_PRINT_TEST               = u8"Print Test (PLA)";
148
+  LSTR MSG_MOVE_Z_TO_TOP            = u8"Raise Z to Top";
149
 
149
 
150
   #if ENABLED(TOUCH_UI_LULZBOT_BIO)
150
   #if ENABLED(TOUCH_UI_LULZBOT_BIO)
151
-    PROGMEM Language_Str MSG_MOVE_TO_HOME           = u8"Move to Home";
152
-    PROGMEM Language_Str MSG_RAISE_PLUNGER          = u8"Raise Plunger";
153
-    PROGMEM Language_Str MSG_RELEASE_XY_AXIS        = u8"Release X and Y Axis";
154
-    PROGMEM Language_Str MSG_BED_TEMPERATURE        = u8"Bed Temperature";
155
-    PROGMEM Language_Str MSG_HOME_XYZ_WARNING       = u8"About to move to home position. Ensure the top and the bed of the printer are clear.\n\nContinue?";
156
-    PROGMEM Language_Str MSG_HOME_E_WARNING         = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?";
151
+    LSTR MSG_MOVE_TO_HOME           = u8"Move to Home";
152
+    LSTR MSG_RAISE_PLUNGER          = u8"Raise Plunger";
153
+    LSTR MSG_RELEASE_XY_AXIS        = u8"Release X and Y Axis";
154
+    LSTR MSG_BED_TEMPERATURE        = u8"Bed Temperature";
155
+    LSTR MSG_HOME_XYZ_WARNING       = u8"About to move to home position. Ensure the top and the bed of the printer are clear.\n\nContinue?";
156
+    LSTR MSG_HOME_E_WARNING         = u8"About to re-home plunger and auto-level. Remove syringe prior to proceeding.\n\nContinue?";
157
   #endif
157
   #endif
158
 
158
 
159
   #ifdef TOUCH_UI_COCOA_PRESS
159
   #ifdef TOUCH_UI_COCOA_PRESS
160
-    PROGMEM Language_Str MSG_BODY                   = u8"Body";
161
-    PROGMEM Language_Str MSG_SELECT_CHOCOLATE_TYPE  = u8"Select Chocolate Type";
162
-    PROGMEM Language_Str MSG_EXTERNAL               = u8"External";
163
-    PROGMEM Language_Str MSG_CHOCOLATE              = u8"Chocolate";
164
-    PROGMEM Language_Str MSG_UNLOAD_CARTRIDGE       = u8"Unload Cartridge";
165
-    PROGMEM Language_Str MSG_LOAD_UNLOAD            = u8"Load/Unload";
166
-    PROGMEM Language_Str MSG_FULL_LOAD              = u8"Full Load";
167
-    PROGMEM Language_Str MSG_FULL_UNLOAD            = u8"Full Unload";
168
-    PROGMEM Language_Str MSG_PREHEAT_CHOCOLATE      = u8"Preheat Chocolate";
169
-    PROGMEM Language_Str MSG_PREHEAT_FINISHED       = u8"Preheat finished";
170
-    PROGMEM Language_Str MSG_PREHEAT                = u8"Preheat";
171
-    PROGMEM Language_Str MSG_BUTTON_PAUSE           = u8"Pause";
172
-    PROGMEM Language_Str MSG_BUTTON_RESUME          = u8"Resume";
173
-    PROGMEM Language_Str MSG_ELAPSED_PRINT          = u8"Elapsed Print";
174
-    PROGMEM Language_Str MSG_XYZ_MOVE               = u8"XYZ Move";
175
-    PROGMEM Language_Str MSG_E_MOVE                 = u8"Extrusion Move";
160
+    LSTR MSG_BODY                   = u8"Body";
161
+    LSTR MSG_SELECT_CHOCOLATE_TYPE  = u8"Select Chocolate Type";
162
+    LSTR MSG_EXTERNAL               = u8"External";
163
+    LSTR MSG_CHOCOLATE              = u8"Chocolate";
164
+    LSTR MSG_UNLOAD_CARTRIDGE       = u8"Unload Cartridge";
165
+    LSTR MSG_LOAD_UNLOAD            = u8"Load/Unload";
166
+    LSTR MSG_FULL_LOAD              = u8"Full Load";
167
+    LSTR MSG_FULL_UNLOAD            = u8"Full Unload";
168
+    LSTR MSG_PREHEAT_CHOCOLATE      = u8"Preheat Chocolate";
169
+    LSTR MSG_PREHEAT_FINISHED       = u8"Preheat finished";
170
+    LSTR MSG_PREHEAT                = u8"Preheat";
171
+    LSTR MSG_BUTTON_PAUSE           = u8"Pause";
172
+    LSTR MSG_BUTTON_RESUME          = u8"Resume";
173
+    LSTR MSG_ELAPSED_PRINT          = u8"Elapsed Print";
174
+    LSTR MSG_XYZ_MOVE               = u8"XYZ Move";
175
+    LSTR MSG_E_MOVE                 = u8"Extrusion Move";
176
   #endif
176
   #endif
177
 }; // namespace Language_en
177
 }; // namespace Language_en

+ 4
- 9
Marlin/src/lcd/fontutils.cpp View File

40
 
40
 
41
 #include "fontutils.h"
41
 #include "fontutils.h"
42
 
42
 
43
-uint8_t read_byte_ram(uint8_t * str) {
44
-  return *str;
45
-}
46
-
47
-uint8_t read_byte_rom(uint8_t * str) {
48
-  return pgm_read_byte(str);
49
-}
43
+uint8_t read_byte_ram(const uint8_t *str) { return *str; }
44
+uint8_t read_byte_rom(const uint8_t *str) { return pgm_read_byte(str); }
50
 
45
 
51
 /**
46
 /**
52
  * @brief Using binary search to find the position by data_pin
47
  * @brief Using binary search to find the position by data_pin
104
 
99
 
105
 /* This function gets the character at the pstart position, interpreting UTF8 multibyte sequences
100
 /* This function gets the character at the pstart position, interpreting UTF8 multibyte sequences
106
    and returns the pointer to the next character */
101
    and returns the pointer to the next character */
107
-uint8_t* get_utf8_value_cb(uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval) {
102
+const uint8_t* get_utf8_value_cb(const uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval) {
108
   uint32_t val = 0;
103
   uint32_t val = 0;
109
-  uint8_t *p = pstart;
104
+  const uint8_t *p = pstart;
110
 
105
 
111
   #define NEXT_6_BITS() do{ val <<= 6; p++; valcur = cb_read_byte(p); val |= (valcur & 0x3F); }while(0)
106
   #define NEXT_6_BITS() do{ val <<= 6; p++; valcur = cb_read_byte(p); val |= (valcur & 0x3F); }while(0)
112
 
107
 

+ 8
- 4
Marlin/src/lcd/fontutils.h View File

38
 #include "../core/macros.h"
38
 #include "../core/macros.h"
39
 
39
 
40
 // read a byte from ROM or RAM
40
 // read a byte from ROM or RAM
41
-typedef uint8_t (*read_byte_cb_t)(uint8_t * str);
41
+typedef uint8_t (*read_byte_cb_t)(const uint8_t * str);
42
 
42
 
43
-uint8_t read_byte_ram(uint8_t * str);
44
-uint8_t read_byte_rom(uint8_t * str);
43
+uint8_t read_byte_ram(const uint8_t *str);
44
+uint8_t read_byte_rom(const uint8_t *str);
45
 
45
 
46
 // there's overflow of the wchar_t due to the 2-byte size in Arduino
46
 // there's overflow of the wchar_t due to the 2-byte size in Arduino
47
 // sizeof(wchar_t)=2; sizeof(size_t)=2; sizeof(uint32_t)=4;
47
 // sizeof(wchar_t)=2; sizeof(size_t)=2; sizeof(uint32_t)=4;
58
 int pf_bsearch_r(void *userdata, size_t num_data, pf_bsearch_cb_comp_t cb_comp, void *data_pinpoint, size_t *ret_idx);
58
 int pf_bsearch_r(void *userdata, size_t num_data, pf_bsearch_cb_comp_t cb_comp, void *data_pinpoint, size_t *ret_idx);
59
 
59
 
60
 /* Get the character, decoding multibyte UTF8 characters and returning a pointer to the start of the next UTF8 character */
60
 /* Get the character, decoding multibyte UTF8 characters and returning a pointer to the start of the next UTF8 character */
61
-uint8_t* get_utf8_value_cb(uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval);
61
+const uint8_t* get_utf8_value_cb(const uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval);
62
+
63
+inline const char* get_utf8_value_cb(const char *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval) {
64
+  return (const char *)get_utf8_value_cb((const uint8_t *)pstart, cb_read_byte, pval);
65
+}
62
 
66
 
63
 /* Returns length of string in CHARACTERS, NOT BYTES */
67
 /* Returns length of string in CHARACTERS, NOT BYTES */
64
 uint8_t utf8_strlen(const char *pstart);
68
 uint8_t utf8_strlen(const char *pstart);

+ 5
- 8
Marlin/src/lcd/language/language_an.h View File

85
   LSTR MSG_MOVE_Z                         = _UxGT("Mover Z");
85
   LSTR MSG_MOVE_Z                         = _UxGT("Mover Z");
86
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
86
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
87
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
87
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
88
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover %smm");
88
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover $mm");
89
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
89
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
90
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
90
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
91
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
91
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
109
   LSTR MSG_AMAX_A                         = _UxGT("Acel. max ") STR_A;
109
   LSTR MSG_AMAX_A                         = _UxGT("Acel. max ") STR_A;
110
   LSTR MSG_AMAX_B                         = _UxGT("Acel. max ") STR_B;
110
   LSTR MSG_AMAX_B                         = _UxGT("Acel. max ") STR_B;
111
   LSTR MSG_AMAX_C                         = _UxGT("Acel. max ") STR_C;
111
   LSTR MSG_AMAX_C                         = _UxGT("Acel. max ") STR_C;
112
-  LSTR MSG_AMAX_I                         = _UxGT("Acel. max ") STR_I;
113
-  LSTR MSG_AMAX_J                         = _UxGT("Acel. max ") STR_J;
114
-  LSTR MSG_AMAX_K                         = _UxGT("Acel. max ") STR_K;
115
-  LSTR MSG_AMAX_E                         = _UxGT("Acel. max ") STR_E;
112
+  LSTR MSG_AMAX_N                         = _UxGT("Acel. max @");
113
+  LSTR MSG_AMAX_E                         = _UxGT("Acel. max E");
116
   LSTR MSG_AMAX_EN                        = _UxGT("Acel. max *");
114
   LSTR MSG_AMAX_EN                        = _UxGT("Acel. max *");
117
   LSTR MSG_A_RETRACT                      = _UxGT("Acel. retrac.");
115
   LSTR MSG_A_RETRACT                      = _UxGT("Acel. retrac.");
118
   LSTR MSG_A_TRAVEL                       = _UxGT("Acel. Viaje");
116
   LSTR MSG_A_TRAVEL                       = _UxGT("Acel. Viaje");
120
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" trangos/mm");
118
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" trangos/mm");
121
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" trangos/mm");
119
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" trangos/mm");
122
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" trangos/mm");
120
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" trangos/mm");
123
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" trangos/mm");
124
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" trangos/mm");
125
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" trangos/mm");
121
+  LSTR MSG_N_STEPS                        = _UxGT("@ trangos/mm");
126
   LSTR MSG_E_STEPS                        = _UxGT("E trangos/mm");
122
   LSTR MSG_E_STEPS                        = _UxGT("E trangos/mm");
127
   LSTR MSG_EN_STEPS                       = _UxGT("* trangos/mm");
123
   LSTR MSG_EN_STEPS                       = _UxGT("* trangos/mm");
128
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
124
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
168
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
164
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
169
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
165
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
170
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
166
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
167
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Micropaso @");
171
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancelado - Endstop");
168
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancelado - Endstop");
172
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Error: en calentar");
169
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Error: en calentar");
173
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Error: temperatura");
170
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Error: temperatura");

+ 3
- 4
Marlin/src/lcd/language/language_bg.h View File

74
   LSTR MSG_MOVE_Z                         = _UxGT("Движение по Z");
74
   LSTR MSG_MOVE_Z                         = _UxGT("Движение по Z");
75
   LSTR MSG_MOVE_E                         = _UxGT("Екструдер");
75
   LSTR MSG_MOVE_E                         = _UxGT("Екструдер");
76
   LSTR MSG_MOVE_EN                        = _UxGT("Екструдер *");
76
   LSTR MSG_MOVE_EN                        = _UxGT("Екструдер *");
77
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Премести с %smm");
77
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Премести с $mm");
78
   LSTR MSG_MOVE_01MM                      = _UxGT("Премести с 0.1mm");
78
   LSTR MSG_MOVE_01MM                      = _UxGT("Премести с 0.1mm");
79
   LSTR MSG_MOVE_1MM                       = _UxGT("Премести с 1mm");
79
   LSTR MSG_MOVE_1MM                       = _UxGT("Премести с 1mm");
80
   LSTR MSG_MOVE_10MM                      = _UxGT("Премести с 10mm");
80
   LSTR MSG_MOVE_10MM                      = _UxGT("Премести с 10mm");
101
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" стъпки/mm");
101
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" стъпки/mm");
102
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" стъпки/mm");
102
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" стъпки/mm");
103
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" стъпки/mm");
103
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" стъпки/mm");
104
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" стъпки/mm");
105
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" стъпки/mm");
106
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" стъпки/mm");
104
+  LSTR MSG_N_STEPS                        = _UxGT("@ стъпки/mm");
107
   LSTR MSG_E_STEPS                        = _UxGT("E стъпки/mm");
105
   LSTR MSG_E_STEPS                        = _UxGT("E стъпки/mm");
108
   LSTR MSG_EN_STEPS                       = _UxGT("* стъпки/mm");
106
   LSTR MSG_EN_STEPS                       = _UxGT("* стъпки/mm");
109
   LSTR MSG_TEMPERATURE                    = _UxGT("Температура");
107
   LSTR MSG_TEMPERATURE                    = _UxGT("Температура");
148
   LSTR MSG_BABYSTEP_X                     = _UxGT("Министъпка X");
146
   LSTR MSG_BABYSTEP_X                     = _UxGT("Министъпка X");
149
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Министъпка Y");
147
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Министъпка Y");
150
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Министъпка Z");
148
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Министъпка Z");
149
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Министъпка @");
151
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Стоп Кр.Изключватели");
150
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Стоп Кр.Изключватели");
152
   LSTR MSG_DELTA_CALIBRATE                = _UxGT("Делта Калибровка");
151
   LSTR MSG_DELTA_CALIBRATE                = _UxGT("Делта Калибровка");
153
   LSTR MSG_DELTA_CALIBRATE_X              = _UxGT("Калибровка X");
152
   LSTR MSG_DELTA_CALIBRATE_X              = _UxGT("Калибровка X");

+ 5
- 6
Marlin/src/lcd/language/language_ca.h View File

85
   LSTR MSG_MOVE_Z                         = _UxGT("Mou Z");
85
   LSTR MSG_MOVE_Z                         = _UxGT("Mou Z");
86
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
86
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
87
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
87
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
88
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mou %smm");
88
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mou $mm");
89
   LSTR MSG_MOVE_01MM                      = _UxGT("Mou 0.1mm");
89
   LSTR MSG_MOVE_01MM                      = _UxGT("Mou 0.1mm");
90
   LSTR MSG_MOVE_1MM                       = _UxGT("Mou 1mm");
90
   LSTR MSG_MOVE_1MM                       = _UxGT("Mou 1mm");
91
   LSTR MSG_MOVE_10MM                      = _UxGT("Mou 10mm");
91
   LSTR MSG_MOVE_10MM                      = _UxGT("Mou 10mm");
107
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passos/mm");
107
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passos/mm");
108
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passos/mm");
108
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passos/mm");
109
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passos/mm");
109
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passos/mm");
110
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" passos/mm");
111
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" passos/mm");
112
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" passos/mm");
113
-  LSTR MSG_E_STEPS                        = _UxGT("Epassos/mm");
114
-  LSTR MSG_EN_STEPS                       = _UxGT("*passos/mm");
110
+  LSTR MSG_E_STEPS                        = _UxGT("@ passos/mm");
111
+  LSTR MSG_N_STEPS                        = _UxGT("E passos/mm");
112
+  LSTR MSG_EN_STEPS                       = _UxGT("* passos/mm");
115
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
113
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
116
   LSTR MSG_MOTION                         = _UxGT("Moviment");
114
   LSTR MSG_MOTION                         = _UxGT("Moviment");
117
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
115
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
156
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropas X");
154
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropas X");
157
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropas Y");
155
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropas Y");
158
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropas Z");
156
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropas Z");
157
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Micropas @");
159
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancel. Endstop");
158
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancel. Endstop");
160
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Error al escalfar");
159
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Error al escalfar");
161
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Err: TEMP REDUNDANT");
160
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Err: TEMP REDUNDANT");

+ 10
- 23
Marlin/src/lcd/language/language_cz.h View File

235
   LSTR MSG_MOVE_E                         = _UxGT("Extrudér");
235
   LSTR MSG_MOVE_E                         = _UxGT("Extrudér");
236
   LSTR MSG_MOVE_EN                        = _UxGT("Extrudér *");
236
   LSTR MSG_MOVE_EN                        = _UxGT("Extrudér *");
237
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend je studený");
237
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend je studený");
238
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Posunout o %smm");
238
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Posunout o $mm");
239
   LSTR MSG_MOVE_01MM                      = _UxGT("Posunout o 0,1mm");
239
   LSTR MSG_MOVE_01MM                      = _UxGT("Posunout o 0,1mm");
240
   LSTR MSG_MOVE_1MM                       = _UxGT("Posunout o 1mm");
240
   LSTR MSG_MOVE_1MM                       = _UxGT("Posunout o 1mm");
241
   LSTR MSG_MOVE_10MM                      = _UxGT("Posunout o 10mm");
241
   LSTR MSG_MOVE_10MM                      = _UxGT("Posunout o 10mm");
269
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
269
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
270
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
270
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
271
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
271
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
272
-  LSTR MSG_VI_JERK                        = _UxGT("Max ") STR_I _UxGT(" Jerk");
273
-  LSTR MSG_VJ_JERK                        = _UxGT("Max ") STR_J _UxGT(" Jerk");
274
-  LSTR MSG_VK_JERK                        = _UxGT("Max ") STR_K _UxGT(" Jerk");
272
+  LSTR MSG_VN_JERK                        = _UxGT("Max @ Jerk");
275
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
273
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
276
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Odchylka spoje");
274
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Odchylka spoje");
277
-  LSTR MSG_VELOCITY                       = _UxGT("Rychlost");
275
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Rychlost");
278
   LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Rychlost");
276
   LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Rychlost");
279
   LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Rychlost");
277
   LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Rychlost");
280
   LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Rychlost");
278
   LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Rychlost");
281
-  LSTR MSG_VMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Rychlost");
282
-  LSTR MSG_VMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Rychlost");
283
-  LSTR MSG_VMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Rychlost");
284
-  LSTR MSG_VMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Rychlost");
279
+  LSTR MSG_VMAX_N                         = _UxGT("Max @ Rychlost");
280
+  LSTR MSG_VMAX_E                         = _UxGT("Max E Rychlost");
285
   LSTR MSG_VMAX_EN                        = _UxGT("Max * Rychlost");
281
   LSTR MSG_VMAX_EN                        = _UxGT("Max * Rychlost");
286
   LSTR MSG_VMIN                           = _UxGT("Vmin");
282
   LSTR MSG_VMIN                           = _UxGT("Vmin");
287
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
283
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
289
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Akcel");
285
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Akcel");
290
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Akcel");
286
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Akcel");
291
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Akcel");
287
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Akcel");
292
-  LSTR MSG_AMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Akcel");
293
-  LSTR MSG_AMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Akcel");
294
-  LSTR MSG_AMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Akcel");
295
-  LSTR MSG_AMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Akcel");
288
+  LSTR MSG_AMAX_N                         = _UxGT("Max @ Akcel");
289
+  LSTR MSG_AMAX_E                         = _UxGT("Max E Akcel");
296
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Akcel");
290
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Akcel");
297
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
291
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
298
   LSTR MSG_A_TRAVEL                       = _UxGT("A-přejezd");
292
   LSTR MSG_A_TRAVEL                       = _UxGT("A-přejezd");
300
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" kroků/mm");
294
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" kroků/mm");
301
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" kroků/mm");
295
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" kroků/mm");
302
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" kroků/mm");
296
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" kroků/mm");
303
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" kroků/mm");
304
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" kroků/mm");
305
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" kroků/mm");
297
+  LSTR MSG_N_STEPS                        = _UxGT("@ kroků/mm");
306
   LSTR MSG_E_STEPS                        = _UxGT("E kroků/mm");
298
   LSTR MSG_E_STEPS                        = _UxGT("E kroků/mm");
307
   LSTR MSG_EN_STEPS                       = _UxGT("* kroků/mm");
299
   LSTR MSG_EN_STEPS                       = _UxGT("* kroků/mm");
308
   LSTR MSG_TEMPERATURE                    = _UxGT("Teplota");
300
   LSTR MSG_TEMPERATURE                    = _UxGT("Teplota");
407
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
399
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
408
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
400
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
409
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
401
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
402
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
410
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Celkem");
403
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Celkem");
411
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop abort");
404
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop abort");
412
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Chyba zahřívání");
405
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Chyba zahřívání");
482
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Teplota max");
475
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Teplota max");
483
   LSTR MSG_INFO_PSU                       = _UxGT("Nap. zdroj");
476
   LSTR MSG_INFO_PSU                       = _UxGT("Nap. zdroj");
484
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Buzení motorů");
477
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Buzení motorů");
485
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Motor %");
486
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Motor %");
487
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Motor %");
488
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Motor %");
489
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Motor %");
490
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Motor %");
491
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Motor %");
478
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Motor %");
492
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC uložit EEPROM");
479
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC uložit EEPROM");
493
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CHYBA SPOJENÍ");
480
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CHYBA SPOJENÍ");
494
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("VÝMĚNA FILAMENTU");
481
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("VÝMĚNA FILAMENTU");

+ 2
- 8
Marlin/src/lcd/language/language_da.h View File

74
   LSTR MSG_MOVE_X                         = _UxGT("Flyt X");
74
   LSTR MSG_MOVE_X                         = _UxGT("Flyt X");
75
   LSTR MSG_MOVE_Y                         = _UxGT("Flyt Y");
75
   LSTR MSG_MOVE_Y                         = _UxGT("Flyt Y");
76
   LSTR MSG_MOVE_Z                         = _UxGT("Flyt Z");
76
   LSTR MSG_MOVE_Z                         = _UxGT("Flyt Z");
77
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Flyt %smm");
77
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Flyt $mm");
78
   LSTR MSG_MOVE_01MM                      = _UxGT("Flyt 0.1mm");
78
   LSTR MSG_MOVE_01MM                      = _UxGT("Flyt 0.1mm");
79
   LSTR MSG_MOVE_1MM                       = _UxGT("Flyt 1mm");
79
   LSTR MSG_MOVE_1MM                       = _UxGT("Flyt 1mm");
80
   LSTR MSG_MOVE_10MM                      = _UxGT("Flyt 10mm");
80
   LSTR MSG_MOVE_10MM                      = _UxGT("Flyt 10mm");
172
   LSTR MSG_INFO_PSU                       = _UxGT("Strømfors.");
172
   LSTR MSG_INFO_PSU                       = _UxGT("Strømfors.");
173
 
173
 
174
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driv Styrke");
174
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driv Styrke");
175
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driv %");
176
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driv %");
177
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driv %");
178
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driv %");
179
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driv %");
180
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driv %");
181
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driv %");
175
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driv %");
182
 
176
 
183
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Skriv");
177
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Skriv");
184
 
178
 

+ 12
- 42
Marlin/src/lcd/language/language_de.h View File

84
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Homeversatz X");
84
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Homeversatz X");
85
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Homeversatz Y");
85
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Homeversatz Y");
86
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Homeversatz Z");
86
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Homeversatz Z");
87
-  LSTR MSG_HOME_OFFSET_I                  = _UxGT("Homeversatz ") STR_I;
88
-  LSTR MSG_HOME_OFFSET_J                  = _UxGT("Homeversatz ") STR_J;
89
-  LSTR MSG_HOME_OFFSET_K                  = _UxGT("Homeversatz ") STR_K;
90
-  LSTR MSG_HOME_OFFSET_U                  = _UxGT("Homeversatz ") STR_U;
91
-  LSTR MSG_HOME_OFFSET_V                  = _UxGT("Homeversatz ") STR_V;
92
-  LSTR MSG_HOME_OFFSET_W                  = _UxGT("Homeversatz ") STR_W;
93
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Homeversatz aktiv");
87
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Homeversatz aktiv");
94
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Assistent");
88
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Assistent");
95
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Wählen Sie Ursprung");
89
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Wählen Sie Ursprung");
273
   LSTR MSG_MOVE_X                         = _UxGT("Bewege X");
267
   LSTR MSG_MOVE_X                         = _UxGT("Bewege X");
274
   LSTR MSG_MOVE_Y                         = _UxGT("Bewege Y");
268
   LSTR MSG_MOVE_Y                         = _UxGT("Bewege Y");
275
   LSTR MSG_MOVE_Z                         = _UxGT("Bewege Z");
269
   LSTR MSG_MOVE_Z                         = _UxGT("Bewege Z");
276
-  LSTR MSG_MOVE_I                         = _UxGT("Bewege ") STR_I;
277
-  LSTR MSG_MOVE_J                         = _UxGT("Bewege ") STR_J;
278
-  LSTR MSG_MOVE_K                         = _UxGT("Bewege ") STR_K;
270
+  LSTR MSG_MOVE_N                         = _UxGT("Bewege @");
279
   LSTR MSG_MOVE_E                         = _UxGT("Bewege Extruder");
271
   LSTR MSG_MOVE_E                         = _UxGT("Bewege Extruder");
280
   LSTR MSG_MOVE_EN                        = _UxGT("Bewege Extruder *");
272
   LSTR MSG_MOVE_EN                        = _UxGT("Bewege Extruder *");
281
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend zu kalt");
273
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend zu kalt");
282
-  LSTR MSG_MOVE_N_MM                      = _UxGT(" %s mm");
274
+  LSTR MSG_MOVE_N_MM                      = _UxGT(" $ mm");
283
   LSTR MSG_MOVE_01MM                      = _UxGT("  0,1  mm");
275
   LSTR MSG_MOVE_01MM                      = _UxGT("  0,1  mm");
284
   LSTR MSG_MOVE_1MM                       = _UxGT("  1,0  mm");
276
   LSTR MSG_MOVE_1MM                       = _UxGT("  1,0  mm");
285
   LSTR MSG_MOVE_10MM                      = _UxGT(" 10,0  mm");
277
   LSTR MSG_MOVE_10MM                      = _UxGT(" 10,0  mm");
289
   LSTR MSG_MOVE_01IN                      = _UxGT("0.100 in");
281
   LSTR MSG_MOVE_01IN                      = _UxGT("0.100 in");
290
   LSTR MSG_MOVE_1IN                       = _UxGT("1.000 in");
282
   LSTR MSG_MOVE_1IN                       = _UxGT("1.000 in");
291
   LSTR MSG_SPEED                          = _UxGT("Geschw.");
283
   LSTR MSG_SPEED                          = _UxGT("Geschw.");
292
-  LSTR MSG_MAXSPEED                       = _UxGT("Max Geschw. (mm/s)");
293
-  LSTR MSG_MAXSPEED_X                     = _UxGT("Max ") STR_A _UxGT(" Geschw.");
294
-  LSTR MSG_MAXSPEED_Y                     = _UxGT("Max ") STR_B _UxGT(" Geschw.");
295
-  LSTR MSG_MAXSPEED_Z                     = _UxGT("Max ") STR_C _UxGT(" Geschw.");
296
-  LSTR MSG_MAXSPEED_E                     = _UxGT("Max ") STR_E _UxGT(" Geschw.");
297
-  LSTR MSG_MAXSPEED_A                     = _UxGT("Max @ Geschw.");
298
   LSTR MSG_BED_Z                          = _UxGT("Bett Z");
284
   LSTR MSG_BED_Z                          = _UxGT("Bett Z");
299
   LSTR MSG_NOZZLE                         = _UxGT("Düse");
285
   LSTR MSG_NOZZLE                         = _UxGT("Düse");
300
   LSTR MSG_NOZZLE_N                       = _UxGT("Düse ~");
286
   LSTR MSG_NOZZLE_N                       = _UxGT("Düse ~");
347
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
333
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
348
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
334
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
349
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
335
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
350
-  LSTR MSG_VI_JERK                        = _UxGT("Max ") STR_I _UxGT(" Jerk");
351
-  LSTR MSG_VJ_JERK                        = _UxGT("Max ") STR_J _UxGT(" Jerk");
352
-  LSTR MSG_VK_JERK                        = _UxGT("Max ") STR_K _UxGT(" Jerk");
336
+  LSTR MSG_VN_JERK                        = _UxGT("Max @ Jerk");
353
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
337
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
354
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
338
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
355
-  LSTR MSG_VELOCITY                       = _UxGT("Geschwindigkeit");
339
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Geschw. (mm/s)");
356
   LSTR MSG_VMAX_A                         = _UxGT("V max ") STR_A;
340
   LSTR MSG_VMAX_A                         = _UxGT("V max ") STR_A;
357
   LSTR MSG_VMAX_B                         = _UxGT("V max ") STR_B;
341
   LSTR MSG_VMAX_B                         = _UxGT("V max ") STR_B;
358
   LSTR MSG_VMAX_C                         = _UxGT("V max ") STR_C;
342
   LSTR MSG_VMAX_C                         = _UxGT("V max ") STR_C;
359
-  LSTR MSG_VMAX_I                         = _UxGT("V max ") STR_I;
360
-  LSTR MSG_VMAX_J                         = _UxGT("V max ") STR_J;
361
-  LSTR MSG_VMAX_K                         = _UxGT("V max ") STR_K;
362
-  LSTR MSG_VMAX_E                         = _UxGT("V max ") STR_E;
343
+  LSTR MSG_VMAX_N                         = _UxGT("V max @");
344
+  LSTR MSG_VMAX_E                         = _UxGT("V max E");
363
   LSTR MSG_VMAX_EN                        = _UxGT("V max *");
345
   LSTR MSG_VMAX_EN                        = _UxGT("V max *");
364
   LSTR MSG_VMIN                           = _UxGT("V min ");
346
   LSTR MSG_VMIN                           = _UxGT("V min ");
365
   LSTR MSG_VTRAV_MIN                      = _UxGT("V min Leerfahrt");
347
   LSTR MSG_VTRAV_MIN                      = _UxGT("V min Leerfahrt");
367
   LSTR MSG_AMAX_A                         = _UxGT("A max ") STR_A;
349
   LSTR MSG_AMAX_A                         = _UxGT("A max ") STR_A;
368
   LSTR MSG_AMAX_B                         = _UxGT("A max ") STR_B;
350
   LSTR MSG_AMAX_B                         = _UxGT("A max ") STR_B;
369
   LSTR MSG_AMAX_C                         = _UxGT("A max ") STR_C;
351
   LSTR MSG_AMAX_C                         = _UxGT("A max ") STR_C;
370
-  LSTR MSG_AMAX_I                         = _UxGT("A max ") STR_I;
371
-  LSTR MSG_AMAX_J                         = _UxGT("A max ") STR_J;
372
-  LSTR MSG_AMAX_K                         = _UxGT("A max ") STR_K;
373
-  LSTR MSG_AMAX_E                         = _UxGT("A max ") STR_E;
352
+  LSTR MSG_AMAX_N                         = _UxGT("A max @");
353
+  LSTR MSG_AMAX_E                         = _UxGT("A max E");
374
   LSTR MSG_AMAX_EN                        = _UxGT("A max *");
354
   LSTR MSG_AMAX_EN                        = _UxGT("A max *");
375
   LSTR MSG_A_RETRACT                      = _UxGT("A Einzug");
355
   LSTR MSG_A_RETRACT                      = _UxGT("A Einzug");
376
   LSTR MSG_A_TRAVEL                       = _UxGT("A Leerfahrt");
356
   LSTR MSG_A_TRAVEL                       = _UxGT("A Leerfahrt");
380
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steps/mm");
360
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steps/mm");
381
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steps/mm");
361
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steps/mm");
382
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steps/mm");
362
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steps/mm");
383
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" Steps/mm");
384
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" Steps/mm");
385
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" Steps/mm");
386
-  LSTR MSG_E_STEPS                        = STR_E _UxGT(" Steps/mm");
363
+  LSTR MSG_N_STEPS                        = _UxGT("@ Steps/mm");
364
+  LSTR MSG_E_STEPS                        = _UxGT("E Steps/mm");
387
   LSTR MSG_EN_STEPS                       = _UxGT("* Steps/mm");
365
   LSTR MSG_EN_STEPS                       = _UxGT("* Steps/mm");
388
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatur");
366
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatur");
389
   LSTR MSG_MOTION                         = _UxGT("Bewegung");
367
   LSTR MSG_MOTION                         = _UxGT("Bewegung");
533
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
511
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
534
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
512
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
535
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
513
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
536
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Babystep ") STR_I;
537
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Babystep ") STR_J;
538
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Babystep ") STR_K;
514
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
539
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
515
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
540
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Abbr. mit Endstopp");
516
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Abbr. mit Endstopp");
541
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("HEIZEN ERFOLGLOS");
517
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("HEIZEN ERFOLGLOS");
629
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
605
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
630
   LSTR MSG_INFO_PSU                       = _UxGT("Netzteil");
606
   LSTR MSG_INFO_PSU                       = _UxGT("Netzteil");
631
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Motorleistung");
607
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Motorleistung");
632
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Treiber %");
633
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Treiber %");
634
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Treiber %");
635
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Treiber %");
636
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Treiber %");
637
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Treiber %");
638
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Treiber %");
608
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Treiber %");
639
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC Verbindungsfehler");
609
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC Verbindungsfehler");
640
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Werte speichern");
610
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Werte speichern");
641
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT WECHSEL");
611
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT WECHSEL");

+ 6
- 14
Marlin/src/lcd/language/language_el.h View File

119
   LSTR MSG_VA_JERK                        = _UxGT("Vαντίδραση ") STR_A;
119
   LSTR MSG_VA_JERK                        = _UxGT("Vαντίδραση ") STR_A;
120
   LSTR MSG_VB_JERK                        = _UxGT("Vαντίδραση ") STR_B;
120
   LSTR MSG_VB_JERK                        = _UxGT("Vαντίδραση ") STR_B;
121
   LSTR MSG_VC_JERK                        = _UxGT("Vαντίδραση ") STR_C;
121
   LSTR MSG_VC_JERK                        = _UxGT("Vαντίδραση ") STR_C;
122
-  LSTR MSG_VI_JERK                        = _UxGT("Vαντίδραση ") STR_I;
123
-  LSTR MSG_VJ_JERK                        = _UxGT("Vαντίδραση ") STR_J;
124
-  LSTR MSG_VK_JERK                        = _UxGT("Vαντίδραση ") STR_K;
122
+  LSTR MSG_VN_JERK                        = _UxGT("Vαντίδραση @");
125
   LSTR MSG_VE_JERK                        = _UxGT("Vαντίδραση E");
123
   LSTR MSG_VE_JERK                        = _UxGT("Vαντίδραση E");
126
   LSTR MSG_VMAX_A                         = _UxGT("V Μέγιστο") STR_A;
124
   LSTR MSG_VMAX_A                         = _UxGT("V Μέγιστο") STR_A;
127
   LSTR MSG_VMAX_B                         = _UxGT("V Μέγιστο") STR_B;
125
   LSTR MSG_VMAX_B                         = _UxGT("V Μέγιστο") STR_B;
128
   LSTR MSG_VMAX_C                         = _UxGT("V Μέγιστο") STR_C;
126
   LSTR MSG_VMAX_C                         = _UxGT("V Μέγιστο") STR_C;
129
-  LSTR MSG_VMAX_I                         = _UxGT("V Μέγιστο") STR_I;
130
-  LSTR MSG_VMAX_J                         = _UxGT("V Μέγιστο") STR_J;
131
-  LSTR MSG_VMAX_K                         = _UxGT("V Μέγιστο") STR_K;
132
-  LSTR MSG_VMAX_E                         = _UxGT("V Μέγιστο") STR_E;
127
+  LSTR MSG_VMAX_N                         = _UxGT("V Μέγιστο@");
128
+  LSTR MSG_VMAX_E                         = _UxGT("V ΜέγιστοE");
133
   LSTR MSG_VMAX_EN                        = _UxGT("V Μέγιστο *");
129
   LSTR MSG_VMAX_EN                        = _UxGT("V Μέγιστο *");
134
   LSTR MSG_VMIN                           = _UxGT("V Ελάχιστο");
130
   LSTR MSG_VMIN                           = _UxGT("V Ελάχιστο");
135
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vελάχ. μετατόπιση");
131
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vελάχ. μετατόπιση");
137
   LSTR MSG_AMAX_A                         = _UxGT("Aμεγ ") STR_A;
133
   LSTR MSG_AMAX_A                         = _UxGT("Aμεγ ") STR_A;
138
   LSTR MSG_AMAX_B                         = _UxGT("Aμεγ ") STR_B;
134
   LSTR MSG_AMAX_B                         = _UxGT("Aμεγ ") STR_B;
139
   LSTR MSG_AMAX_C                         = _UxGT("Aμεγ ") STR_C;
135
   LSTR MSG_AMAX_C                         = _UxGT("Aμεγ ") STR_C;
140
-  LSTR MSG_AMAX_I                         = _UxGT("Aμεγ ") STR_I;
141
-  LSTR MSG_AMAX_J                         = _UxGT("Aμεγ ") STR_J;
142
-  LSTR MSG_AMAX_K                         = _UxGT("Aμεγ ") STR_K;
143
-  LSTR MSG_AMAX_E                         = _UxGT("Aμεγ ") STR_E;
136
+  LSTR MSG_AMAX_N                         = _UxGT("Aμεγ @");
137
+  LSTR MSG_AMAX_E                         = _UxGT("Aμεγ E");
144
   LSTR MSG_AMAX_EN                        = _UxGT("Aμεγ *");
138
   LSTR MSG_AMAX_EN                        = _UxGT("Aμεγ *");
145
   LSTR MSG_A_RETRACT                      = _UxGT("Α-ανάσυρση");
139
   LSTR MSG_A_RETRACT                      = _UxGT("Α-ανάσυρση");
146
   LSTR MSG_A_TRAVEL                       = _UxGT("Α-μετατόπιση");
140
   LSTR MSG_A_TRAVEL                       = _UxGT("Α-μετατόπιση");
148
   LSTR MSG_A_STEPS                        = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ");
142
   LSTR MSG_A_STEPS                        = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ");
149
   LSTR MSG_B_STEPS                        = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ");
143
   LSTR MSG_B_STEPS                        = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ");
150
   LSTR MSG_C_STEPS                        = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ");
144
   LSTR MSG_C_STEPS                        = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ");
151
-  LSTR MSG_I_STEPS                        = _UxGT("Bήματα ") STR_I _UxGT(" ανά μμ");
152
-  LSTR MSG_J_STEPS                        = _UxGT("Bήματα ") STR_J _UxGT(" ανά μμ");
153
-  LSTR MSG_K_STEPS                        = _UxGT("Bήματα ") STR_K _UxGT(" ανά μμ");
145
+  LSTR MSG_N_STEPS                        = _UxGT("Bήματα @ ανά μμ");
154
   LSTR MSG_E_STEPS                        = _UxGT("Bήματα Ε ανά μμ");
146
   LSTR MSG_E_STEPS                        = _UxGT("Bήματα Ε ανά μμ");
155
   LSTR MSG_EN_STEPS                       = _UxGT("Bήματα * ανά μμ");
147
   LSTR MSG_EN_STEPS                       = _UxGT("Bήματα * ανά μμ");
156
   LSTR MSG_TEMPERATURE                    = _UxGT("Θερμοκρασία");
148
   LSTR MSG_TEMPERATURE                    = _UxGT("Θερμοκρασία");

+ 6
- 14
Marlin/src/lcd/language/language_el_gr.h View File

109
   LSTR MSG_VA_JERK                        = _UxGT("Vαντίδραση ") STR_A;
109
   LSTR MSG_VA_JERK                        = _UxGT("Vαντίδραση ") STR_A;
110
   LSTR MSG_VB_JERK                        = _UxGT("Vαντίδραση ") STR_B;
110
   LSTR MSG_VB_JERK                        = _UxGT("Vαντίδραση ") STR_B;
111
   LSTR MSG_VC_JERK                        = _UxGT("Vαντίδραση ") STR_C;
111
   LSTR MSG_VC_JERK                        = _UxGT("Vαντίδραση ") STR_C;
112
-  LSTR MSG_VI_JERK                        = _UxGT("Vαντίδραση ") STR_I;
113
-  LSTR MSG_VJ_JERK                        = _UxGT("Vαντίδραση ") STR_J;
114
-  LSTR MSG_VK_JERK                        = _UxGT("Vαντίδραση ") STR_K;
112
+  LSTR MSG_VN_JERK                        = _UxGT("Vαντίδραση @");
115
   LSTR MSG_VE_JERK                        = _UxGT("Vαντίδραση E");
113
   LSTR MSG_VE_JERK                        = _UxGT("Vαντίδραση E");
116
   LSTR MSG_VMAX_A                         = _UxGT("Vμεγ ") STR_A;
114
   LSTR MSG_VMAX_A                         = _UxGT("Vμεγ ") STR_A;
117
   LSTR MSG_VMAX_B                         = _UxGT("Vμεγ ") STR_B;
115
   LSTR MSG_VMAX_B                         = _UxGT("Vμεγ ") STR_B;
118
   LSTR MSG_VMAX_C                         = _UxGT("Vμεγ ") STR_C;
116
   LSTR MSG_VMAX_C                         = _UxGT("Vμεγ ") STR_C;
119
-  LSTR MSG_VMAX_I                         = _UxGT("Vμεγ ") STR_I;
120
-  LSTR MSG_VMAX_J                         = _UxGT("Vμεγ ") STR_J;
121
-  LSTR MSG_VMAX_K                         = _UxGT("Vμεγ ") STR_K;
122
-  LSTR MSG_VMAX_E                         = _UxGT("Vμεγ ") STR_E;
117
+  LSTR MSG_VMAX_N                         = _UxGT("Vμεγ @");
118
+  LSTR MSG_VMAX_E                         = _UxGT("Vμεγ E");
123
   LSTR MSG_VMAX_EN                        = _UxGT("Vμεγ *");
119
   LSTR MSG_VMAX_EN                        = _UxGT("Vμεγ *");
124
   LSTR MSG_VMIN                           = _UxGT("Vελαχ");
120
   LSTR MSG_VMIN                           = _UxGT("Vελαχ");
125
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vελάχ. μετατόπιση");
121
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vελάχ. μετατόπιση");
127
   LSTR MSG_AMAX_A                         = _UxGT("Aμεγ ") STR_A;
123
   LSTR MSG_AMAX_A                         = _UxGT("Aμεγ ") STR_A;
128
   LSTR MSG_AMAX_B                         = _UxGT("Aμεγ ") STR_B;
124
   LSTR MSG_AMAX_B                         = _UxGT("Aμεγ ") STR_B;
129
   LSTR MSG_AMAX_C                         = _UxGT("Aμεγ ") STR_C;
125
   LSTR MSG_AMAX_C                         = _UxGT("Aμεγ ") STR_C;
130
-  LSTR MSG_AMAX_I                         = _UxGT("Aμεγ ") STR_I;
131
-  LSTR MSG_AMAX_J                         = _UxGT("Aμεγ ") STR_J;
132
-  LSTR MSG_AMAX_K                         = _UxGT("Aμεγ ") STR_K;
133
-  LSTR MSG_AMAX_E                         = _UxGT("Aμεγ ") STR_E;
126
+  LSTR MSG_AMAX_N                         = _UxGT("Aμεγ @");
127
+  LSTR MSG_AMAX_E                         = _UxGT("Aμεγ E");
134
   LSTR MSG_AMAX_EN                        = _UxGT("Aμεγ *");
128
   LSTR MSG_AMAX_EN                        = _UxGT("Aμεγ *");
135
   LSTR MSG_A_RETRACT                      = _UxGT("Α-ανάσυρση");
129
   LSTR MSG_A_RETRACT                      = _UxGT("Α-ανάσυρση");
136
   LSTR MSG_A_TRAVEL                       = _UxGT("Α-μετατόπιση");
130
   LSTR MSG_A_TRAVEL                       = _UxGT("Α-μετατόπιση");
138
   LSTR MSG_A_STEPS                        = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ");
132
   LSTR MSG_A_STEPS                        = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ");
139
   LSTR MSG_B_STEPS                        = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ");
133
   LSTR MSG_B_STEPS                        = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ");
140
   LSTR MSG_C_STEPS                        = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ");
134
   LSTR MSG_C_STEPS                        = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ");
141
-  LSTR MSG_I_STEPS                        = _UxGT("Bήματα ") STR_I _UxGT(" ανά μμ");
142
-  LSTR MSG_J_STEPS                        = _UxGT("Bήματα ") STR_J _UxGT(" ανά μμ");
143
-  LSTR MSG_K_STEPS                        = _UxGT("Bήματα ") STR_K _UxGT(" ανά μμ");
135
+  LSTR MSG_N_STEPS                        = _UxGT("Bήματα @ ανά μμ");
144
   LSTR MSG_E_STEPS                        = _UxGT("Bήματα Ε ανά μμ");
136
   LSTR MSG_E_STEPS                        = _UxGT("Bήματα Ε ανά μμ");
145
   LSTR MSG_EN_STEPS                       = _UxGT("Bήματα * ανά μμ");
137
   LSTR MSG_EN_STEPS                       = _UxGT("Bήματα * ανά μμ");
146
   LSTR MSG_TEMPERATURE                    = _UxGT("Θερμοκρασία");
138
   LSTR MSG_TEMPERATURE                    = _UxGT("Θερμοκρασία");

+ 19
- 79
Marlin/src/lcd/language/language_en.h View File

27
  * LCD Menu Messages
27
  * LCD Menu Messages
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
29
  *
29
  *
30
- * Substitutions are applied for the following characters when used
31
- * in menu items that call lcd_put_u8str_ind_P with an index:
30
+ * Substitutions are applied for the following characters when used in menu items titles:
32
  *
31
  *
33
- *   $ displays an inserted C-string
32
+ *   $ displays an inserted string
34
  *   = displays  '0'....'10' for indexes 0 - 10
33
  *   = displays  '0'....'10' for indexes 0 - 10
35
  *   ~ displays  '1'....'11' for indexes 0 - 10
34
  *   ~ displays  '1'....'11' for indexes 0 - 10
36
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
35
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
106
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Home Offset X");
105
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Home Offset X");
107
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Home Offset Y");
106
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Home Offset Y");
108
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Home Offset Z");
107
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Home Offset Z");
109
-  LSTR MSG_HOME_OFFSET_I                  = _UxGT("Home Offset ") STR_I;
110
-  LSTR MSG_HOME_OFFSET_J                  = _UxGT("Home Offset ") STR_J;
111
-  LSTR MSG_HOME_OFFSET_K                  = _UxGT("Home Offset ") STR_K;
112
-  LSTR MSG_HOME_OFFSET_U                  = _UxGT("Home Offset ") STR_U;
113
-  LSTR MSG_HOME_OFFSET_V                  = _UxGT("Home Offset ") STR_V;
114
-  LSTR MSG_HOME_OFFSET_W                  = _UxGT("Home Offset ") STR_W;
115
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offsets Applied");
108
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offsets Applied");
116
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Wizard");
109
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Tramming Wizard");
117
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Select Origin");
110
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Select Origin");
314
   LSTR MSG_MOVE_X                         = _UxGT("Move X"); // Used by draw_edit_screen
307
   LSTR MSG_MOVE_X                         = _UxGT("Move X"); // Used by draw_edit_screen
315
   LSTR MSG_MOVE_Y                         = _UxGT("Move Y");
308
   LSTR MSG_MOVE_Y                         = _UxGT("Move Y");
316
   LSTR MSG_MOVE_Z                         = _UxGT("Move Z");
309
   LSTR MSG_MOVE_Z                         = _UxGT("Move Z");
317
-  LSTR MSG_MOVE_I                         = _UxGT("Move ") STR_I;
318
-  LSTR MSG_MOVE_J                         = _UxGT("Move ") STR_J;
319
-  LSTR MSG_MOVE_K                         = _UxGT("Move ") STR_K;
320
-  LSTR MSG_MOVE_U                         = _UxGT("Move ") STR_U;
321
-  LSTR MSG_MOVE_V                         = _UxGT("Move ") STR_V;
322
-  LSTR MSG_MOVE_W                         = _UxGT("Move ") STR_W;
310
+  LSTR MSG_MOVE_N                         = _UxGT("Move @");
323
   LSTR MSG_MOVE_E                         = _UxGT("Move Extruder");
311
   LSTR MSG_MOVE_E                         = _UxGT("Move Extruder");
324
   LSTR MSG_MOVE_EN                        = _UxGT("Move E*");
312
   LSTR MSG_MOVE_EN                        = _UxGT("Move E*");
325
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend too cold");
313
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend too cold");
326
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Move %smm");
314
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Move $mm");
327
   LSTR MSG_MOVE_01MM                      = _UxGT("Move 0.1mm");
315
   LSTR MSG_MOVE_01MM                      = _UxGT("Move 0.1mm");
328
   LSTR MSG_MOVE_1MM                       = _UxGT("Move 1mm");
316
   LSTR MSG_MOVE_1MM                       = _UxGT("Move 1mm");
329
   LSTR MSG_MOVE_10MM                      = _UxGT("Move 10mm");
317
   LSTR MSG_MOVE_10MM                      = _UxGT("Move 10mm");
333
   LSTR MSG_MOVE_01IN                      = _UxGT("Move 0.1in");
321
   LSTR MSG_MOVE_01IN                      = _UxGT("Move 0.1in");
334
   LSTR MSG_MOVE_1IN                       = _UxGT("Move 1.0in");
322
   LSTR MSG_MOVE_1IN                       = _UxGT("Move 1.0in");
335
   LSTR MSG_SPEED                          = _UxGT("Speed");
323
   LSTR MSG_SPEED                          = _UxGT("Speed");
336
-  LSTR MSG_MAXSPEED                       = _UxGT("Max Speed (mm/s)");
337
-  LSTR MSG_MAXSPEED_X                     = _UxGT("Max ") STR_A _UxGT(" Speed");
338
-  LSTR MSG_MAXSPEED_Y                     = _UxGT("Max ") STR_B _UxGT(" Speed");
339
-  LSTR MSG_MAXSPEED_Z                     = _UxGT("Max ") STR_C _UxGT(" Speed");
340
-  LSTR MSG_MAXSPEED_E                     = _UxGT("Max ") STR_E _UxGT(" Speed");
341
-  LSTR MSG_MAXSPEED_A                     = _UxGT("Max @ Speed");
342
   LSTR MSG_BED_Z                          = _UxGT("Bed Z");
324
   LSTR MSG_BED_Z                          = _UxGT("Bed Z");
343
   LSTR MSG_NOZZLE                         = _UxGT("Nozzle");
325
   LSTR MSG_NOZZLE                         = _UxGT("Nozzle");
344
   LSTR MSG_NOZZLE_N                       = _UxGT("Nozzle ~");
326
   LSTR MSG_NOZZLE_N                       = _UxGT("Nozzle ~");
395
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
377
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
396
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
378
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
397
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
379
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
398
-  LSTR MSG_VI_JERK                        = _UxGT("Max ") STR_I _UxGT(" Jerk");
399
-  LSTR MSG_VJ_JERK                        = _UxGT("Max ") STR_J _UxGT(" Jerk");
400
-  LSTR MSG_VK_JERK                        = _UxGT("Max ") STR_K _UxGT(" Jerk");
401
-  LSTR MSG_VU_JERK                        = _UxGT("Max ") STR_U _UxGT(" Jerk");
402
-  LSTR MSG_VV_JERK                        = _UxGT("Max ") STR_V _UxGT(" Jerk");
403
-  LSTR MSG_VW_JERK                        = _UxGT("Max ") STR_W _UxGT(" Jerk");
380
+  LSTR MSG_VN_JERK                        = _UxGT("Max @ Jerk");
404
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
381
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
405
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
382
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
406
-  LSTR MSG_VELOCITY                       = _UxGT("Velocity");
407
-  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Vel");
408
-  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Vel");
409
-  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Vel");
410
-  LSTR MSG_VMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Vel");
411
-  LSTR MSG_VMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Vel");
412
-  LSTR MSG_VMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Vel");
413
-  LSTR MSG_VMAX_U                         = _UxGT("Max ") STR_U _UxGT(" Vel");
414
-  LSTR MSG_VMAX_V                         = _UxGT("Max ") STR_V _UxGT(" Vel");
415
-  LSTR MSG_VMAX_W                         = _UxGT("Max ") STR_W _UxGT(" Vel");
416
-  LSTR MSG_VMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Vel");
417
-  LSTR MSG_VMAX_EN                        = _UxGT("Max * Vel");
383
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Speed (mm/s)");
384
+  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Speed");
385
+  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Speed");
386
+  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Speed");
387
+  LSTR MSG_VMAX_N                         = _UxGT("Max @ Speed");
388
+  LSTR MSG_VMAX_E                         = _UxGT("Max E Speed");
389
+  LSTR MSG_VMAX_EN                        = _UxGT("Max * Speed");
418
   LSTR MSG_VMIN                           = _UxGT("Min Velocity");
390
   LSTR MSG_VMIN                           = _UxGT("Min Velocity");
419
-  LSTR MSG_VTRAV_MIN                      = _UxGT("Min Travel Vel");
391
+  LSTR MSG_VTRAV_MIN                      = _UxGT("Min Travel Speed");
420
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleration");
392
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleration");
421
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Accel");
393
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Accel");
422
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Accel");
394
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Accel");
423
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Accel");
395
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Accel");
424
-  LSTR MSG_AMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Accel");
425
-  LSTR MSG_AMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Accel");
426
-  LSTR MSG_AMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Accel");
427
-  LSTR MSG_AMAX_U                         = _UxGT("Max ") STR_U _UxGT(" Accel");
428
-  LSTR MSG_AMAX_V                         = _UxGT("Max ") STR_V _UxGT(" Accel");
429
-  LSTR MSG_AMAX_W                         = _UxGT("Max ") STR_W _UxGT(" Accel");
430
-  LSTR MSG_AMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Accel");
396
+  LSTR MSG_AMAX_N                         = _UxGT("Max @ Accel");
397
+  LSTR MSG_AMAX_E                         = _UxGT("Max E Accel");
431
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Accel");
398
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Accel");
432
   LSTR MSG_A_RETRACT                      = _UxGT("Retract Accel");
399
   LSTR MSG_A_RETRACT                      = _UxGT("Retract Accel");
433
   LSTR MSG_A_TRAVEL                       = _UxGT("Travel Accel");
400
   LSTR MSG_A_TRAVEL                       = _UxGT("Travel Accel");
437
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steps/mm");
404
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steps/mm");
438
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steps/mm");
405
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steps/mm");
439
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steps/mm");
406
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steps/mm");
440
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" Steps/mm");
441
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" Steps/mm");
442
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" Steps/mm");
443
-  LSTR MSG_U_STEPS                        = STR_U _UxGT(" Steps/mm");
444
-  LSTR MSG_V_STEPS                        = STR_V _UxGT(" Steps/mm");
445
-  LSTR MSG_W_STEPS                        = STR_W _UxGT(" Steps/mm");
407
+  LSTR MSG_N_STEPS                        = _UxGT("@ steps/mm");
446
   LSTR MSG_E_STEPS                        = _UxGT("E steps/mm");
408
   LSTR MSG_E_STEPS                        = _UxGT("E steps/mm");
447
   LSTR MSG_EN_STEPS                       = _UxGT("* Steps/mm");
409
   LSTR MSG_EN_STEPS                       = _UxGT("* Steps/mm");
448
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperature");
410
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperature");
605
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
567
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
606
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
568
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
607
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
569
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
608
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Babystep ") STR_I;
609
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Babystep ") STR_J;
610
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Babystep ") STR_K;
611
-  LSTR MSG_BABYSTEP_U                     = _UxGT("Babystep ") STR_U;
612
-  LSTR MSG_BABYSTEP_V                     = _UxGT("Babystep ") STR_V;
613
-  LSTR MSG_BABYSTEP_W                     = _UxGT("Babystep ") STR_W;
570
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
614
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
571
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
615
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop Abort");
572
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop Abort");
616
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Heating Failed");
573
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Heating Failed");
707
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
664
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
708
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
665
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
709
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Drive Strength");
666
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Drive Strength");
710
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
711
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
712
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
713
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
714
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
715
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
716
-  LSTR MSG_DAC_PERCENT_U                  = STR_U _UxGT(" Driver %");
717
-  LSTR MSG_DAC_PERCENT_V                  = STR_V _UxGT(" Driver %");
718
-  LSTR MSG_DAC_PERCENT_W                  = STR_W _UxGT(" Driver %");
719
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
667
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
720
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CONNECTION ERROR");
668
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CONNECTION ERROR");
721
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Write");
669
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Write");
722
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT CHANGE");
670
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT CHANGE");
889
   LSTR MSG_PID_C_E                        = _UxGT("PID-C *");
837
   LSTR MSG_PID_C_E                        = _UxGT("PID-C *");
890
   LSTR MSG_PID_F                          = _UxGT("PID-F");
838
   LSTR MSG_PID_F                          = _UxGT("PID-F");
891
   LSTR MSG_PID_F_E                        = _UxGT("PID-F *");
839
   LSTR MSG_PID_F_E                        = _UxGT("PID-F *");
892
-  LSTR MSG_BACKLASH_A                     = STR_A;
893
-  LSTR MSG_BACKLASH_B                     = STR_B;
894
-  LSTR MSG_BACKLASH_C                     = STR_C;
895
-  LSTR MSG_BACKLASH_I                     = STR_I;
896
-  LSTR MSG_BACKLASH_J                     = STR_J;
897
-  LSTR MSG_BACKLASH_K                     = STR_K;
898
-  LSTR MSG_BACKLASH_U                     = STR_U;
899
-  LSTR MSG_BACKLASH_V                     = STR_V;
900
-  LSTR MSG_BACKLASH_W                     = STR_W;
840
+  LSTR MSG_BACKLASH_N                     = _UxGT("@");
901
 }
841
 }
902
 
842
 
903
 #if FAN_COUNT == 1
843
 #if FAN_COUNT == 1

+ 14
- 27
Marlin/src/lcd/language/language_es.h View File

229
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
229
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
230
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
230
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
231
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend muy frio");
231
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend muy frio");
232
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover %smm");
232
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover $mm");
233
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
233
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
234
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
234
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
235
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
235
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
270
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
270
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
271
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
271
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
272
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
272
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
273
-  LSTR MSG_VI_JERK                        = _UxGT("Max ") STR_I _UxGT(" Jerk");
274
-  LSTR MSG_VJ_JERK                        = _UxGT("Max ") STR_J _UxGT(" Jerk");
275
-  LSTR MSG_VK_JERK                        = _UxGT("Max ") STR_K _UxGT(" Jerk");
273
+  LSTR MSG_VN_JERK                        = _UxGT("Max @ Jerk");
276
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
274
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
277
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desvi. Unión");
275
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desvi. Unión");
278
-  LSTR MSG_VELOCITY                       = _UxGT("Velocidad");
279
-  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Vel");
280
-  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Vel");
281
-  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Vel");
282
-  LSTR MSG_VMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Vel");
283
-  LSTR MSG_VMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Vel");
284
-  LSTR MSG_VMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Vel");
285
-  LSTR MSG_VMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Vel");
286
-  LSTR MSG_VMAX_EN                        = _UxGT("Max * Vel");
276
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Velocidad");
277
+  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Speed");
278
+  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Speed");
279
+  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Speed");
280
+  LSTR MSG_VMAX_N                         = _UxGT("Max @ Speed");
281
+  LSTR MSG_VMAX_E                         = _UxGT("Max E Speed");
282
+  LSTR MSG_VMAX_EN                        = _UxGT("Max * Speed");
287
   LSTR MSG_VMIN                           = _UxGT("Vmin");
283
   LSTR MSG_VMIN                           = _UxGT("Vmin");
288
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vel. viaje min");
284
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vel. viaje min");
289
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleración");
285
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleración");
290
   LSTR MSG_AMAX_A                         = _UxGT("Acel. max") STR_A;
286
   LSTR MSG_AMAX_A                         = _UxGT("Acel. max") STR_A;
291
   LSTR MSG_AMAX_B                         = _UxGT("Acel. max") STR_B;
287
   LSTR MSG_AMAX_B                         = _UxGT("Acel. max") STR_B;
292
   LSTR MSG_AMAX_C                         = _UxGT("Acel. max") STR_C;
288
   LSTR MSG_AMAX_C                         = _UxGT("Acel. max") STR_C;
293
-  LSTR MSG_AMAX_I                         = _UxGT("Acel. max") STR_I;
294
-  LSTR MSG_AMAX_J                         = _UxGT("Acel. max") STR_J;
295
-  LSTR MSG_AMAX_K                         = _UxGT("Acel. max") STR_K;
296
-  LSTR MSG_AMAX_E                         = _UxGT("Acel. max") STR_E;
289
+  LSTR MSG_AMAX_N                         = _UxGT("Acel. max@");
290
+  LSTR MSG_AMAX_E                         = _UxGT("Acel. maxE");
297
   LSTR MSG_AMAX_EN                        = _UxGT("Acel. max *");
291
   LSTR MSG_AMAX_EN                        = _UxGT("Acel. max *");
298
   LSTR MSG_A_RETRACT                      = _UxGT("Acel. retrac.");
292
   LSTR MSG_A_RETRACT                      = _UxGT("Acel. retrac.");
299
   LSTR MSG_A_TRAVEL                       = _UxGT("Acel. Viaje");
293
   LSTR MSG_A_TRAVEL                       = _UxGT("Acel. Viaje");
301
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pasos/mm");
295
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pasos/mm");
302
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pasos/mm");
296
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pasos/mm");
303
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pasos/mm");
297
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pasos/mm");
304
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" pasos/mm");
305
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" pasos/mm");
306
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" pasos/mm");
298
+  LSTR MSG_N_STEPS                        = _UxGT("@ pasos/mm");
307
   LSTR MSG_E_STEPS                        = _UxGT("E pasos/mm");
299
   LSTR MSG_E_STEPS                        = _UxGT("E pasos/mm");
308
   LSTR MSG_EN_STEPS                       = _UxGT("* pasos/mm");
300
   LSTR MSG_EN_STEPS                       = _UxGT("* pasos/mm");
309
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
301
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
413
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
405
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
414
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
406
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
415
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
407
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
408
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Micropaso @");
416
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
409
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
417
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancelado - Endstop");
410
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Cancelado - Endstop");
418
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Calent. fallido");
411
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Calent. fallido");
480
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp. Máxima");
473
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp. Máxima");
481
   LSTR MSG_INFO_PSU                       = _UxGT("F. Aliment.");
474
   LSTR MSG_INFO_PSU                       = _UxGT("F. Aliment.");
482
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Fuerza de empuje");
475
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Fuerza de empuje");
483
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
484
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
485
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
486
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
487
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
488
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
489
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
476
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
490
   LSTR MSG_ERROR_TMC                      = _UxGT("ERROR CONEX. TMC");
477
   LSTR MSG_ERROR_TMC                      = _UxGT("ERROR CONEX. TMC");
491
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Escribe DAC EEPROM");
478
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Escribe DAC EEPROM");
492
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIAR FILAMENTO");
479
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIAR FILAMENTO");

+ 5
- 14
Marlin/src/lcd/language/language_eu.h View File

138
   LSTR MSG_MOVE_Z                         = _UxGT("Mugitu Z");
138
   LSTR MSG_MOVE_Z                         = _UxGT("Mugitu Z");
139
   LSTR MSG_MOVE_E                         = _UxGT("Estrusorea");
139
   LSTR MSG_MOVE_E                         = _UxGT("Estrusorea");
140
   LSTR MSG_MOVE_EN                        = _UxGT("Estrusorea *");
140
   LSTR MSG_MOVE_EN                        = _UxGT("Estrusorea *");
141
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mugitu %smm");
141
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mugitu $mm");
142
   LSTR MSG_MOVE_01MM                      = _UxGT("Mugitu 0.1mm");
142
   LSTR MSG_MOVE_01MM                      = _UxGT("Mugitu 0.1mm");
143
   LSTR MSG_MOVE_1MM                       = _UxGT("Mugitu 1mm");
143
   LSTR MSG_MOVE_1MM                       = _UxGT("Mugitu 1mm");
144
   LSTR MSG_MOVE_10MM                      = _UxGT("Mugitu 10mm");
144
   LSTR MSG_MOVE_10MM                      = _UxGT("Mugitu 10mm");
166
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-astindua");
166
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-astindua");
167
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-astindua");
167
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-astindua");
168
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-astindua");
168
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-astindua");
169
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT("-astindua");
170
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT("-astindua");
171
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT("-astindua");
169
+  LSTR MSG_VN_JERK                        = _UxGT("V@-astindua");
172
   LSTR MSG_VE_JERK                        = _UxGT("Ve-astindua");
170
   LSTR MSG_VE_JERK                        = _UxGT("Ve-astindua");
173
   LSTR MSG_VTRAV_MIN                      = _UxGT("VBidaia min");
171
   LSTR MSG_VTRAV_MIN                      = _UxGT("VBidaia min");
174
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
172
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
177
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pausoak/mm");
175
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pausoak/mm");
178
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pausoak/mm");
176
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pausoak/mm");
179
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pausoak/mm");
177
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pausoak/mm");
180
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" pausoak/mm");
181
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" pausoak/mm");
182
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" pausoak/mm");
178
+  LSTR MSG_N_STEPS                        = _UxGT("@ pausoak/mm");
183
   LSTR MSG_E_STEPS                        = _UxGT("E pausoak/mm");
179
   LSTR MSG_E_STEPS                        = _UxGT("E pausoak/mm");
184
   LSTR MSG_EN_STEPS                       = _UxGT("* pausoak/mm");
180
   LSTR MSG_EN_STEPS                       = _UxGT("* pausoak/mm");
185
   LSTR MSG_TEMPERATURE                    = _UxGT("Tenperatura");
181
   LSTR MSG_TEMPERATURE                    = _UxGT("Tenperatura");
243
   LSTR MSG_BABYSTEP_X                     = _UxGT("Mikro-urratsa X");
239
   LSTR MSG_BABYSTEP_X                     = _UxGT("Mikro-urratsa X");
244
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Mikro-urratsa Y");
240
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Mikro-urratsa Y");
245
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Mikro-urratsa Z");
241
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Mikro-urratsa Z");
242
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Mikro-urratsa @");
246
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop deusezta.");
243
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop deusezta.");
247
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Err: Beroketa");
244
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Err: Beroketa");
248
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Err: Tenperatura");
245
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Err: Tenperatura");
296
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Tenp. Maximoa");
293
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Tenp. Maximoa");
297
   LSTR MSG_INFO_PSU                       = _UxGT("Elikadura-iturria");
294
   LSTR MSG_INFO_PSU                       = _UxGT("Elikadura-iturria");
298
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driver-aren potentzia");
295
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driver-aren potentzia");
299
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
300
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
301
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
302
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
303
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
304
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
305
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
296
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
306
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Idatzi DAC EEPROM");
297
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Idatzi DAC EEPROM");
307
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("HARIZPIA ALDATU");
298
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("HARIZPIA ALDATU");
308
   LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD    = _UxGT("HARIZPIA KARGATU");
299
   LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD    = _UxGT("HARIZPIA KARGATU");

+ 1
- 1
Marlin/src/lcd/language/language_fi.h View File

71
   LSTR MSG_MOVE_Z                         = _UxGT("Liikuta Z");
71
   LSTR MSG_MOVE_Z                         = _UxGT("Liikuta Z");
72
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
72
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
73
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
73
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
74
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Liikuta %smm");
74
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Liikuta $mm");
75
   LSTR MSG_MOVE_01MM                      = _UxGT("Liikuta 0.1mm");
75
   LSTR MSG_MOVE_01MM                      = _UxGT("Liikuta 0.1mm");
76
   LSTR MSG_MOVE_1MM                       = _UxGT("Liikuta 1mm");
76
   LSTR MSG_MOVE_1MM                       = _UxGT("Liikuta 1mm");
77
   LSTR MSG_MOVE_10MM                      = _UxGT("Liikuta 10mm");
77
   LSTR MSG_MOVE_10MM                      = _UxGT("Liikuta 10mm");

+ 11
- 32
Marlin/src/lcd/language/language_fr.h View File

72
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Décal. origine X");
72
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Décal. origine X");
73
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Décal. origine Y");
73
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Décal. origine Y");
74
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Décal. origine Z");
74
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Décal. origine Z");
75
-  LSTR MSG_HOME_OFFSET_I                  = _UxGT("Décal. origine ") STR_I;
76
-  LSTR MSG_HOME_OFFSET_J                  = _UxGT("Décal. origine ") STR_J;
77
-  LSTR MSG_HOME_OFFSET_K                  = _UxGT("Décal. origine ") STR_K;
78
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Décalages appliqués");
75
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Décalages appliqués");
79
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Assistant Molettes");
76
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Assistant Molettes");
80
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Molette du lit"); // Not a selection of the origin
77
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Molette du lit"); // Not a selection of the origin
233
   LSTR MSG_MOVE_X                         = _UxGT("Déplacer X");
230
   LSTR MSG_MOVE_X                         = _UxGT("Déplacer X");
234
   LSTR MSG_MOVE_Y                         = _UxGT("Déplacer Y");
231
   LSTR MSG_MOVE_Y                         = _UxGT("Déplacer Y");
235
   LSTR MSG_MOVE_Z                         = _UxGT("Déplacer Z");
232
   LSTR MSG_MOVE_Z                         = _UxGT("Déplacer Z");
236
-  LSTR MSG_MOVE_I                         = _UxGT("Déplacer ") STR_I;
237
-  LSTR MSG_MOVE_J                         = _UxGT("Déplacer ") STR_J;
238
-  LSTR MSG_MOVE_K                         = _UxGT("Déplacer ") STR_K;
233
+  LSTR MSG_MOVE_N                         = _UxGT("Déplacer @");
239
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
234
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
240
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
235
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
241
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Buse trop froide");
236
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Buse trop froide");
242
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Déplacer %smm");
237
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Déplacer $mm");
243
   LSTR MSG_MOVE_01MM                      = _UxGT("Déplacer 0.1mm");
238
   LSTR MSG_MOVE_01MM                      = _UxGT("Déplacer 0.1mm");
244
   LSTR MSG_MOVE_1MM                       = _UxGT("Déplacer 1mm");
239
   LSTR MSG_MOVE_1MM                       = _UxGT("Déplacer 1mm");
245
   LSTR MSG_MOVE_10MM                      = _UxGT("Déplacer 10mm");
240
   LSTR MSG_MOVE_10MM                      = _UxGT("Déplacer 10mm");
282
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT(" jerk");
277
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT(" jerk");
283
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT(" jerk");
278
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT(" jerk");
284
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT(" jerk");
279
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT(" jerk");
285
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT(" jerk");
286
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT(" jerk");
287
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT(" jerk");
280
+  LSTR MSG_VN_JERK                        = _UxGT("V@ jerk");
288
   LSTR MSG_VE_JERK                        = _UxGT("Ve jerk");
281
   LSTR MSG_VE_JERK                        = _UxGT("Ve jerk");
289
-  LSTR MSG_VELOCITY                       = _UxGT("Vélocité");
282
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Vélocité");
290
   LSTR MSG_VMAX_A                         = _UxGT("Vit. Max ") STR_A;
283
   LSTR MSG_VMAX_A                         = _UxGT("Vit. Max ") STR_A;
291
   LSTR MSG_VMAX_B                         = _UxGT("Vit. Max ") STR_B;
284
   LSTR MSG_VMAX_B                         = _UxGT("Vit. Max ") STR_B;
292
   LSTR MSG_VMAX_C                         = _UxGT("Vit. Max ") STR_C;
285
   LSTR MSG_VMAX_C                         = _UxGT("Vit. Max ") STR_C;
293
-  LSTR MSG_VMAX_I                         = _UxGT("Vit. Max ") STR_I;
294
-  LSTR MSG_VMAX_J                         = _UxGT("Vit. Max ") STR_J;
295
-  LSTR MSG_VMAX_K                         = _UxGT("Vit. Max ") STR_K;
296
-  LSTR MSG_VMAX_E                         = _UxGT("Vit. Max ") STR_E;
286
+  LSTR MSG_VMAX_N                         = _UxGT("Vit. Max @");
287
+  LSTR MSG_VMAX_E                         = _UxGT("Vit. Max E");
297
   LSTR MSG_VMAX_EN                        = _UxGT("Vit. Max *");
288
   LSTR MSG_VMAX_EN                        = _UxGT("Vit. Max *");
298
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Déviat. jonct.");
289
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Déviat. jonct.");
299
   LSTR MSG_VMIN                           = _UxGT("Vit. Min");
290
   LSTR MSG_VMIN                           = _UxGT("Vit. Min");
302
   LSTR MSG_AMAX_A                         = _UxGT("Max Accél. ") STR_A;
293
   LSTR MSG_AMAX_A                         = _UxGT("Max Accél. ") STR_A;
303
   LSTR MSG_AMAX_B                         = _UxGT("Max Accél. ") STR_B;
294
   LSTR MSG_AMAX_B                         = _UxGT("Max Accél. ") STR_B;
304
   LSTR MSG_AMAX_C                         = _UxGT("Max Accél. ") STR_C;
295
   LSTR MSG_AMAX_C                         = _UxGT("Max Accél. ") STR_C;
305
-  LSTR MSG_AMAX_I                         = _UxGT("Max Accél. ") STR_I;
306
-  LSTR MSG_AMAX_J                         = _UxGT("Max Accél. ") STR_J;
307
-  LSTR MSG_AMAX_K                         = _UxGT("Max Accél. ") STR_K;
308
-  LSTR MSG_AMAX_E                         = _UxGT("Max Accél. ") STR_E;
296
+  LSTR MSG_AMAX_N                         = _UxGT("Max Accél. @");
297
+  LSTR MSG_AMAX_E                         = _UxGT("Max Accél. E");
309
   LSTR MSG_AMAX_EN                        = _UxGT("Max Accél. *");
298
   LSTR MSG_AMAX_EN                        = _UxGT("Max Accél. *");
310
   LSTR MSG_A_RETRACT                      = _UxGT("Acc.rétraction");
299
   LSTR MSG_A_RETRACT                      = _UxGT("Acc.rétraction");
311
   LSTR MSG_A_TRAVEL                       = _UxGT("Acc.course");
300
   LSTR MSG_A_TRAVEL                       = _UxGT("Acc.course");
315
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pas/mm");
304
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pas/mm");
316
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pas/mm");
305
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pas/mm");
317
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pas/mm");
306
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pas/mm");
318
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" pas/mm");
319
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" pas/mm");
320
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" pas/mm");
307
+  LSTR MSG_N_STEPS                        = _UxGT("@ pas/mm");
321
   LSTR MSG_E_STEPS                        = _UxGT("E pas/mm");
308
   LSTR MSG_E_STEPS                        = _UxGT("E pas/mm");
322
   LSTR MSG_EN_STEPS                       = _UxGT("* pas/mm");
309
   LSTR MSG_EN_STEPS                       = _UxGT("* pas/mm");
323
   LSTR MSG_TEMPERATURE                    = _UxGT("Température");
310
   LSTR MSG_TEMPERATURE                    = _UxGT("Température");
443
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
430
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
444
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
431
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
445
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
432
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
446
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Babystep ") STR_I;
447
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Babystep ") STR_J;
448
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Babystep ") STR_K;
433
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
449
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
434
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
450
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Butée abandon");
435
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Butée abandon");
451
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Err de chauffe");
436
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Err de chauffe");
521
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp Max");
506
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp Max");
522
   LSTR MSG_INFO_PSU                       = _UxGT("Alim.");
507
   LSTR MSG_INFO_PSU                       = _UxGT("Alim.");
523
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Puiss. moteur ");
508
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Puiss. moteur ");
524
-  LSTR MSG_DAC_PERCENT_A                  = _UxGT("Driver ") STR_A _UxGT(" %");
525
-  LSTR MSG_DAC_PERCENT_B                  = _UxGT("Driver ") STR_B _UxGT(" %");
526
-  LSTR MSG_DAC_PERCENT_C                  = _UxGT("Driver ") STR_C _UxGT(" %");
527
-  LSTR MSG_DAC_PERCENT_I                  = _UxGT("Driver ") STR_I _UxGT(" %");
528
-  LSTR MSG_DAC_PERCENT_J                  = _UxGT("Driver ") STR_J _UxGT(" %");
529
-  LSTR MSG_DAC_PERCENT_K                  = _UxGT("Driver ") STR_K _UxGT(" %");
530
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("Driver E %");
509
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("Driver @ %");
531
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM sauv.");
510
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM sauv.");
532
   LSTR MSG_ERROR_TMC                      = _UxGT("ERREUR CONNEXION TMC");
511
   LSTR MSG_ERROR_TMC                      = _UxGT("ERREUR CONNEXION TMC");
533
 
512
 

+ 13
- 27
Marlin/src/lcd/language/language_gl.h View File

226
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
226
   LSTR MSG_MOVE_E                         = _UxGT("Extrusor");
227
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
227
   LSTR MSG_MOVE_EN                        = _UxGT("Extrusor *");
228
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Bico moi frío");
228
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Bico moi frío");
229
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover %smm");
229
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover $mm");
230
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
230
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
231
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
231
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
232
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
232
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
271
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
271
   LSTR MSG_VA_JERK                        = _UxGT("Max ") STR_A _UxGT(" Jerk");
272
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
272
   LSTR MSG_VB_JERK                        = _UxGT("Max ") STR_B _UxGT(" Jerk");
273
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
273
   LSTR MSG_VC_JERK                        = _UxGT("Max ") STR_C _UxGT(" Jerk");
274
-  LSTR MSG_VI_JERK                        = _UxGT("Max ") STR_I _UxGT(" Jerk");
275
-  LSTR MSG_VJ_JERK                        = _UxGT("Max ") STR_J _UxGT(" Jerk");
276
-  LSTR MSG_VK_JERK                        = _UxGT("Max ") STR_K _UxGT(" Jerk");
274
+  LSTR MSG_VN_JERK                        = _UxGT("Max @ Jerk");
277
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
275
   LSTR MSG_VE_JERK                        = _UxGT("Max E Jerk");
278
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desvío Unión");
276
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desvío Unión");
279
-  LSTR MSG_VELOCITY                       = _UxGT("Velocidade");
280
-  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Vel");
281
-  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Vel");
282
-  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Vel");
283
-  LSTR MSG_VMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Vel");
284
-  LSTR MSG_VMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Vel");
285
-  LSTR MSG_VMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Vel");
286
-  LSTR MSG_VMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Vel");
287
-  LSTR MSG_VMAX_EN                        = _UxGT("Max * Vel");
277
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Velocidade");
278
+  LSTR MSG_VMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Speed");
279
+  LSTR MSG_VMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Speed");
280
+  LSTR MSG_VMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Speed");
281
+  LSTR MSG_VMAX_N                         = _UxGT("Max @ Speed");
282
+  LSTR MSG_VMAX_E                         = _UxGT("Max E Speed");
283
+  LSTR MSG_VMAX_EN                        = _UxGT("Max * Speed");
288
   LSTR MSG_VMIN                           = _UxGT("Vmin");
284
   LSTR MSG_VMIN                           = _UxGT("Vmin");
289
   LSTR MSG_VTRAV_MIN                      = _UxGT("V-viaxe min");
285
   LSTR MSG_VTRAV_MIN                      = _UxGT("V-viaxe min");
290
   LSTR MSG_ACCELERATION                   = _UxGT("Aceleración");
286
   LSTR MSG_ACCELERATION                   = _UxGT("Aceleración");
291
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Accel");
287
   LSTR MSG_AMAX_A                         = _UxGT("Max ") STR_A _UxGT(" Accel");
292
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Accel");
288
   LSTR MSG_AMAX_B                         = _UxGT("Max ") STR_B _UxGT(" Accel");
293
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Accel");
289
   LSTR MSG_AMAX_C                         = _UxGT("Max ") STR_C _UxGT(" Accel");
294
-  LSTR MSG_AMAX_I                         = _UxGT("Max ") STR_I _UxGT(" Accel");
295
-  LSTR MSG_AMAX_J                         = _UxGT("Max ") STR_J _UxGT(" Accel");
296
-  LSTR MSG_AMAX_K                         = _UxGT("Max ") STR_K _UxGT(" Accel");
297
-  LSTR MSG_AMAX_E                         = _UxGT("Max ") STR_E _UxGT(" Accel");
290
+  LSTR MSG_AMAX_E                         = _UxGT("Max E Accel");
298
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Accel");
291
   LSTR MSG_AMAX_EN                        = _UxGT("Max * Accel");
299
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrac.");
292
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrac.");
300
   LSTR MSG_A_TRAVEL                       = _UxGT("A-viaxe");
293
   LSTR MSG_A_TRAVEL                       = _UxGT("A-viaxe");
304
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pasos/mm");
297
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" pasos/mm");
305
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pasos/mm");
298
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" pasos/mm");
306
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pasos/mm");
299
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" pasos/mm");
307
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" pasos/mm");
308
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" pasos/mm");
309
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" pasos/mm");
300
+  LSTR MSG_N_STEPS                        = _UxGT("@ pasos/mm");
310
   LSTR MSG_E_STEPS                        = _UxGT("E pasos/mm");
301
   LSTR MSG_E_STEPS                        = _UxGT("E pasos/mm");
311
   LSTR MSG_EN_STEPS                       = _UxGT("* pasos/mm");
302
   LSTR MSG_EN_STEPS                       = _UxGT("* pasos/mm");
312
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
303
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
429
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
420
   LSTR MSG_BABYSTEP_X                     = _UxGT("Micropaso X");
430
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
421
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Micropaso Y");
431
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
422
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Micropaso Z");
423
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Micropaso @");
432
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
424
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
433
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Erro FinCarro");
425
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Erro FinCarro");
434
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Fallo Quentando");
426
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Fallo Quentando");
496
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp Máx");
488
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp Máx");
497
   LSTR MSG_INFO_PSU                       = _UxGT("Fonte Alimentación");
489
   LSTR MSG_INFO_PSU                       = _UxGT("Fonte Alimentación");
498
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Forza do Motor");
490
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Forza do Motor");
499
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
500
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
501
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
502
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
503
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
504
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
505
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
491
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
506
   LSTR MSG_ERROR_TMC                      = _UxGT("ERRO CONEX. TMC");
492
   LSTR MSG_ERROR_TMC                      = _UxGT("ERRO CONEX. TMC");
507
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Escribe DAC EEPROM");
493
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Escribe DAC EEPROM");
508
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIAR FILAMENTO");
494
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIAR FILAMENTO");

+ 1
- 1
Marlin/src/lcd/language/language_hr.h View File

78
   LSTR MSG_LEVEL_BED                      = _UxGT("Niveliraj bed");
78
   LSTR MSG_LEVEL_BED                      = _UxGT("Niveliraj bed");
79
   LSTR MSG_MOVE_X                         = _UxGT("Miči X");
79
   LSTR MSG_MOVE_X                         = _UxGT("Miči X");
80
   LSTR MSG_MOVE_Y                         = _UxGT("Miči Y");
80
   LSTR MSG_MOVE_Y                         = _UxGT("Miči Y");
81
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Miči %smm");
81
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Miči $mm");
82
   LSTR MSG_MOVE_01MM                      = _UxGT("Miči 0.1mm");
82
   LSTR MSG_MOVE_01MM                      = _UxGT("Miči 0.1mm");
83
   LSTR MSG_MOVE_1MM                       = _UxGT("Miči 1mm");
83
   LSTR MSG_MOVE_1MM                       = _UxGT("Miči 1mm");
84
   LSTR MSG_MOVE_10MM                      = _UxGT("Miči 10mm");
84
   LSTR MSG_MOVE_10MM                      = _UxGT("Miči 10mm");

+ 11
- 32
Marlin/src/lcd/language/language_hu.h View File

79
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("X Kezdö eltol.");
79
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("X Kezdö eltol.");
80
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Y Kezdö eltol.");
80
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Y Kezdö eltol.");
81
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Z Kezdö eltol.");
81
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Z Kezdö eltol.");
82
-  LSTR MSG_HOME_OFFSET_I                  = _UxGT("Kezdö eltol. ") STR_I;
83
-  LSTR MSG_HOME_OFFSET_J                  = _UxGT("Kezdö eltol. ") STR_J;
84
-  LSTR MSG_HOME_OFFSET_K                  = _UxGT("Kezdö eltol. ") STR_K;
85
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Eltolás beállítva.");
82
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Eltolás beállítva.");
86
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Elektromos varázsló");
83
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Elektromos varázsló");
87
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Eredeti választása");
84
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Eredeti választása");
259
   LSTR MSG_MOVE_X                         = _UxGT("X mozgás");
256
   LSTR MSG_MOVE_X                         = _UxGT("X mozgás");
260
   LSTR MSG_MOVE_Y                         = _UxGT("Y mozgás");
257
   LSTR MSG_MOVE_Y                         = _UxGT("Y mozgás");
261
   LSTR MSG_MOVE_Z                         = _UxGT("Z mozgás");
258
   LSTR MSG_MOVE_Z                         = _UxGT("Z mozgás");
262
-  LSTR MSG_MOVE_I                         = _UxGT("Mozgás ") STR_I;
263
-  LSTR MSG_MOVE_J                         = _UxGT("Mozgás ") STR_J;
264
-  LSTR MSG_MOVE_K                         = _UxGT("Mozgás ") STR_K;
259
+  LSTR MSG_MOVE_N                         = _UxGT("@ mozgás");
265
   LSTR MSG_MOVE_E                         = _UxGT("Adagoló");
260
   LSTR MSG_MOVE_E                         = _UxGT("Adagoló");
266
   LSTR MSG_MOVE_EN                        = _UxGT("Adagoló *");
261
   LSTR MSG_MOVE_EN                        = _UxGT("Adagoló *");
267
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("A fej túl hideg");
262
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("A fej túl hideg");
268
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mozgás %smm");
263
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mozgás $mm");
269
   LSTR MSG_MOVE_01MM                      = _UxGT("Mozgás 0.1mm");
264
   LSTR MSG_MOVE_01MM                      = _UxGT("Mozgás 0.1mm");
270
   LSTR MSG_MOVE_1MM                       = _UxGT("Mozgás 1mm");
265
   LSTR MSG_MOVE_1MM                       = _UxGT("Mozgás 1mm");
271
   LSTR MSG_MOVE_10MM                      = _UxGT("Mozgás 10mm");
266
   LSTR MSG_MOVE_10MM                      = _UxGT("Mozgás 10mm");
319
   LSTR MSG_VA_JERK                        = _UxGT("Seb.") STR_A _UxGT("-Rántás");
314
   LSTR MSG_VA_JERK                        = _UxGT("Seb.") STR_A _UxGT("-Rántás");
320
   LSTR MSG_VB_JERK                        = _UxGT("Seb.") STR_B _UxGT("-Rántás");
315
   LSTR MSG_VB_JERK                        = _UxGT("Seb.") STR_B _UxGT("-Rántás");
321
   LSTR MSG_VC_JERK                        = _UxGT("Seb.") STR_C _UxGT("-Rántás");
316
   LSTR MSG_VC_JERK                        = _UxGT("Seb.") STR_C _UxGT("-Rántás");
322
-  LSTR MSG_VI_JERK                        = _UxGT("Seb.") STR_I _UxGT("-Rántás");
323
-  LSTR MSG_VJ_JERK                        = _UxGT("Seb.") STR_J _UxGT("-Rántás");
324
-  LSTR MSG_VK_JERK                        = _UxGT("Seb.") STR_K _UxGT("-Rántás");
317
+  LSTR MSG_VN_JERK                        = _UxGT("Seb.@-Rántás");
325
   LSTR MSG_VE_JERK                        = _UxGT("E ránt. seb.");
318
   LSTR MSG_VE_JERK                        = _UxGT("E ránt. seb.");
326
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Csomopont eltérés");
319
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Csomopont eltérés");
327
-  LSTR MSG_VELOCITY                       = _UxGT("Sebesség");
320
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Sebesség (mm/s)");
328
   LSTR MSG_VMAX_A                         = _UxGT("Max Seb. ") STR_A;
321
   LSTR MSG_VMAX_A                         = _UxGT("Max Seb. ") STR_A;
329
   LSTR MSG_VMAX_B                         = _UxGT("Max Seb. ") STR_B;
322
   LSTR MSG_VMAX_B                         = _UxGT("Max Seb. ") STR_B;
330
   LSTR MSG_VMAX_C                         = _UxGT("Max Seb. ") STR_C;
323
   LSTR MSG_VMAX_C                         = _UxGT("Max Seb. ") STR_C;
331
-  LSTR MSG_VMAX_I                         = _UxGT("Max Seb. ") STR_I;
332
-  LSTR MSG_VMAX_J                         = _UxGT("Max Seb. ") STR_J;
333
-  LSTR MSG_VMAX_K                         = _UxGT("Max Seb. ") STR_K;
334
-  LSTR MSG_VMAX_E                         = _UxGT("Max Seb. ") STR_E;
324
+  LSTR MSG_VMAX_N                         = _UxGT("Max Seb. @");
325
+  LSTR MSG_VMAX_E                         = _UxGT("Max Seb. E");
335
   LSTR MSG_VMAX_EN                        = _UxGT("Max sebesség *");
326
   LSTR MSG_VMAX_EN                        = _UxGT("Max sebesség *");
336
   LSTR MSG_VMIN                           = _UxGT("Min sebesség");
327
   LSTR MSG_VMIN                           = _UxGT("Min sebesség");
337
   LSTR MSG_VTRAV_MIN                      = _UxGT("Min utazó.seb.");
328
   LSTR MSG_VTRAV_MIN                      = _UxGT("Min utazó.seb.");
339
   LSTR MSG_AMAX_A                         = _UxGT("Max gyors. ") STR_A;
330
   LSTR MSG_AMAX_A                         = _UxGT("Max gyors. ") STR_A;
340
   LSTR MSG_AMAX_B                         = _UxGT("Max gyors. ") STR_B;
331
   LSTR MSG_AMAX_B                         = _UxGT("Max gyors. ") STR_B;
341
   LSTR MSG_AMAX_C                         = _UxGT("Max gyors. ") STR_C;
332
   LSTR MSG_AMAX_C                         = _UxGT("Max gyors. ") STR_C;
342
-  LSTR MSG_AMAX_I                         = _UxGT("Max gyors. ") STR_I;
343
-  LSTR MSG_AMAX_J                         = _UxGT("Max gyors. ") STR_J;
344
-  LSTR MSG_AMAX_K                         = _UxGT("Max gyors. ") STR_K;
345
-  LSTR MSG_AMAX_E                         = _UxGT("Max gyors. ") STR_E;
333
+  LSTR MSG_AMAX_N                         = _UxGT("Max gyors. @");
334
+  LSTR MSG_AMAX_E                         = _UxGT("Max gyors. E");
346
   LSTR MSG_AMAX_EN                        = _UxGT("Max gyorsulás *");
335
   LSTR MSG_AMAX_EN                        = _UxGT("Max gyorsulás *");
347
   LSTR MSG_A_RETRACT                      = _UxGT("Visszahúzás");
336
   LSTR MSG_A_RETRACT                      = _UxGT("Visszahúzás");
348
   LSTR MSG_A_TRAVEL                       = _UxGT("Utazás");
337
   LSTR MSG_A_TRAVEL                       = _UxGT("Utazás");
352
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Lépés/mm");
341
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Lépés/mm");
353
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Lépés/mm");
342
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Lépés/mm");
354
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Lépés/mm");
343
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Lépés/mm");
355
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" Lépés/mm");
356
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" Lépés/mm");
357
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" Lépés/mm");
344
+  LSTR MSG_N_STEPS                        = _UxGT("@ lépés/mm");
358
   LSTR MSG_E_STEPS                        = _UxGT("E lépés/mm");
345
   LSTR MSG_E_STEPS                        = _UxGT("E lépés/mm");
359
   LSTR MSG_EN_STEPS                       = _UxGT("*Lépés/mm");
346
   LSTR MSG_EN_STEPS                       = _UxGT("*Lépés/mm");
360
   LSTR MSG_TEMPERATURE                    = _UxGT("Höfok");
347
   LSTR MSG_TEMPERATURE                    = _UxGT("Höfok");
488
   LSTR MSG_BABYSTEP_X                     = _UxGT("Mikrolépés X");
475
   LSTR MSG_BABYSTEP_X                     = _UxGT("Mikrolépés X");
489
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Mikrolépés Y");
476
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Mikrolépés Y");
490
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Mikrolépés Z");
477
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Mikrolépés Z");
491
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Mikrolépés ") STR_I;
492
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Mikrolépés ") STR_J;
493
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Mikrolépés ") STR_K;
478
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Mikrolépés @");
494
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Teljes");
479
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Teljes");
495
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Végállás megszakítva!");
480
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Végállás megszakítva!");
496
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Fütés hiba!");
481
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Fütés hiba!");
568
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max höfok");
553
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max höfok");
569
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
554
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
570
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Meghajtási erö");
555
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Meghajtási erö");
571
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Meghajtó %");
572
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Meghajtó %");
573
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Meghajtó %");
574
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Meghajtó %");
575
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Meghajtó %");
576
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Meghajtó %");
577
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E meghajtó %");
556
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ meghajtó %");
578
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CSATLAKOZÁSI HIBA");
557
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CSATLAKOZÁSI HIBA");
579
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM írása");
558
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM írása");
580
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("NYOMTATÓSZÁL CSERE");
559
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("NYOMTATÓSZÁL CSERE");

+ 13
- 66
Marlin/src/lcd/language/language_it.h View File

27
  * LCD Menu Messages
27
  * LCD Menu Messages
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
29
  *
29
  *
30
- * Substitutions are applied for the following characters when used
31
- * in menu items that call lcd_put_u8str_ind_P with an index:
30
+ * Substitutions are applied for the following characters when used in menu items titles:
32
  *
31
  *
33
- *   $ displays an inserted C-string
32
+ *   $ displays an inserted string
34
  *   = displays  '0'....'10' for indexes 0 - 10
33
  *   = displays  '0'....'10' for indexes 0 - 10
35
  *   ~ displays  '1'....'11' for indexes 0 - 10
34
  *   ~ displays  '1'....'11' for indexes 0 - 10
36
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
35
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
95
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Offset home X");
94
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("Offset home X");
96
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Offset home Y");
95
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Offset home Y");
97
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Offset home Z");
96
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Offset home Z");
98
-  LSTR MSG_HOME_OFFSET_I                  = _UxGT("Offset home ") STR_I;
99
-  LSTR MSG_HOME_OFFSET_J                  = _UxGT("Offset home ") STR_J;
100
-  LSTR MSG_HOME_OFFSET_K                  = _UxGT("Offset home ") STR_K;
101
-  LSTR MSG_HOME_OFFSET_U                  = _UxGT("Offset home ") STR_U;
102
-  LSTR MSG_HOME_OFFSET_V                  = _UxGT("Offset home ") STR_V;
103
-  LSTR MSG_HOME_OFFSET_W                  = _UxGT("Offset home ") STR_W;
104
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offset applicato");
97
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Offset applicato");
105
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Wizard Tramming");
98
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Wizard Tramming");
106
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Selez. origine");
99
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Selez. origine");
284
   LSTR MSG_MOVE_X                         = _UxGT("Muovi X");
277
   LSTR MSG_MOVE_X                         = _UxGT("Muovi X");
285
   LSTR MSG_MOVE_Y                         = _UxGT("Muovi Y");
278
   LSTR MSG_MOVE_Y                         = _UxGT("Muovi Y");
286
   LSTR MSG_MOVE_Z                         = _UxGT("Muovi Z");
279
   LSTR MSG_MOVE_Z                         = _UxGT("Muovi Z");
287
-  LSTR MSG_MOVE_I                         = _UxGT("Muovi ") STR_I;
288
-  LSTR MSG_MOVE_J                         = _UxGT("Muovi ") STR_J;
289
-  LSTR MSG_MOVE_K                         = _UxGT("Muovi ") STR_K;
290
-  LSTR MSG_MOVE_U                         = _UxGT("Muovi ") STR_U;
291
-  LSTR MSG_MOVE_V                         = _UxGT("Muovi ") STR_V;
292
-  LSTR MSG_MOVE_W                         = _UxGT("Muovi ") STR_W;
280
+  LSTR MSG_MOVE_N                         = _UxGT("Muovi @");
293
   LSTR MSG_MOVE_E                         = _UxGT("Estrusore");
281
   LSTR MSG_MOVE_E                         = _UxGT("Estrusore");
294
   LSTR MSG_MOVE_EN                        = _UxGT("Estrusore *");
282
   LSTR MSG_MOVE_EN                        = _UxGT("Estrusore *");
295
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Ugello freddo");
283
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Ugello freddo");
296
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Muovi di %smm");
284
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Muovi di $mm");
297
   LSTR MSG_MOVE_01MM                      = _UxGT("Muovi di 0.1mm");
285
   LSTR MSG_MOVE_01MM                      = _UxGT("Muovi di 0.1mm");
298
   LSTR MSG_MOVE_1MM                       = _UxGT("Muovi di 1mm");
286
   LSTR MSG_MOVE_1MM                       = _UxGT("Muovi di 1mm");
299
   LSTR MSG_MOVE_10MM                      = _UxGT("Muovi di 10mm");
287
   LSTR MSG_MOVE_10MM                      = _UxGT("Muovi di 10mm");
302
   LSTR MSG_MOVE_001IN                     = _UxGT("Muovi di 0.01\"");
290
   LSTR MSG_MOVE_001IN                     = _UxGT("Muovi di 0.01\"");
303
   LSTR MSG_MOVE_01IN                      = _UxGT("Muovi di 0.1\"");
291
   LSTR MSG_MOVE_01IN                      = _UxGT("Muovi di 0.1\"");
304
   LSTR MSG_MOVE_1IN                       = _UxGT("Muovi di 1\"");
292
   LSTR MSG_MOVE_1IN                       = _UxGT("Muovi di 1\"");
305
-  LSTR MSG_SPEED                          = _UxGT("Velocità");
306
-  LSTR MSG_MAXSPEED                       = _UxGT("Vel.massima (mm/s)");
307
-  LSTR MSG_MAXSPEED_X                     = _UxGT("Vel.massima ") STR_A;
308
-  LSTR MSG_MAXSPEED_Y                     = _UxGT("Vel.massima ") STR_B;
309
-  LSTR MSG_MAXSPEED_Z                     = _UxGT("Vel.massima ") STR_C;
310
-  LSTR MSG_MAXSPEED_E                     = _UxGT("Vel.massima ") STR_E;
311
-  LSTR MSG_MAXSPEED_A                     = _UxGT("Vel.massima @");
312
   LSTR MSG_BED_Z                          = _UxGT("Piatto Z");
293
   LSTR MSG_BED_Z                          = _UxGT("Piatto Z");
313
   LSTR MSG_NOZZLE                         = _UxGT("Ugello");
294
   LSTR MSG_NOZZLE                         = _UxGT("Ugello");
314
   LSTR MSG_NOZZLE_N                       = _UxGT("Ugello ~");
295
   LSTR MSG_NOZZLE_N                       = _UxGT("Ugello ~");
361
   LSTR MSG_VA_JERK                        = _UxGT("Max Jerk ") STR_A;
342
   LSTR MSG_VA_JERK                        = _UxGT("Max Jerk ") STR_A;
362
   LSTR MSG_VB_JERK                        = _UxGT("Max Jerk ") STR_B;
343
   LSTR MSG_VB_JERK                        = _UxGT("Max Jerk ") STR_B;
363
   LSTR MSG_VC_JERK                        = _UxGT("Max Jerk ") STR_C;
344
   LSTR MSG_VC_JERK                        = _UxGT("Max Jerk ") STR_C;
364
-  LSTR MSG_VI_JERK                        = _UxGT("Max Jerk ") STR_I;
365
-  LSTR MSG_VJ_JERK                        = _UxGT("Max Jerk ") STR_J;
366
-  LSTR MSG_VK_JERK                        = _UxGT("Max Jerk ") STR_K;
367
-  LSTR MSG_VU_JERK                        = _UxGT("Max Jerk ") STR_U;
368
-  LSTR MSG_VV_JERK                        = _UxGT("Max Jerk ") STR_V;
369
-  LSTR MSG_VW_JERK                        = _UxGT("Max Jerk ") STR_W;
345
+  LSTR MSG_VN_JERK                        = _UxGT("Max Jerk @");
370
   LSTR MSG_VE_JERK                        = _UxGT("Max Jerk E");
346
   LSTR MSG_VE_JERK                        = _UxGT("Max Jerk E");
371
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Deviaz. giunzioni");
347
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Deviaz. giunzioni");
372
-  LSTR MSG_VELOCITY                       = _UxGT("Velocità");
348
+  LSTR MSG_MAX_SPEED                      = _UxGT("Vel.massima (mm/s)");
373
   LSTR MSG_VMAX_A                         = _UxGT("Vel.Massima ") STR_A;
349
   LSTR MSG_VMAX_A                         = _UxGT("Vel.Massima ") STR_A;
374
   LSTR MSG_VMAX_B                         = _UxGT("Vel.Massima ") STR_B;
350
   LSTR MSG_VMAX_B                         = _UxGT("Vel.Massima ") STR_B;
375
   LSTR MSG_VMAX_C                         = _UxGT("Vel.Massima ") STR_C;
351
   LSTR MSG_VMAX_C                         = _UxGT("Vel.Massima ") STR_C;
376
-  LSTR MSG_VMAX_I                         = _UxGT("Vel.Massima ") STR_I;
377
-  LSTR MSG_VMAX_J                         = _UxGT("Vel.Massima ") STR_J;
378
-  LSTR MSG_VMAX_K                         = _UxGT("Vel.Massima ") STR_K;
379
-  LSTR MSG_VMAX_U                         = _UxGT("Vel.Massima ") STR_U;
380
-  LSTR MSG_VMAX_V                         = _UxGT("Vel.Massima ") STR_V;
381
-  LSTR MSG_VMAX_W                         = _UxGT("Vel.Massima ") STR_W;
382
-  LSTR MSG_VMAX_E                         = _UxGT("Vel.Massima ") STR_E;
352
+  LSTR MSG_VMAX_N                         = _UxGT("Vel.Massima @");
353
+  LSTR MSG_VMAX_E                         = _UxGT("Vel.Massima E");
383
   LSTR MSG_VMAX_EN                        = _UxGT("Vel.Massima *");
354
   LSTR MSG_VMAX_EN                        = _UxGT("Vel.Massima *");
384
   LSTR MSG_VMIN                           = _UxGT("Vel.Minima");
355
   LSTR MSG_VMIN                           = _UxGT("Vel.Minima");
385
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vel.Min spostam.");
356
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vel.Min spostam.");
387
   LSTR MSG_AMAX_A                         = _UxGT("Acc.Massima ") STR_A;
358
   LSTR MSG_AMAX_A                         = _UxGT("Acc.Massima ") STR_A;
388
   LSTR MSG_AMAX_B                         = _UxGT("Acc.Massima ") STR_B;
359
   LSTR MSG_AMAX_B                         = _UxGT("Acc.Massima ") STR_B;
389
   LSTR MSG_AMAX_C                         = _UxGT("Acc.Massima ") STR_C;
360
   LSTR MSG_AMAX_C                         = _UxGT("Acc.Massima ") STR_C;
390
-  LSTR MSG_AMAX_I                         = _UxGT("Acc.Massima ") STR_I;
391
-  LSTR MSG_AMAX_J                         = _UxGT("Acc.Massima ") STR_J;
392
-  LSTR MSG_AMAX_K                         = _UxGT("Acc.Massima ") STR_K;
393
-  LSTR MSG_AMAX_E                         = _UxGT("Acc.Massima ") STR_E;
394
-  LSTR MSG_AMAX_U                         = _UxGT("Acc.Massima ") STR_U;
395
-  LSTR MSG_AMAX_V                         = _UxGT("Acc.Massima ") STR_V;
396
-  LSTR MSG_AMAX_W                         = _UxGT("Acc.Massima ") STR_W;
361
+  LSTR MSG_AMAX_N                         = _UxGT("Acc.Massima @");
362
+  LSTR MSG_AMAX_E                         = _UxGT("Acc.Massima E");
397
   LSTR MSG_AMAX_EN                        = _UxGT("Acc.Massima *");
363
   LSTR MSG_AMAX_EN                        = _UxGT("Acc.Massima *");
398
   LSTR MSG_A_RETRACT                      = _UxGT("A-Ritrazione");
364
   LSTR MSG_A_RETRACT                      = _UxGT("A-Ritrazione");
399
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Spostamento");
365
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Spostamento");
403
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passi/mm");
369
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passi/mm");
404
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passi/mm");
370
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passi/mm");
405
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passi/mm");
371
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passi/mm");
406
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" passi/mm");
407
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" passi/mm");
408
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" passi/mm");
409
-  LSTR MSG_U_STEPS                        = STR_U _UxGT(" passi/mm");
410
-  LSTR MSG_V_STEPS                        = STR_V _UxGT(" passi/mm");
411
-  LSTR MSG_W_STEPS                        = STR_W _UxGT(" passi/mm");
372
+  LSTR MSG_N_STEPS                        = _UxGT("@ passi/mm");
412
   LSTR MSG_E_STEPS                        = _UxGT("E passi/mm");
373
   LSTR MSG_E_STEPS                        = _UxGT("E passi/mm");
413
   LSTR MSG_EN_STEPS                       = _UxGT("* passi/mm");
374
   LSTR MSG_EN_STEPS                       = _UxGT("* passi/mm");
414
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
375
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
560
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
521
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
561
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
522
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
562
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
523
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
563
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Babystep ") STR_I;
564
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Babystep ") STR_J;
565
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Babystep ") STR_K;
566
-  LSTR MSG_BABYSTEP_U                     = _UxGT("Babystep ") STR_U;
567
-  LSTR MSG_BABYSTEP_V                     = _UxGT("Babystep ") STR_V;
568
-  LSTR MSG_BABYSTEP_W                     = _UxGT("Babystep ") STR_W;
524
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
569
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Totali");
525
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Totali");
570
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Interrompi se FC");
526
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Interrompi se FC");
571
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Risc.Fallito");   // Max 12 characters
527
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Risc.Fallito");   // Max 12 characters
658
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp max");
614
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temp max");
659
   LSTR MSG_INFO_PSU                       = _UxGT("Alimentatore");
615
   LSTR MSG_INFO_PSU                       = _UxGT("Alimentatore");
660
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Potenza Drive");
616
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Potenza Drive");
661
-  LSTR MSG_DAC_PERCENT_A                  = _UxGT("Driver ") STR_A _UxGT(" %");
662
-  LSTR MSG_DAC_PERCENT_B                  = _UxGT("Driver ") STR_B _UxGT(" %");
663
-  LSTR MSG_DAC_PERCENT_C                  = _UxGT("Driver ") STR_C _UxGT(" %");
664
-  LSTR MSG_DAC_PERCENT_I                  = _UxGT("Driver ") STR_I _UxGT(" %");
665
-  LSTR MSG_DAC_PERCENT_J                  = _UxGT("Driver ") STR_J _UxGT(" %");
666
-  LSTR MSG_DAC_PERCENT_K                  = _UxGT("Driver ") STR_K _UxGT(" %");
667
-  LSTR MSG_DAC_PERCENT_U                  = _UxGT("Driver ") STR_U _UxGT(" %");
668
-  LSTR MSG_DAC_PERCENT_V                  = _UxGT("Driver ") STR_V _UxGT(" %");
669
-  LSTR MSG_DAC_PERCENT_W                  = _UxGT("Driver ") STR_W _UxGT(" %");
670
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("Driver E %");
617
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("Driver @ %");
671
   LSTR MSG_ERROR_TMC                      = _UxGT("ERR.CONNESSIONE TMC");
618
   LSTR MSG_ERROR_TMC                      = _UxGT("ERR.CONNESSIONE TMC");
672
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Scrivi DAC EEPROM");
619
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Scrivi DAC EEPROM");
673
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIO FILAMENTO");
620
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("CAMBIO FILAMENTO");

+ 6
- 16
Marlin/src/lcd/language/language_jp_kana.h View File

93
   LSTR MSG_MOVE_Y                         = _UxGT("Yジク イドウ");                  // "Move Y"
93
   LSTR MSG_MOVE_Y                         = _UxGT("Yジク イドウ");                  // "Move Y"
94
   LSTR MSG_MOVE_Z                         = _UxGT("Zジク イドウ");                  // "Move Z"
94
   LSTR MSG_MOVE_Z                         = _UxGT("Zジク イドウ");                  // "Move Z"
95
   LSTR MSG_MOVE_E                         = _UxGT("エクストルーダー");                // "Extruder"
95
   LSTR MSG_MOVE_E                         = _UxGT("エクストルーダー");                // "Extruder"
96
-  LSTR MSG_MOVE_N_MM                      = _UxGT("%smm イドウ");                  // "Move 0.025mm"
96
+  LSTR MSG_MOVE_N_MM                      = _UxGT("$mm イドウ");                    // "Move 0.025mm"
97
   LSTR MSG_MOVE_01MM                      = _UxGT("0.1mm イドウ");                 // "Move 0.1mm"
97
   LSTR MSG_MOVE_01MM                      = _UxGT("0.1mm イドウ");                 // "Move 0.1mm"
98
   LSTR MSG_MOVE_1MM                       = _UxGT("  1mm イドウ");                 // "Move 1mm"
98
   LSTR MSG_MOVE_1MM                       = _UxGT("  1mm イドウ");                 // "Move 1mm"
99
   LSTR MSG_MOVE_10MM                      = _UxGT(" 10mm イドウ");                 // "Move 10mm"
99
   LSTR MSG_MOVE_10MM                      = _UxGT(" 10mm イドウ");                 // "Move 10mm"
118
   LSTR MSG_VA_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_A;             // "Va-jerk"
118
   LSTR MSG_VA_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_A;             // "Va-jerk"
119
   LSTR MSG_VB_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_B;             // "Vb-jerk"
119
   LSTR MSG_VB_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_B;             // "Vb-jerk"
120
   LSTR MSG_VC_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_C;             // "Vc-jerk"
120
   LSTR MSG_VC_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_C;             // "Vc-jerk"
121
-  LSTR MSG_VI_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_I;             // "Va-jerk"
122
-  LSTR MSG_VJ_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_J;             // "Vb-jerk"
123
-  LSTR MSG_VK_JERK                        = _UxGT("ジク ヤクドウ mm/s") STR_K;             // "Vc-jerk"
121
+  LSTR MSG_VN_JERK                        = _UxGT("ジク ヤクドウ mm/s@");                  // "V@-jerk"
124
   LSTR MSG_A_STEPS                        = STR_A _UxGT("ステップ/mm");
122
   LSTR MSG_A_STEPS                        = STR_A _UxGT("ステップ/mm");
125
   LSTR MSG_B_STEPS                        = STR_B _UxGT("ステップ/mm");
123
   LSTR MSG_B_STEPS                        = STR_B _UxGT("ステップ/mm");
126
   LSTR MSG_C_STEPS                        = STR_C _UxGT("ステップ/mm");
124
   LSTR MSG_C_STEPS                        = STR_C _UxGT("ステップ/mm");
125
+  LSTR MSG_N_STEPS                        = _UxGT("@ステップ/mm");
127
   LSTR MSG_VE_JERK                        = _UxGT("エクストルーダー ヤクド");          // "Ve-jerk"
126
   LSTR MSG_VE_JERK                        = _UxGT("エクストルーダー ヤクド");          // "Ve-jerk"
128
   LSTR MSG_VMAX_A                         = _UxGT("サイダイオクリソクド ") STR_A;  // "Vmax A"
127
   LSTR MSG_VMAX_A                         = _UxGT("サイダイオクリソクド ") STR_A;  // "Vmax A"
129
   LSTR MSG_VMAX_B                         = _UxGT("サイダイオクリソクド ") STR_B;  // "Vmax B"
128
   LSTR MSG_VMAX_B                         = _UxGT("サイダイオクリソクド ") STR_B;  // "Vmax B"
130
   LSTR MSG_VMAX_C                         = _UxGT("サイダイオクリソクド ") STR_C;  // "Vmax C"
129
   LSTR MSG_VMAX_C                         = _UxGT("サイダイオクリソクド ") STR_C;  // "Vmax C"
131
-  LSTR MSG_VMAX_I                         = _UxGT("サイダイオクリソクド ") STR_I;  // "Vmax I"
132
-  LSTR MSG_VMAX_J                         = _UxGT("サイダイオクリソクド ") STR_J;  // "Vmax J"
133
-  LSTR MSG_VMAX_K                         = _UxGT("サイダイオクリソクド ") STR_K;  // "Vmax K"
134
-  LSTR MSG_VMAX_E                         = _UxGT("サイダイオクリソクド ") STR_E;  // "Vmax E"
130
+  LSTR MSG_VMAX_E                         = _UxGT("サイダイオクリソクド E");  // "Vmax E"
135
   LSTR MSG_VMAX_EN                        = _UxGT("サイダイオクリソクド *");  // "Vmax E1"
131
   LSTR MSG_VMAX_EN                        = _UxGT("サイダイオクリソクド *");  // "Vmax E1"
136
   LSTR MSG_VMIN                           = _UxGT("サイショウオクリソクド");           // "Vmin"
132
   LSTR MSG_VMIN                           = _UxGT("サイショウオクリソクド");           // "Vmin"
137
   LSTR MSG_VTRAV_MIN                      = _UxGT("サイショウイドウソクド");           // "VTrav min"
133
   LSTR MSG_VTRAV_MIN                      = _UxGT("サイショウイドウソクド");           // "VTrav min"
215
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("セッテイサイコウオン");              // "Max Temp"
211
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("セッテイサイコウオン");              // "Max Temp"
216
   LSTR MSG_INFO_PSU                       = _UxGT("デンゲンシュベツ");                // "Power Supply"
212
   LSTR MSG_INFO_PSU                       = _UxGT("デンゲンシュベツ");                // "Power Supply"
217
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("モータークドウリョク");              // "Drive Strength"
213
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("モータークドウリョク");              // "Drive Strength"
218
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" DACシュツリョク %");      // "X Driver %"
219
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" DACシュツリョク %");      // "Y Driver %"
220
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" DACシュツリョク %");      // "Z Driver %"
221
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" DACシュツリョク %");      // "I Driver %"
222
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" DACシュツリョク %");      // "J Driver %"
223
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" DACシュツリョク %");      // "K Driver %"
224
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E DACシュツリョク %");               // "E Driver %"
214
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ DACシュツリョク %");               // "@ Driver %"
225
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("EEPROMヘホゾン");               // "Store memory"
215
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("EEPROMヘホゾン");               // "Store memory"
226
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("イチジテイシ");
216
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("イチジテイシ");
227
   LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME  = _UxGT("プリントサイカイ");                // "Resume print"
217
   LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME  = _UxGT("プリントサイカイ");                // "Resume print"
249
   LSTR MSG_YES                            = _UxGT("ハイ");
239
   LSTR MSG_YES                            = _UxGT("ハイ");
250
   LSTR MSG_NO                             = _UxGT("イイエ");
240
   LSTR MSG_NO                             = _UxGT("イイエ");
251
   LSTR MSG_BACK                           = _UxGT("モドリ");
241
   LSTR MSG_BACK                           = _UxGT("モドリ");
252
-  LSTR MSG_VELOCITY                       = _UxGT("ソクド");
242
+  LSTR MSG_MAX_SPEED                      = _UxGT("ソクド");
253
   LSTR MSG_STEPS_PER_MM                   = _UxGT("ステップ/mm");
243
   LSTR MSG_STEPS_PER_MM                   = _UxGT("ステップ/mm");
254
   LSTR MSG_CUSTOM_COMMANDS                = _UxGT("ユーザーコマンド");
244
   LSTR MSG_CUSTOM_COMMANDS                = _UxGT("ユーザーコマンド");
255
   LSTR MSG_PRINT_PAUSED                   = _UxGT("プリントガイチジテイシサレマシタ");
245
   LSTR MSG_PRINT_PAUSED                   = _UxGT("プリントガイチジテイシサレマシタ");

+ 2
- 1
Marlin/src/lcd/language/language_nl.h View File

86
   LSTR MSG_MOVE_Z                         = _UxGT("Verplaats Z");
86
   LSTR MSG_MOVE_Z                         = _UxGT("Verplaats Z");
87
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
87
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
88
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
88
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
89
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Verplaats %smm");
89
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Verplaats $mm");
90
   LSTR MSG_MOVE_01MM                      = _UxGT("Verplaats 0.1mm");
90
   LSTR MSG_MOVE_01MM                      = _UxGT("Verplaats 0.1mm");
91
   LSTR MSG_MOVE_1MM                       = _UxGT("Verplaats 1mm");
91
   LSTR MSG_MOVE_1MM                       = _UxGT("Verplaats 1mm");
92
   LSTR MSG_MOVE_10MM                      = _UxGT("Verplaats 10mm");
92
   LSTR MSG_MOVE_10MM                      = _UxGT("Verplaats 10mm");
157
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystap X");
157
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystap X");
158
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystap Y");
158
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystap Y");
159
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystap Z");
159
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystap Z");
160
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystap @");
160
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop afbr.");
161
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop afbr.");
161
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Voorverw. fout");
162
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Voorverw. fout");
162
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Redun. temp fout");
163
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Redun. temp fout");

+ 7
- 18
Marlin/src/lcd/language/language_pl.h View File

27
  * LCD Menu Messages
27
  * LCD Menu Messages
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
28
  * See also https://marlinfw.org/docs/development/lcd_language.html
29
  *
29
  *
30
- * Substitutions are applied for the following characters when used
31
- * in menu items that call lcd_put_u8str_ind_P with an index:
30
+ * Substitutions are applied for the following characters when used in menu items titles:
32
  *
31
  *
33
- *   $ displays an inserted C-string
32
+ *   $ displays an inserted string
34
  *   = displays  '0'....'10' for indexes 0 - 10
33
  *   = displays  '0'....'10' for indexes 0 - 10
35
  *   ~ displays  '1'....'11' for indexes 0 - 10
34
  *   ~ displays  '1'....'11' for indexes 0 - 10
36
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
35
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
239
   LSTR MSG_MOVE_E                         = _UxGT("Ekstruzja (os E)");
238
   LSTR MSG_MOVE_E                         = _UxGT("Ekstruzja (os E)");
240
   LSTR MSG_MOVE_EN                        = _UxGT("Ekstruzja (os E) *");
239
   LSTR MSG_MOVE_EN                        = _UxGT("Ekstruzja (os E) *");
241
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Dysza za zimna");
240
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Dysza za zimna");
242
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Przesuń co %s mm");
241
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Przesuń co $ mm");
243
   LSTR MSG_MOVE_01MM                      = _UxGT("Przesuń co .1 mm");
242
   LSTR MSG_MOVE_01MM                      = _UxGT("Przesuń co .1 mm");
244
   LSTR MSG_MOVE_1MM                       = _UxGT("Przesuń co 1 mm");
243
   LSTR MSG_MOVE_1MM                       = _UxGT("Przesuń co 1 mm");
245
   LSTR MSG_MOVE_10MM                      = _UxGT("Przesuń co 10 mm");
244
   LSTR MSG_MOVE_10MM                      = _UxGT("Przesuń co 10 mm");
276
   LSTR MSG_VA_JERK                        = _UxGT("Zryw V") STR_A;
275
   LSTR MSG_VA_JERK                        = _UxGT("Zryw V") STR_A;
277
   LSTR MSG_VB_JERK                        = _UxGT("Zryw V") STR_B;
276
   LSTR MSG_VB_JERK                        = _UxGT("Zryw V") STR_B;
278
   LSTR MSG_VC_JERK                        = _UxGT("Zryw V") STR_C;
277
   LSTR MSG_VC_JERK                        = _UxGT("Zryw V") STR_C;
279
-  LSTR MSG_VI_JERK                        = _UxGT("Zryw V") STR_I;
280
-  LSTR MSG_VJ_JERK                        = _UxGT("Zryw V") STR_J;
281
-  LSTR MSG_VK_JERK                        = _UxGT("Zryw V") STR_K;
278
+  LSTR MSG_VN_JERK                        = _UxGT("Zryw V@");
282
   LSTR MSG_VE_JERK                        = _UxGT("Zryw Ve");
279
   LSTR MSG_VE_JERK                        = _UxGT("Zryw Ve");
283
-  LSTR MSG_VELOCITY                       = _UxGT("Prędkość (V)");
280
+  LSTR MSG_MAX_SPEED                      = _UxGT("Prędkość (V)");
284
 
281
 
285
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vskok min");
282
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vskok min");
286
   LSTR MSG_ACCELERATION                   = _UxGT("Przyspieszenie (A)");
283
   LSTR MSG_ACCELERATION                   = _UxGT("Przyspieszenie (A)");
292
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" kroki/mm");
289
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" kroki/mm");
293
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" kroki/mm");
290
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" kroki/mm");
294
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" kroki/mm");
291
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" kroki/mm");
295
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" kroki/mm");
296
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" kroki/mm");
297
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" kroki/mm");
292
+  LSTR MSG_N_STEPS                        = _UxGT("@ kroki/mm");
298
   LSTR MSG_E_STEPS                        = _UxGT("E kroki/mm");
293
   LSTR MSG_E_STEPS                        = _UxGT("E kroki/mm");
299
   LSTR MSG_EN_STEPS                       = _UxGT("* kroki/mm");
294
   LSTR MSG_EN_STEPS                       = _UxGT("* kroki/mm");
300
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
295
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
445
 
440
 
446
   LSTR MSG_INFO_PSU                       = _UxGT("Zasilacz");
441
   LSTR MSG_INFO_PSU                       = _UxGT("Zasilacz");
447
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Siła silnika");
442
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Siła silnika");
448
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Siła %");
449
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Siła %");
450
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Siła %");
451
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Siła %");
452
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Siła %");
453
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Siła %");
454
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Siła %");
443
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Siła %");
455
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC BŁĄD POŁĄCZENIA");
444
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC BŁĄD POŁĄCZENIA");
456
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Zapisz DAC EEPROM");
445
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Zapisz DAC EEPROM");
457
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("ZMIEŃ FILAMENT");
446
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("ZMIEŃ FILAMENT");

+ 2
- 4
Marlin/src/lcd/language/language_pt.h View File

80
   LSTR MSG_MOVE_Z                         = _UxGT("Mover Z");
80
   LSTR MSG_MOVE_Z                         = _UxGT("Mover Z");
81
   LSTR MSG_MOVE_E                         = _UxGT("Mover Extrusor");
81
   LSTR MSG_MOVE_E                         = _UxGT("Mover Extrusor");
82
   LSTR MSG_MOVE_EN                        = _UxGT("Mover Extrusor *");
82
   LSTR MSG_MOVE_EN                        = _UxGT("Mover Extrusor *");
83
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover %smm");
83
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover $mm");
84
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
84
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
85
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
85
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
86
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
86
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
104
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passo/mm");
104
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" passo/mm");
105
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passo/mm");
105
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" passo/mm");
106
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passo/mm");
106
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" passo/mm");
107
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" passo/mm");
108
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" passo/mm");
109
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" passo/mm");
107
+  LSTR MSG_N_STEPS                        = _UxGT("@ passo/mm");
110
   LSTR MSG_E_STEPS                        = _UxGT("E passo/mm");
108
   LSTR MSG_E_STEPS                        = _UxGT("E passo/mm");
111
   LSTR MSG_EN_STEPS                       = _UxGT("* passo/mm");
109
   LSTR MSG_EN_STEPS                       = _UxGT("* passo/mm");
112
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
110
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");

+ 5
- 8
Marlin/src/lcd/language/language_pt_br.h View File

212
   LSTR MSG_MOVE_E                         = _UxGT("Mover Extrusor");
212
   LSTR MSG_MOVE_E                         = _UxGT("Mover Extrusor");
213
   LSTR MSG_MOVE_EN                        = _UxGT("Mover Extrusor *");
213
   LSTR MSG_MOVE_EN                        = _UxGT("Mover Extrusor *");
214
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Extrus. mto fria");
214
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Extrus. mto fria");
215
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover %smm");
215
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Mover $mm");
216
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
216
   LSTR MSG_MOVE_01MM                      = _UxGT("Mover 0.1mm");
217
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
217
   LSTR MSG_MOVE_1MM                       = _UxGT("Mover 1mm");
218
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
218
   LSTR MSG_MOVE_10MM                      = _UxGT("Mover 10mm");
242
   LSTR MSG_VA_JERK                        = _UxGT("arrancada V") STR_A;
242
   LSTR MSG_VA_JERK                        = _UxGT("arrancada V") STR_A;
243
   LSTR MSG_VB_JERK                        = _UxGT("arrancada V") STR_B;
243
   LSTR MSG_VB_JERK                        = _UxGT("arrancada V") STR_B;
244
   LSTR MSG_VC_JERK                        = _UxGT("arrancada V") STR_C;
244
   LSTR MSG_VC_JERK                        = _UxGT("arrancada V") STR_C;
245
-  LSTR MSG_VI_JERK                        = _UxGT("arrancada V") STR_I;
246
-  LSTR MSG_VJ_JERK                        = _UxGT("arrancada V") STR_J;
247
-  LSTR MSG_VK_JERK                        = _UxGT("arrancada V") STR_K;
245
+  LSTR MSG_VN_JERK                        = _UxGT("arrancada V@");
248
   LSTR MSG_VE_JERK                        = _UxGT("arrancada VE");
246
   LSTR MSG_VE_JERK                        = _UxGT("arrancada VE");
249
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desv. Junção");
247
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Desv. Junção");
250
-  LSTR MSG_VELOCITY                       = _UxGT("Velocidade");
248
+  LSTR MSG_MAX_SPEED                      = _UxGT("Velocidade");
251
   LSTR MSG_VTRAV_MIN                      = _UxGT("VDeslocamento min");
249
   LSTR MSG_VTRAV_MIN                      = _UxGT("VDeslocamento min");
252
   LSTR MSG_ACCELERATION                   = _UxGT("Aceleração");
250
   LSTR MSG_ACCELERATION                   = _UxGT("Aceleração");
253
   LSTR MSG_A_RETRACT                      = _UxGT("Retrair A");
251
   LSTR MSG_A_RETRACT                      = _UxGT("Retrair A");
256
   LSTR MSG_A_STEPS                        = _UxGT("Passo ") STR_A _UxGT("/mm");
254
   LSTR MSG_A_STEPS                        = _UxGT("Passo ") STR_A _UxGT("/mm");
257
   LSTR MSG_B_STEPS                        = _UxGT("Passo ") STR_B _UxGT("/mm");
255
   LSTR MSG_B_STEPS                        = _UxGT("Passo ") STR_B _UxGT("/mm");
258
   LSTR MSG_C_STEPS                        = _UxGT("Passo ") STR_C _UxGT("/mm");
256
   LSTR MSG_C_STEPS                        = _UxGT("Passo ") STR_C _UxGT("/mm");
259
-  LSTR MSG_I_STEPS                        = _UxGT("Passo ") STR_I _UxGT("/mm");
260
-  LSTR MSG_J_STEPS                        = _UxGT("Passo ") STR_J _UxGT("/mm");
261
-  LSTR MSG_K_STEPS                        = _UxGT("Passo ") STR_K _UxGT("/mm");
257
+  LSTR MSG_N_STEPS                        = _UxGT("Passo @/mm");
262
   LSTR MSG_E_STEPS                        = _UxGT("E/mm");
258
   LSTR MSG_E_STEPS                        = _UxGT("E/mm");
263
   LSTR MSG_EN_STEPS                       = _UxGT("*/mm");
259
   LSTR MSG_EN_STEPS                       = _UxGT("*/mm");
264
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
260
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatura");
352
   LSTR MSG_BABYSTEP_X                     = _UxGT("Passinho X");
348
   LSTR MSG_BABYSTEP_X                     = _UxGT("Passinho X");
353
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Passinho Y");
349
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Passinho Y");
354
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Passinho Z");
350
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Passinho Z");
351
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Passinho @");
355
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
352
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
356
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Abortar Fim de Curso");
353
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Abortar Fim de Curso");
357
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Aquecimento falhou");
354
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Aquecimento falhou");

+ 16
- 29
Marlin/src/lcd/language/language_ro.h View File

225
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
225
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
226
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
226
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
227
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Capat Prea Rece");
227
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Capat Prea Rece");
228
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Move %smm");
228
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Move $mm");
229
   LSTR MSG_MOVE_01MM                      = _UxGT("Move 0.1mm");
229
   LSTR MSG_MOVE_01MM                      = _UxGT("Move 0.1mm");
230
   LSTR MSG_MOVE_1MM                       = _UxGT("Move 1mm");
230
   LSTR MSG_MOVE_1MM                       = _UxGT("Move 1mm");
231
   LSTR MSG_MOVE_10MM                      = _UxGT("Move 10mm");
231
   LSTR MSG_MOVE_10MM                      = _UxGT("Move 10mm");
270
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Jerk");
270
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Jerk");
271
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Jerk");
271
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Jerk");
272
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Jerk");
272
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Jerk");
273
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT("-Jerk");
274
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT("-Jerk");
275
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT("-Jerk");
273
+  LSTR MSG_VN_JERK                        = _UxGT("V@-Jerk");
276
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Jerk");
274
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Jerk");
277
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
275
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
278
-  LSTR MSG_VELOCITY                       = _UxGT("Velocity");
279
-  LSTR MSG_VMAX_A                         = _UxGT("Vmax ") STR_A;
280
-  LSTR MSG_VMAX_B                         = _UxGT("Vmax ") STR_B;
281
-  LSTR MSG_VMAX_C                         = _UxGT("Vmax ") STR_C;
282
-  LSTR MSG_VMAX_I                         = _UxGT("Vmax ") STR_I;
283
-  LSTR MSG_VMAX_J                         = _UxGT("Vmax ") STR_J;
284
-  LSTR MSG_VMAX_K                         = _UxGT("Vmax ") STR_K;
285
-  LSTR MSG_VMAX_E                         = _UxGT("Vmax ") STR_E;
286
-  LSTR MSG_VMAX_EN                        = _UxGT("Vmax *");
276
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max Speed");
277
+  LSTR MSG_VMAX_A                         = _UxGT("Max Speed ") STR_A;
278
+  LSTR MSG_VMAX_B                         = _UxGT("Max Speed ") STR_B;
279
+  LSTR MSG_VMAX_C                         = _UxGT("Max Speed ") STR_C;
280
+  LSTR MSG_VMAX_N                         = _UxGT("Max Speed @");
281
+  LSTR MSG_VMAX_E                         = _UxGT("Max Speed E");
282
+  LSTR MSG_VMAX_EN                        = _UxGT("Max Speed *");
287
   LSTR MSG_VMIN                           = _UxGT("Vmin");
283
   LSTR MSG_VMIN                           = _UxGT("Vmin");
288
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
284
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
289
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleration");
285
   LSTR MSG_ACCELERATION                   = _UxGT("Acceleration");
290
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
286
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
291
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
287
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
292
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
288
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
293
-  LSTR MSG_AMAX_I                         = _UxGT("Amax ") STR_I;
294
-  LSTR MSG_AMAX_J                         = _UxGT("Amax ") STR_J;
295
-  LSTR MSG_AMAX_K                         = _UxGT("Amax ") STR_K;
296
-  LSTR MSG_AMAX_E                         = _UxGT("Amax ") STR_E;
289
+  LSTR MSG_AMAX_N                         = _UxGT("Amax @");
290
+  LSTR MSG_AMAX_E                         = _UxGT("Amax E");
297
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
291
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
298
   LSTR MSG_A_RETRACT                      = _UxGT("A-Retract");
292
   LSTR MSG_A_RETRACT                      = _UxGT("A-Retract");
299
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Travel");
293
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Travel");
303
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" steps/mm");
297
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" steps/mm");
304
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" steps/mm");
298
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" steps/mm");
305
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" steps/mm");
299
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" steps/mm");
306
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" steps/mm");
307
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" steps/mm");
308
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" steps/mm");
309
-  LSTR MSG_E_STEPS                        = _UxGT("Esteps/mm");
310
-  LSTR MSG_EN_STEPS                       = _UxGT("*steps/mm");
300
+  LSTR MSG_N_STEPS                        = _UxGT("@ steps/mm");
301
+  LSTR MSG_E_STEPS                        = _UxGT("E steps/mm");
302
+  LSTR MSG_EN_STEPS                       = _UxGT("* steps/mm");
311
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperature");
303
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperature");
312
   LSTR MSG_MOTION                         = _UxGT("Motion");
304
   LSTR MSG_MOTION                         = _UxGT("Motion");
313
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
305
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
435
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
427
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
436
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
428
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
437
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
429
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
430
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
438
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
431
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
439
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop Abort");
432
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop Abort");
440
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Heating Failed");
433
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Heating Failed");
503
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temperatura Maxima");
496
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Temperatura Maxima");
504
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
497
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
505
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Drive Strength");
498
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Drive Strength");
506
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
507
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
508
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
509
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
510
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
511
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
512
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
499
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
513
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CONNECTION ERROR");
500
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC CONNECTION ERROR");
514
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Write");
501
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Write");
515
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT CHANGE");
502
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMENT CHANGE");

+ 10
- 34
Marlin/src/lcd/language/language_ru.h View File

84
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Смещение дома X");
84
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Смещение дома X");
85
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Смещение дома Y");
85
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Смещение дома Y");
86
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Смещение дома Z");
86
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Смещение дома Z");
87
-    LSTR MSG_HOME_OFFSET_I                  = _UxGT("Смещение дома ") STR_I;
88
-    LSTR MSG_HOME_OFFSET_J                  = _UxGT("Смещение дома ") STR_J;
89
-    LSTR MSG_HOME_OFFSET_K                  = _UxGT("Смещение дома ") STR_K;
90
   #else
87
   #else
91
     LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Установ.смещ.дома");
88
     LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Установ.смещ.дома");
92
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Смещ. дома X");
89
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Смещ. дома X");
93
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Смещ. дома Y");
90
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Смещ. дома Y");
94
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Смещ. дома Z");
91
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Смещ. дома Z");
95
-    LSTR MSG_HOME_OFFSET_I                  = _UxGT("Смещ. дома ") STR_I;
96
-    LSTR MSG_HOME_OFFSET_J                  = _UxGT("Смещ. дома ") STR_J;
97
-    LSTR MSG_HOME_OFFSET_K                  = _UxGT("Смещ. дома ") STR_K;
98
   #endif
92
   #endif
99
   LSTR MSG_HOME_OFFSETS_APPLIED             = _UxGT("Смещения применены");
93
   LSTR MSG_HOME_OFFSETS_APPLIED             = _UxGT("Смещения применены");
100
   LSTR MSG_SELECT_ORIGIN                    = _UxGT("Выберите ноль");
94
   LSTR MSG_SELECT_ORIGIN                    = _UxGT("Выберите ноль");
338
   LSTR MSG_MOVE_X                           = _UxGT("Движение по X");
332
   LSTR MSG_MOVE_X                           = _UxGT("Движение по X");
339
   LSTR MSG_MOVE_Y                           = _UxGT("Движение по Y");
333
   LSTR MSG_MOVE_Y                           = _UxGT("Движение по Y");
340
   LSTR MSG_MOVE_Z                           = _UxGT("Движение по Z");
334
   LSTR MSG_MOVE_Z                           = _UxGT("Движение по Z");
341
-  LSTR MSG_MOVE_I                           = _UxGT("Движение по ") STR_I;
342
-  LSTR MSG_MOVE_J                           = _UxGT("Движение по ") STR_J;
343
-  LSTR MSG_MOVE_K                           = _UxGT("Движение по ") STR_K;
335
+  LSTR MSG_MOVE_N                           = _UxGT("Движение по @");
344
   LSTR MSG_MOVE_E                           = _UxGT("Экструдер");
336
   LSTR MSG_MOVE_E                           = _UxGT("Экструдер");
345
   LSTR MSG_MOVE_EN                          = _UxGT("Экструдер *");
337
   LSTR MSG_MOVE_EN                          = _UxGT("Экструдер *");
346
   LSTR MSG_HOTEND_TOO_COLD                  = _UxGT("Сопло не нагрето");
338
   LSTR MSG_HOTEND_TOO_COLD                  = _UxGT("Сопло не нагрето");
401
   LSTR MSG_VA_JERK                          = _UxGT("V") STR_A _UxGT("-рывок");
393
   LSTR MSG_VA_JERK                          = _UxGT("V") STR_A _UxGT("-рывок");
402
   LSTR MSG_VB_JERK                          = _UxGT("V") STR_B _UxGT("-рывок");
394
   LSTR MSG_VB_JERK                          = _UxGT("V") STR_B _UxGT("-рывок");
403
   LSTR MSG_VC_JERK                          = _UxGT("V") STR_C _UxGT("-рывок");
395
   LSTR MSG_VC_JERK                          = _UxGT("V") STR_C _UxGT("-рывок");
404
-  LSTR MSG_VI_JERK                          = _UxGT("V") STR_I _UxGT("-рывок");
405
-  LSTR MSG_VJ_JERK                          = _UxGT("V") STR_J _UxGT("-рывок");
406
-  LSTR MSG_VK_JERK                          = _UxGT("V") STR_K _UxGT("-рывок");
396
+  LSTR MSG_VN_JERK                          = _UxGT("V@-рывок");
407
   LSTR MSG_VE_JERK                          = _UxGT("Ve-рывок");
397
   LSTR MSG_VE_JERK                          = _UxGT("Ve-рывок");
408
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
398
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
409
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Отклонение узла");
399
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Отклонение узла");
410
   #else
400
   #else
411
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Отклон. узла");
401
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Отклон. узла");
412
   #endif
402
   #endif
413
-  LSTR MSG_VELOCITY                         = _UxGT("Скорость, мм/с");
403
+  LSTR MSG_MAX_SPEED                        = _UxGT("Скорость, мм/с");
414
   LSTR MSG_VMAX_A                           = _UxGT("Скор.макс ") STR_A;
404
   LSTR MSG_VMAX_A                           = _UxGT("Скор.макс ") STR_A;
415
   LSTR MSG_VMAX_B                           = _UxGT("Скор.макс ") STR_B;
405
   LSTR MSG_VMAX_B                           = _UxGT("Скор.макс ") STR_B;
416
   LSTR MSG_VMAX_C                           = _UxGT("Скор.макс ") STR_C;
406
   LSTR MSG_VMAX_C                           = _UxGT("Скор.макс ") STR_C;
417
-  LSTR MSG_VMAX_I                           = _UxGT("Скор.макс ") STR_I;
418
-  LSTR MSG_VMAX_J                           = _UxGT("Скор.макс ") STR_J;
419
-  LSTR MSG_VMAX_K                           = _UxGT("Скор.макс ") STR_K;
420
-  LSTR MSG_VMAX_E                           = _UxGT("Скор.макс ") STR_E;
407
+  LSTR MSG_VMAX_N                           = _UxGT("Скор.макс @");
408
+  LSTR MSG_VMAX_E                           = _UxGT("Скор.макс E");
421
   LSTR MSG_VMAX_EN                          = _UxGT("Скор.макс *");
409
   LSTR MSG_VMAX_EN                          = _UxGT("Скор.макс *");
422
   LSTR MSG_VMIN                             = _UxGT("Скор.мин");
410
   LSTR MSG_VMIN                             = _UxGT("Скор.мин");
423
   LSTR MSG_VTRAV_MIN                        = _UxGT("Перемещение мин");
411
   LSTR MSG_VTRAV_MIN                        = _UxGT("Перемещение мин");
425
   LSTR MSG_AMAX_A                           = _UxGT("Ускор.макс ") STR_A;
413
   LSTR MSG_AMAX_A                           = _UxGT("Ускор.макс ") STR_A;
426
   LSTR MSG_AMAX_B                           = _UxGT("Ускор.макс ") STR_B;
414
   LSTR MSG_AMAX_B                           = _UxGT("Ускор.макс ") STR_B;
427
   LSTR MSG_AMAX_C                           = _UxGT("Ускор.макс ") STR_C;
415
   LSTR MSG_AMAX_C                           = _UxGT("Ускор.макс ") STR_C;
428
-  LSTR MSG_AMAX_I                           = _UxGT("Ускор.макс ") STR_I;
429
-  LSTR MSG_AMAX_J                           = _UxGT("Ускор.макс ") STR_J;
430
-  LSTR MSG_AMAX_K                           = _UxGT("Ускор.макс ") STR_K;
431
-  LSTR MSG_AMAX_E                           = _UxGT("Ускор.макс ") STR_E;
416
+  LSTR MSG_AMAX_N                           = _UxGT("Ускор.макс @");
417
+  LSTR MSG_AMAX_E                           = _UxGT("Ускор.макс E");
432
   LSTR MSG_AMAX_EN                          = _UxGT("Ускор.макс *");
418
   LSTR MSG_AMAX_EN                          = _UxGT("Ускор.макс *");
433
   LSTR MSG_A_RETRACT                        = _UxGT("Ускор.втягив.");
419
   LSTR MSG_A_RETRACT                        = _UxGT("Ускор.втягив.");
434
   LSTR MSG_A_TRAVEL                         = _UxGT("Ускор.путеш.");
420
   LSTR MSG_A_TRAVEL                         = _UxGT("Ускор.путеш.");
438
   LSTR MSG_A_STEPS                          = STR_A _UxGT(" шаг/мм");
424
   LSTR MSG_A_STEPS                          = STR_A _UxGT(" шаг/мм");
439
   LSTR MSG_B_STEPS                          = STR_B _UxGT(" шаг/мм");
425
   LSTR MSG_B_STEPS                          = STR_B _UxGT(" шаг/мм");
440
   LSTR MSG_C_STEPS                          = STR_C _UxGT(" шаг/мм");
426
   LSTR MSG_C_STEPS                          = STR_C _UxGT(" шаг/мм");
441
-  LSTR MSG_I_STEPS                          = STR_I _UxGT(" шаг/мм");
442
-  LSTR MSG_J_STEPS                          = STR_J _UxGT(" шаг/мм");
443
-  LSTR MSG_K_STEPS                          = STR_K _UxGT(" шаг/мм");
427
+  LSTR MSG_N_STEPS                          = _UxGT("@ шаг/мм");
444
   LSTR MSG_E_STEPS                          = _UxGT("E шаг/мм");
428
   LSTR MSG_E_STEPS                          = _UxGT("E шаг/мм");
445
   LSTR MSG_EN_STEPS                         = _UxGT("* шаг/мм");
429
   LSTR MSG_EN_STEPS                         = _UxGT("* шаг/мм");
446
   LSTR MSG_TEMPERATURE                      = _UxGT("Температура");
430
   LSTR MSG_TEMPERATURE                      = _UxGT("Температура");
611
   LSTR MSG_BABYSTEP_X                       = _UxGT("Микрошаг X");
595
   LSTR MSG_BABYSTEP_X                       = _UxGT("Микрошаг X");
612
   LSTR MSG_BABYSTEP_Y                       = _UxGT("Микрошаг Y");
596
   LSTR MSG_BABYSTEP_Y                       = _UxGT("Микрошаг Y");
613
   LSTR MSG_BABYSTEP_Z                       = _UxGT("Микрошаг Z");
597
   LSTR MSG_BABYSTEP_Z                       = _UxGT("Микрошаг Z");
614
-  LSTR MSG_BABYSTEP_I                       = _UxGT("Микрошаг ") STR_I;
615
-  LSTR MSG_BABYSTEP_J                       = _UxGT("Микрошаг ") STR_J;
616
-  LSTR MSG_BABYSTEP_K                       = _UxGT("Микрошаг ") STR_K;
598
+  LSTR MSG_BABYSTEP_N                       = _UxGT("Микрошаг @");
617
   LSTR MSG_BABYSTEP_TOTAL                   = _UxGT("Сумарно");
599
   LSTR MSG_BABYSTEP_TOTAL                   = _UxGT("Сумарно");
618
   LSTR MSG_ENDSTOP_ABORT                    = _UxGT("Сработал концевик");
600
   LSTR MSG_ENDSTOP_ABORT                    = _UxGT("Сработал концевик");
619
   LSTR MSG_HEATING_FAILED_LCD               = _UxGT("Разогрев не удался");
601
   LSTR MSG_HEATING_FAILED_LCD               = _UxGT("Разогрев не удался");
710
   LSTR MSG_INFO_MAX_TEMP                    = _UxGT("Макс. ") LCD_STR_THERMOMETER;
692
   LSTR MSG_INFO_MAX_TEMP                    = _UxGT("Макс. ") LCD_STR_THERMOMETER;
711
   LSTR MSG_INFO_PSU                         = _UxGT("БП");
693
   LSTR MSG_INFO_PSU                         = _UxGT("БП");
712
   LSTR MSG_DRIVE_STRENGTH                   = _UxGT("Сила привода");
694
   LSTR MSG_DRIVE_STRENGTH                   = _UxGT("Сила привода");
713
-  LSTR MSG_DAC_PERCENT_A                    = STR_A _UxGT(" Привод, %");
714
-  LSTR MSG_DAC_PERCENT_B                    = STR_B _UxGT(" Привод, %");
715
-  LSTR MSG_DAC_PERCENT_C                    = STR_C _UxGT(" Привод, %");
716
-  LSTR MSG_DAC_PERCENT_I                    = STR_I _UxGT(" Привод, %");
717
-  LSTR MSG_DAC_PERCENT_J                    = STR_J _UxGT(" Привод, %");
718
-  LSTR MSG_DAC_PERCENT_K                    = STR_K _UxGT(" Привод, %");
719
-  LSTR MSG_DAC_PERCENT_E                    = _UxGT("E Привод, %");
695
+  LSTR MSG_DAC_PERCENT_N                    = _UxGT("@ Привод, %");
720
   LSTR MSG_ERROR_TMC                        = _UxGT("СБОЙ СВЯЗИ С TMC");
696
   LSTR MSG_ERROR_TMC                        = _UxGT("СБОЙ СВЯЗИ С TMC");
721
   LSTR MSG_DAC_EEPROM_WRITE                 = _UxGT("Запись DAC в EEPROM");
697
   LSTR MSG_DAC_EEPROM_WRITE                 = _UxGT("Запись DAC в EEPROM");
722
   LSTR MSG_FILAMENT_CHANGE_HEADER           = _UxGT("ЗАМЕНА ФИЛАМЕНТА");
698
   LSTR MSG_FILAMENT_CHANGE_HEADER           = _UxGT("ЗАМЕНА ФИЛАМЕНТА");

+ 19
- 47
Marlin/src/lcd/language/language_sk.h View File

31
  * Translated by Michal Holeš, Farma MaM
31
  * Translated by Michal Holeš, Farma MaM
32
  * https://www.facebook.com/farmamam
32
  * https://www.facebook.com/farmamam
33
  *
33
  *
34
- * Substitutions are applied for the following characters when used
35
- * in menu items that call lcd_put_u8str_ind_P with an index:
34
+ * Substitutions are applied for the following characters when used in menu items titles:
36
  *
35
  *
37
- *   $ displays an inserted C-string
36
+ *   $ displays an inserted string
38
  *   = displays  '0'....'10' for indexes 0 - 10
37
  *   = displays  '0'....'10' for indexes 0 - 10
39
  *   ~ displays  '1'....'11' for indexes 0 - 10
38
  *   ~ displays  '1'....'11' for indexes 0 - 10
40
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
39
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
98
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("X Ofset");
97
   LSTR MSG_HOME_OFFSET_X                  = _UxGT("X Ofset");
99
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Y Ofset");
98
   LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Y Ofset");
100
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Z Ofset");
99
   LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Z Ofset");
101
-  LSTR MSG_HOME_OFFSET_I                  = STR_I _UxGT(" Ofset");
102
-  LSTR MSG_HOME_OFFSET_J                  = STR_J _UxGT(" Ofset");
103
-  LSTR MSG_HOME_OFFSET_K                  = STR_K _UxGT(" Ofset");
104
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Ofsety nastavené");
100
   LSTR MSG_HOME_OFFSETS_APPLIED           = _UxGT("Ofsety nastavené");
105
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Spriev. vyrovn.");
101
   LSTR MSG_TRAMMING_WIZARD                = _UxGT("Spriev. vyrovn.");
106
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Vyberte začiatok");
102
   LSTR MSG_SELECT_ORIGIN                  = _UxGT("Vyberte začiatok");
281
   LSTR MSG_MOVE_X                         = _UxGT("Posunúť X");
277
   LSTR MSG_MOVE_X                         = _UxGT("Posunúť X");
282
   LSTR MSG_MOVE_Y                         = _UxGT("Posunúť Y");
278
   LSTR MSG_MOVE_Y                         = _UxGT("Posunúť Y");
283
   LSTR MSG_MOVE_Z                         = _UxGT("Posunúť Z");
279
   LSTR MSG_MOVE_Z                         = _UxGT("Posunúť Z");
284
-  LSTR MSG_MOVE_I                         = _UxGT("Posunúť ") STR_I;
285
-  LSTR MSG_MOVE_J                         = _UxGT("Posunúť ") STR_J;
286
-  LSTR MSG_MOVE_K                         = _UxGT("Posunúť ") STR_K;
280
+  LSTR MSG_MOVE_N                         = _UxGT("Posunúť @");
287
   LSTR MSG_MOVE_E                         = _UxGT("Extrudér");
281
   LSTR MSG_MOVE_E                         = _UxGT("Extrudér");
288
   LSTR MSG_MOVE_EN                        = _UxGT("Extrudér *");
282
   LSTR MSG_MOVE_EN                        = _UxGT("Extrudér *");
289
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend je studený");
283
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hotend je studený");
290
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Posunúť o %smm");
284
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Posunúť o $mm");
291
   LSTR MSG_MOVE_01MM                      = _UxGT("Posunúť o 0,1mm");
285
   LSTR MSG_MOVE_01MM                      = _UxGT("Posunúť o 0,1mm");
292
   LSTR MSG_MOVE_1MM                       = _UxGT("Posunúť o 1mm");
286
   LSTR MSG_MOVE_1MM                       = _UxGT("Posunúť o 1mm");
293
   LSTR MSG_MOVE_10MM                      = _UxGT("Posunúť o 10mm");
287
   LSTR MSG_MOVE_10MM                      = _UxGT("Posunúť o 10mm");
297
   LSTR MSG_MOVE_01IN                      = _UxGT("Posunúť o 0,1in");
291
   LSTR MSG_MOVE_01IN                      = _UxGT("Posunúť o 0,1in");
298
   LSTR MSG_MOVE_1IN                       = _UxGT("Posunúť o 1,0in");
292
   LSTR MSG_MOVE_1IN                       = _UxGT("Posunúť o 1,0in");
299
   LSTR MSG_SPEED                          = _UxGT("Rýchlosť");
293
   LSTR MSG_SPEED                          = _UxGT("Rýchlosť");
300
-  LSTR MSG_MAXSPEED                       = _UxGT("Max rýchl. (mm/s)");
301
-  LSTR MSG_MAXSPEED_X                     = _UxGT("Max rýchl. ") STR_A;
302
-  LSTR MSG_MAXSPEED_Y                     = _UxGT("Max rýchl. ") STR_B;
303
-  LSTR MSG_MAXSPEED_Z                     = _UxGT("Max rýchl. ") STR_C;
304
-  LSTR MSG_MAXSPEED_E                     = _UxGT("Max rýchl. ") STR_E;
305
-  LSTR MSG_MAXSPEED_A                     = _UxGT("Max rýchl. @");
306
   LSTR MSG_BED_Z                          = _UxGT("Výška podl.");
294
   LSTR MSG_BED_Z                          = _UxGT("Výška podl.");
307
   LSTR MSG_NOZZLE                         = _UxGT("Tryska");
295
   LSTR MSG_NOZZLE                         = _UxGT("Tryska");
308
   LSTR MSG_NOZZLE_N                       = _UxGT("Tryska ~");
296
   LSTR MSG_NOZZLE_N                       = _UxGT("Tryska ~");
347
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-skok");
335
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-skok");
348
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-skok");
336
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-skok");
349
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-skok");
337
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-skok");
350
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT("-skok");
351
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT("-skok");
352
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT("-skok");
338
+  LSTR MSG_VN_JERK                        = _UxGT("V@-skok");
353
   LSTR MSG_VE_JERK                        = _UxGT("Ve-skok");
339
   LSTR MSG_VE_JERK                        = _UxGT("Ve-skok");
354
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
340
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Junction Dev");
355
-  LSTR MSG_VELOCITY                       = _UxGT("Rýchlosť");
356
-  LSTR MSG_VMAX_A                         = _UxGT("Vmax ") STR_A;
357
-  LSTR MSG_VMAX_B                         = _UxGT("Vmax ") STR_B;
358
-  LSTR MSG_VMAX_C                         = _UxGT("Vmax ") STR_C;
359
-  LSTR MSG_VMAX_I                         = _UxGT("Vmax ") STR_I;
360
-  LSTR MSG_VMAX_J                         = _UxGT("Vmax ") STR_J;
361
-  LSTR MSG_VMAX_K                         = _UxGT("Vmax ") STR_K;
362
-  LSTR MSG_VMAX_E                         = _UxGT("Vmax ") STR_E;
363
-  LSTR MSG_VMAX_EN                        = _UxGT("Vmax *");
341
+  LSTR MSG_MAX_SPEED                      = _UxGT("Max rýchl. (mm/s)");
342
+  LSTR MSG_VMAX_A                         = _UxGT("Max rýchl. ") STR_A;
343
+  LSTR MSG_VMAX_B                         = _UxGT("Max rýchl. ") STR_B;
344
+  LSTR MSG_VMAX_C                         = _UxGT("Max rýchl. ") STR_C;
345
+  LSTR MSG_VMAX_N                         = _UxGT("Max rýchl. @");
346
+  LSTR MSG_VMAX_E                         = _UxGT("Max rýchl. E");
347
+  LSTR MSG_VMAX_EN                        = _UxGT("Max rýchl. *");
364
   LSTR MSG_VMIN                           = _UxGT("Vmin");
348
   LSTR MSG_VMIN                           = _UxGT("Vmin");
365
   LSTR MSG_VTRAV_MIN                      = _UxGT("VPrej Min");
349
   LSTR MSG_VTRAV_MIN                      = _UxGT("VPrej Min");
366
   LSTR MSG_ACCELERATION                   = _UxGT("Akcelerácia");
350
   LSTR MSG_ACCELERATION                   = _UxGT("Akcelerácia");
367
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
351
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
368
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
352
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
369
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
353
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
370
-  LSTR MSG_AMAX_I                         = _UxGT("Amax ") STR_I;
371
-  LSTR MSG_AMAX_J                         = _UxGT("Amax ") STR_J;
372
-  LSTR MSG_AMAX_K                         = _UxGT("Amax ") STR_K;
373
-  LSTR MSG_AMAX_E                         = _UxGT("Amax ") STR_E;
354
+  LSTR MSG_AMAX_N                         = _UxGT("Amax @");
355
+  LSTR MSG_AMAX_E                         = _UxGT("Amax E");
374
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
356
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
375
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
357
   LSTR MSG_A_RETRACT                      = _UxGT("A-retrakt");
376
   LSTR MSG_A_TRAVEL                       = _UxGT("A-prejazd");
358
   LSTR MSG_A_TRAVEL                       = _UxGT("A-prejazd");
380
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" krokov/mm");
362
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" krokov/mm");
381
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" krokov/mm");
363
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" krokov/mm");
382
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" krokov/mm");
364
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" krokov/mm");
383
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" krokov/mm");
384
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" krokov/mm");
385
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" krokov/mm");
386
-  LSTR MSG_E_STEPS                        = _UxGT("Ekrokov/mm");
387
-  LSTR MSG_EN_STEPS                       = _UxGT("*krokov/mm");
365
+  LSTR MSG_N_STEPS                        = _UxGT("@ krokov/mm");
366
+  LSTR MSG_E_STEPS                        = _UxGT("E krokov/mm");
367
+  LSTR MSG_EN_STEPS                       = _UxGT("* krokov/mm");
388
   LSTR MSG_TEMPERATURE                    = _UxGT("Teplota");
368
   LSTR MSG_TEMPERATURE                    = _UxGT("Teplota");
389
   LSTR MSG_MOTION                         = _UxGT("Pohyb");
369
   LSTR MSG_MOTION                         = _UxGT("Pohyb");
390
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
370
   LSTR MSG_FILAMENT                       = _UxGT("Filament");
527
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
507
   LSTR MSG_BABYSTEP_X                     = _UxGT("Babystep X");
528
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
508
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Babystep Y");
529
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
509
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Babystep Z");
530
-  LSTR MSG_BABYSTEP_I                     = _UxGT("Babystep ") STR_I;
531
-  LSTR MSG_BABYSTEP_J                     = _UxGT("Babystep ") STR_J;
532
-  LSTR MSG_BABYSTEP_K                     = _UxGT("Babystep ") STR_K;
510
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Babystep @");
533
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Celkom");
511
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Celkom");
534
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Zastavenie Endstop");
512
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Zastavenie Endstop");
535
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Chyba ohrevu");
513
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Chyba ohrevu");
624
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Teplota max");
602
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Teplota max");
625
   LSTR MSG_INFO_PSU                       = _UxGT("Nap. zdroj");
603
   LSTR MSG_INFO_PSU                       = _UxGT("Nap. zdroj");
626
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Budenie motorov");
604
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Budenie motorov");
627
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Motor %");
628
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Motor %");
629
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Motor %");
630
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Motor %");
631
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Motor %");
632
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Motor %");
633
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Motor %");
605
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Motor %");
634
   LSTR MSG_ERROR_TMC                      = _UxGT("CHYBA KOMUNIKÁ. TMC");
606
   LSTR MSG_ERROR_TMC                      = _UxGT("CHYBA KOMUNIKÁ. TMC");
635
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Uložiť do EEPROM");
607
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Uložiť do EEPROM");
636
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("VÝMENA FILAMENTU");
608
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("VÝMENA FILAMENTU");

+ 10
- 23
Marlin/src/lcd/language/language_sv.h View File

252
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
252
   LSTR MSG_MOVE_E                         = _UxGT("Extruder");
253
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
253
   LSTR MSG_MOVE_EN                        = _UxGT("Extruder *");
254
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hetände för kall");
254
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Hetände för kall");
255
-  LSTR MSG_MOVE_N_MM                      = _UxGT("Flytta %smm");
255
+  LSTR MSG_MOVE_N_MM                      = _UxGT("Flytta $mm");
256
   LSTR MSG_MOVE_01MM                      = _UxGT("Flytta 0.1mm");
256
   LSTR MSG_MOVE_01MM                      = _UxGT("Flytta 0.1mm");
257
   LSTR MSG_MOVE_1MM                       = _UxGT("Flytta 1mm");
257
   LSTR MSG_MOVE_1MM                       = _UxGT("Flytta 1mm");
258
   LSTR MSG_MOVE_10MM                      = _UxGT("Flytta 10mm");
258
   LSTR MSG_MOVE_10MM                      = _UxGT("Flytta 10mm");
300
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Ryck");
300
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Ryck");
301
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Ryck");
301
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Ryck");
302
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Ryck");
302
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Ryck");
303
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT("-Ryck");
304
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT("-Ryck");
305
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT("-Ryck");
303
+  LSTR MSG_VN_JERK                        = _UxGT("V@-Ryck");
306
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Ryck");
304
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Ryck");
307
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Knutpunkt Avv");
305
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Knutpunkt Avv");
308
-  LSTR MSG_VELOCITY                       = _UxGT("Hastighet");
306
+  LSTR MSG_MAX_SPEED                      = _UxGT("Hastighet");
309
   LSTR MSG_VMAX_A                         = _UxGT("Vmax ") STR_A;
307
   LSTR MSG_VMAX_A                         = _UxGT("Vmax ") STR_A;
310
   LSTR MSG_VMAX_B                         = _UxGT("Vmax ") STR_B;
308
   LSTR MSG_VMAX_B                         = _UxGT("Vmax ") STR_B;
311
   LSTR MSG_VMAX_C                         = _UxGT("Vmax ") STR_C;
309
   LSTR MSG_VMAX_C                         = _UxGT("Vmax ") STR_C;
312
-  LSTR MSG_VMAX_I                         = _UxGT("Vmax ") STR_I;
313
-  LSTR MSG_VMAX_J                         = _UxGT("Vmax ") STR_J;
314
-  LSTR MSG_VMAX_K                         = _UxGT("Vmax ") STR_K;
315
-  LSTR MSG_VMAX_E                         = _UxGT("Vmax ") STR_E;
310
+  LSTR MSG_VMAX_N                         = _UxGT("Vmax @");
311
+  LSTR MSG_VMAX_E                         = _UxGT("Vmax E");
316
   LSTR MSG_VMAX_EN                        = _UxGT("Vmax *");
312
   LSTR MSG_VMAX_EN                        = _UxGT("Vmax *");
317
   LSTR MSG_VMIN                           = _UxGT("Vmin");
313
   LSTR MSG_VMIN                           = _UxGT("Vmin");
318
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
314
   LSTR MSG_VTRAV_MIN                      = _UxGT("VTrav Min");
320
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
316
   LSTR MSG_AMAX_A                         = _UxGT("Amax ") STR_A;
321
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
317
   LSTR MSG_AMAX_B                         = _UxGT("Amax ") STR_B;
322
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
318
   LSTR MSG_AMAX_C                         = _UxGT("Amax ") STR_C;
323
-  LSTR MSG_AMAX_I                         = _UxGT("Amax ") STR_I;
324
-  LSTR MSG_AMAX_J                         = _UxGT("Amax ") STR_J;
325
-  LSTR MSG_AMAX_K                         = _UxGT("Amax ") STR_K;
326
-  LSTR MSG_AMAX_E                         = _UxGT("Amax ") STR_E;
319
+  LSTR MSG_AMAX_N                         = _UxGT("Amax @");
320
+  LSTR MSG_AMAX_E                         = _UxGT("Amax E");
327
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
321
   LSTR MSG_AMAX_EN                        = _UxGT("Amax *");
328
   LSTR MSG_A_RETRACT                      = _UxGT("A-Dra tillbaka");
322
   LSTR MSG_A_RETRACT                      = _UxGT("A-Dra tillbaka");
329
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Färdas");
323
   LSTR MSG_A_TRAVEL                       = _UxGT("A-Färdas");
333
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steg/mm");
327
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" Steg/mm");
334
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steg/mm");
328
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" Steg/mm");
335
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steg/mm");
329
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" Steg/mm");
336
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" Steg/mm");
337
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" Steg/mm");
338
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" Steg/mm");
330
+  LSTR MSG_N_STEPS                        = _UxGT("@ Steg/mm");
339
   LSTR MSG_E_STEPS                        = _UxGT("E Steg/mm");
331
   LSTR MSG_E_STEPS                        = _UxGT("E Steg/mm");
340
   LSTR MSG_EN_STEPS                       = _UxGT("* Steg/mm");
332
   LSTR MSG_EN_STEPS                       = _UxGT("* Steg/mm");
341
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatur");
333
   LSTR MSG_TEMPERATURE                    = _UxGT("Temperatur");
469
   LSTR MSG_BABYSTEP_X                     = _UxGT("Småsteg X");
461
   LSTR MSG_BABYSTEP_X                     = _UxGT("Småsteg X");
470
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Småsteg Y");
462
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Småsteg Y");
471
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Småsteg Z");
463
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Småsteg Z");
464
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Småsteg @");
472
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
465
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Total");
473
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Slutstopp Avbrott");
466
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Slutstopp Avbrott");
474
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Värma Misslyckad");
467
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Värma Misslyckad");
540
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
533
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Temp");
541
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
534
   LSTR MSG_INFO_PSU                       = _UxGT("PSU");
542
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driv Styrka");
535
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Driv Styrka");
543
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Driver %");
544
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Driver %");
545
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Driver %");
546
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Driver %");
547
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Driver %");
548
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Driver %");
549
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Driver %");
536
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Driver %");
550
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC KOPPLNINGSFEL");
537
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC KOPPLNINGSFEL");
551
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Skriv");
538
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Skriv");
552
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("TRÅDBYTE");
539
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("TRÅDBYTE");

+ 10
- 23
Marlin/src/lcd/language/language_tr.h View File

228
   LSTR MSG_MOVE_E                         = _UxGT("Ekstruder");
228
   LSTR MSG_MOVE_E                         = _UxGT("Ekstruder");
229
   LSTR MSG_MOVE_EN                        = _UxGT("Ekstruder *");
229
   LSTR MSG_MOVE_EN                        = _UxGT("Ekstruder *");
230
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Nozul Çok Soğuk");
230
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("Nozul Çok Soğuk");
231
-  LSTR MSG_MOVE_N_MM                      = _UxGT("%smm");
231
+  LSTR MSG_MOVE_N_MM                      = _UxGT("$mm");
232
   LSTR MSG_MOVE_01MM                      = _UxGT("0.1mm");
232
   LSTR MSG_MOVE_01MM                      = _UxGT("0.1mm");
233
   LSTR MSG_MOVE_1MM                       = _UxGT("1mm");
233
   LSTR MSG_MOVE_1MM                       = _UxGT("1mm");
234
   LSTR MSG_MOVE_10MM                      = _UxGT("10mm");
234
   LSTR MSG_MOVE_10MM                      = _UxGT("10mm");
263
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Sarsım");
263
   LSTR MSG_VA_JERK                        = _UxGT("V") STR_A _UxGT("-Sarsım");
264
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Sarsım");
264
   LSTR MSG_VB_JERK                        = _UxGT("V") STR_B _UxGT("-Sarsım");
265
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Sarsım");
265
   LSTR MSG_VC_JERK                        = _UxGT("V") STR_C _UxGT("-Sarsım");
266
-  LSTR MSG_VI_JERK                        = _UxGT("V") STR_I _UxGT("-Sarsım");
267
-  LSTR MSG_VJ_JERK                        = _UxGT("V") STR_J _UxGT("-Sarsım");
268
-  LSTR MSG_VK_JERK                        = _UxGT("V") STR_K _UxGT("-Sarsım");
266
+  LSTR MSG_VN_JERK                        = _UxGT("V@-Sarsım");
269
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Sarsım");
267
   LSTR MSG_VE_JERK                        = _UxGT("Ve-Sarsım");
270
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Jonksiyon Sapması");
268
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Jonksiyon Sapması");
271
-  LSTR MSG_VELOCITY                       = _UxGT("Hız Vektörü");
269
+  LSTR MSG_MAX_SPEED                      = _UxGT("Hız Vektörü");
272
   LSTR MSG_VMAX_A                         = _UxGT("HızVektör.max ") STR_A;
270
   LSTR MSG_VMAX_A                         = _UxGT("HızVektör.max ") STR_A;
273
   LSTR MSG_VMAX_B                         = _UxGT("HızVektör.max ") STR_B;
271
   LSTR MSG_VMAX_B                         = _UxGT("HızVektör.max ") STR_B;
274
   LSTR MSG_VMAX_C                         = _UxGT("HızVektör.max ") STR_C;
272
   LSTR MSG_VMAX_C                         = _UxGT("HızVektör.max ") STR_C;
275
-  LSTR MSG_VMAX_I                         = _UxGT("HızVektör.max ") STR_I;
276
-  LSTR MSG_VMAX_J                         = _UxGT("HızVektör.max ") STR_J;
277
-  LSTR MSG_VMAX_K                         = _UxGT("HızVektör.max ") STR_K;
278
-  LSTR MSG_VMAX_E                         = _UxGT("HızVektör.max ") STR_E;
273
+  LSTR MSG_VMAX_N                         = _UxGT("HızVektör.max @");
274
+  LSTR MSG_VMAX_E                         = _UxGT("HızVektör.max E");
279
   LSTR MSG_VMAX_EN                        = _UxGT("HızVektör.max *");
275
   LSTR MSG_VMAX_EN                        = _UxGT("HızVektör.max *");
280
   LSTR MSG_VMIN                           = _UxGT("HızVektör.min");
276
   LSTR MSG_VMIN                           = _UxGT("HızVektör.min");
281
   LSTR MSG_VTRAV_MIN                      = _UxGT("HV.gezinme min");
277
   LSTR MSG_VTRAV_MIN                      = _UxGT("HV.gezinme min");
283
   LSTR MSG_AMAX_A                         = _UxGT("Max. ivme ") STR_A;
279
   LSTR MSG_AMAX_A                         = _UxGT("Max. ivme ") STR_A;
284
   LSTR MSG_AMAX_B                         = _UxGT("Max. ivme ") STR_B;
280
   LSTR MSG_AMAX_B                         = _UxGT("Max. ivme ") STR_B;
285
   LSTR MSG_AMAX_C                         = _UxGT("Max. ivme ") STR_C;
281
   LSTR MSG_AMAX_C                         = _UxGT("Max. ivme ") STR_C;
286
-  LSTR MSG_AMAX_I                         = _UxGT("Max. ivme ") STR_I;
287
-  LSTR MSG_AMAX_J                         = _UxGT("Max. ivme ") STR_J;
288
-  LSTR MSG_AMAX_K                         = _UxGT("Max. ivme ") STR_K;
289
-  LSTR MSG_AMAX_E                         = _UxGT("Max. ivme ") STR_E;
282
+  LSTR MSG_AMAX_N                         = _UxGT("Max. ivme @");
283
+  LSTR MSG_AMAX_E                         = _UxGT("Max. ivme E");
290
   LSTR MSG_AMAX_EN                        = _UxGT("Max. ivme *");
284
   LSTR MSG_AMAX_EN                        = _UxGT("Max. ivme *");
291
   LSTR MSG_A_RETRACT                      = _UxGT("Ivme-geri çekme");
285
   LSTR MSG_A_RETRACT                      = _UxGT("Ivme-geri çekme");
292
   LSTR MSG_A_TRAVEL                       = _UxGT("Ivme-gezinme");
286
   LSTR MSG_A_TRAVEL                       = _UxGT("Ivme-gezinme");
294
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" adım/mm");
288
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" adım/mm");
295
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" adım/mm");
289
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" adım/mm");
296
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" adım/mm");
290
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" adım/mm");
297
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" adım/mm");
298
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" adım/mm");
299
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" adım/mm");
291
+  LSTR MSG_N_STEPS                        = _UxGT("@ adım/mm");
300
   LSTR MSG_E_STEPS                        = _UxGT("E adım/mm");
292
   LSTR MSG_E_STEPS                        = _UxGT("E adım/mm");
301
   LSTR MSG_EN_STEPS                       = _UxGT("* adım/mm");
293
   LSTR MSG_EN_STEPS                       = _UxGT("* adım/mm");
302
   LSTR MSG_TEMPERATURE                    = _UxGT("Sıcaklık");
294
   LSTR MSG_TEMPERATURE                    = _UxGT("Sıcaklık");
406
   LSTR MSG_BABYSTEP_X                     = _UxGT("Miniadım X");
398
   LSTR MSG_BABYSTEP_X                     = _UxGT("Miniadım X");
407
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Miniadım Y");
399
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Miniadım Y");
408
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Miniadım Z");
400
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Miniadım Z");
401
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Miniadım @");
409
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Toplam");
402
   LSTR MSG_BABYSTEP_TOTAL                 = _UxGT("Toplam");
410
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop iptal");
403
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Endstop iptal");
411
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Isınma başarısız");
404
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Isınma başarısız");
473
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Sıc.");
466
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Max Sıc.");
474
   LSTR MSG_INFO_PSU                       = _UxGT("Güç Kaynağı");
467
   LSTR MSG_INFO_PSU                       = _UxGT("Güç Kaynağı");
475
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Sürücü Gücü");
468
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Sürücü Gücü");
476
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" Sürücü %");
477
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" Sürücü %");
478
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" Sürücü %");
479
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" Sürücü %");
480
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" Sürücü %");
481
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" Sürücü %");
482
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E Sürücü %");
469
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ Sürücü %");
483
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC BAĞLANTI HATASI");
470
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC BAĞLANTI HATASI");
484
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Yaz");
471
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("DAC EEPROM Yaz");
485
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMAN DEGISTIR");
472
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("FILAMAN DEGISTIR");

+ 10
- 34
Marlin/src/lcd/language/language_uk.h View File

86
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Зміщення дому X");
86
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Зміщення дому X");
87
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Зміщення дому Y");
87
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Зміщення дому Y");
88
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Зміщення дому Z");
88
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Зміщення дому Z");
89
-    LSTR MSG_HOME_OFFSET_I                  = _UxGT("Зміщення дому ") STR_I;
90
-    LSTR MSG_HOME_OFFSET_J                  = _UxGT("Зміщення дому ") STR_J;
91
-    LSTR MSG_HOME_OFFSET_K                  = _UxGT("Зміщення дому ") STR_K;
92
   #else
89
   #else
93
     LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Встан. зміщ. дому");
90
     LSTR MSG_SET_HOME_OFFSETS               = _UxGT("Встан. зміщ. дому");
94
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Зміщ. дому X");
91
     LSTR MSG_HOME_OFFSET_X                  = _UxGT("Зміщ. дому X");
95
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Зміщ. дому Y");
92
     LSTR MSG_HOME_OFFSET_Y                  = _UxGT("Зміщ. дому Y");
96
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Зміщ. дому Z");
93
     LSTR MSG_HOME_OFFSET_Z                  = _UxGT("Зміщ. дому Z");
97
-    LSTR MSG_HOME_OFFSET_I                  = _UxGT("Зміщ. дому ") STR_I;
98
-    LSTR MSG_HOME_OFFSET_J                  = _UxGT("Зміщ. дому ") STR_J;
99
-    LSTR MSG_HOME_OFFSET_K                  = _UxGT("Зміщ. дому ") STR_K;
100
   #endif
94
   #endif
101
   LSTR MSG_HOME_OFFSETS_APPLIED             = _UxGT("Зміщення прийняті");
95
   LSTR MSG_HOME_OFFSETS_APPLIED             = _UxGT("Зміщення прийняті");
102
   LSTR MSG_SELECT_ORIGIN                    = _UxGT("Оберіть нуль");
96
   LSTR MSG_SELECT_ORIGIN                    = _UxGT("Оберіть нуль");
339
   LSTR MSG_MOVE_X                           = _UxGT("Рух по X");
333
   LSTR MSG_MOVE_X                           = _UxGT("Рух по X");
340
   LSTR MSG_MOVE_Y                           = _UxGT("Рух по Y");
334
   LSTR MSG_MOVE_Y                           = _UxGT("Рух по Y");
341
   LSTR MSG_MOVE_Z                           = _UxGT("Рух по Z");
335
   LSTR MSG_MOVE_Z                           = _UxGT("Рух по Z");
342
-  LSTR MSG_MOVE_I                           = _UxGT("Рух по ") STR_I;
343
-  LSTR MSG_MOVE_J                           = _UxGT("Рух по ") STR_J;
344
-  LSTR MSG_MOVE_K                           = _UxGT("Рух по ") STR_K;
336
+  LSTR MSG_MOVE_N                           = _UxGT("Рух по @");
345
   LSTR MSG_MOVE_E                           = _UxGT("Екструдер");
337
   LSTR MSG_MOVE_E                           = _UxGT("Екструдер");
346
   LSTR MSG_MOVE_EN                          = _UxGT("Екструдер *");
338
   LSTR MSG_MOVE_EN                          = _UxGT("Екструдер *");
347
   LSTR MSG_HOTEND_TOO_COLD                  = _UxGT("Сопло дуже холодне");
339
   LSTR MSG_HOTEND_TOO_COLD                  = _UxGT("Сопло дуже холодне");
406
   LSTR MSG_VA_JERK                          = _UxGT("V") STR_A _UxGT("-ривок");
398
   LSTR MSG_VA_JERK                          = _UxGT("V") STR_A _UxGT("-ривок");
407
   LSTR MSG_VB_JERK                          = _UxGT("V") STR_B _UxGT("-ривок");
399
   LSTR MSG_VB_JERK                          = _UxGT("V") STR_B _UxGT("-ривок");
408
   LSTR MSG_VC_JERK                          = _UxGT("V") STR_C _UxGT("-ривок");
400
   LSTR MSG_VC_JERK                          = _UxGT("V") STR_C _UxGT("-ривок");
409
-  LSTR MSG_VI_JERK                          = _UxGT("V") STR_I _UxGT("-ривок");
410
-  LSTR MSG_VJ_JERK                          = _UxGT("V") STR_J _UxGT("-ривок");
411
-  LSTR MSG_VK_JERK                          = _UxGT("V") STR_K _UxGT("-ривок");
401
+  LSTR MSG_VN_JERK                          = _UxGT("V@-ривок");
412
   LSTR MSG_VE_JERK                          = _UxGT("Ve-ривок");
402
   LSTR MSG_VE_JERK                          = _UxGT("Ve-ривок");
413
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
403
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
414
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Відхилення вузла");
404
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Відхилення вузла");
415
   #else
405
   #else
416
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Відхил.вузла");
406
     LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Відхил.вузла");
417
   #endif
407
   #endif
418
-  LSTR MSG_VELOCITY                         = _UxGT("Швидкість, мм/с");
408
+  LSTR MSG_MAX_SPEED                        = _UxGT("Швидкість, мм/с");
419
   LSTR MSG_VMAX_A                           = _UxGT("Швидк.макс ") STR_A;
409
   LSTR MSG_VMAX_A                           = _UxGT("Швидк.макс ") STR_A;
420
   LSTR MSG_VMAX_B                           = _UxGT("Швидк.макс ") STR_B;
410
   LSTR MSG_VMAX_B                           = _UxGT("Швидк.макс ") STR_B;
421
   LSTR MSG_VMAX_C                           = _UxGT("Швидк.макс ") STR_C;
411
   LSTR MSG_VMAX_C                           = _UxGT("Швидк.макс ") STR_C;
422
-  LSTR MSG_VMAX_I                           = _UxGT("Швидк.макс ") STR_I;
423
-  LSTR MSG_VMAX_J                           = _UxGT("Швидк.макс ") STR_J;
424
-  LSTR MSG_VMAX_K                           = _UxGT("Швидк.макс ") STR_K;
425
-  LSTR MSG_VMAX_E                           = _UxGT("Швидк.макс ") STR_E;
412
+  LSTR MSG_VMAX_N                           = _UxGT("Швидк.макс @");
413
+  LSTR MSG_VMAX_E                           = _UxGT("Швидк.макс E");
426
   LSTR MSG_VMAX_EN                          = _UxGT("Швидк.макс *");
414
   LSTR MSG_VMAX_EN                          = _UxGT("Швидк.макс *");
427
   LSTR MSG_VMIN                             = _UxGT("Швидк. мін");
415
   LSTR MSG_VMIN                             = _UxGT("Швидк. мін");
428
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
416
   #if LCD_WIDTH > 21 || HAS_DWIN_E3V2
434
   LSTR MSG_AMAX_A                           = _UxGT("Приск.макс ") STR_A;
422
   LSTR MSG_AMAX_A                           = _UxGT("Приск.макс ") STR_A;
435
   LSTR MSG_AMAX_B                           = _UxGT("Приск.макс ") STR_B;
423
   LSTR MSG_AMAX_B                           = _UxGT("Приск.макс ") STR_B;
436
   LSTR MSG_AMAX_C                           = _UxGT("Приск.макс ") STR_C;
424
   LSTR MSG_AMAX_C                           = _UxGT("Приск.макс ") STR_C;
437
-  LSTR MSG_AMAX_I                           = _UxGT("Приск.макс ") STR_I;
438
-  LSTR MSG_AMAX_J                           = _UxGT("Приск.макс ") STR_J;
439
-  LSTR MSG_AMAX_K                           = _UxGT("Приск.макс ") STR_K;
440
-  LSTR MSG_AMAX_E                           = _UxGT("Приск.макс ") STR_E;
425
+  LSTR MSG_AMAX_N                           = _UxGT("Приск.макс @");
426
+  LSTR MSG_AMAX_E                           = _UxGT("Приск.макс E");
441
   LSTR MSG_AMAX_EN                          = _UxGT("Приск.макс *");
427
   LSTR MSG_AMAX_EN                          = _UxGT("Приск.макс *");
442
   LSTR MSG_A_RETRACT                        = _UxGT("Приск.втягув.");
428
   LSTR MSG_A_RETRACT                        = _UxGT("Приск.втягув.");
443
   LSTR MSG_A_TRAVEL                         = _UxGT("Приск.переміщ.");
429
   LSTR MSG_A_TRAVEL                         = _UxGT("Приск.переміщ.");
447
   LSTR MSG_A_STEPS                          = STR_A _UxGT(" кроків/мм");
433
   LSTR MSG_A_STEPS                          = STR_A _UxGT(" кроків/мм");
448
   LSTR MSG_B_STEPS                          = STR_B _UxGT(" кроків/мм");
434
   LSTR MSG_B_STEPS                          = STR_B _UxGT(" кроків/мм");
449
   LSTR MSG_C_STEPS                          = STR_C _UxGT(" кроків/мм");
435
   LSTR MSG_C_STEPS                          = STR_C _UxGT(" кроків/мм");
450
-  LSTR MSG_I_STEPS                          = STR_I _UxGT(" кроків/мм");
451
-  LSTR MSG_J_STEPS                          = STR_J _UxGT(" кроків/мм");
452
-  LSTR MSG_K_STEPS                          = STR_K _UxGT(" кроків/мм");
436
+  LSTR MSG_N_STEPS                          = _UxGT("@ кроків/мм");
453
   LSTR MSG_E_STEPS                          = _UxGT("E кроків/мм");
437
   LSTR MSG_E_STEPS                          = _UxGT("E кроків/мм");
454
   LSTR MSG_EN_STEPS                         = _UxGT("* кроків/мм");
438
   LSTR MSG_EN_STEPS                         = _UxGT("* кроків/мм");
455
   LSTR MSG_TEMPERATURE                      = _UxGT("Температура");
439
   LSTR MSG_TEMPERATURE                      = _UxGT("Температура");
624
   LSTR MSG_BABYSTEP_X                       = _UxGT("Мікрокрок X");
608
   LSTR MSG_BABYSTEP_X                       = _UxGT("Мікрокрок X");
625
   LSTR MSG_BABYSTEP_Y                       = _UxGT("Мікрокрок Y");
609
   LSTR MSG_BABYSTEP_Y                       = _UxGT("Мікрокрок Y");
626
   LSTR MSG_BABYSTEP_Z                       = _UxGT("Мікрокрок Z");
610
   LSTR MSG_BABYSTEP_Z                       = _UxGT("Мікрокрок Z");
627
-  LSTR MSG_BABYSTEP_I                       = _UxGT("Мікрокрок ") STR_I;
628
-  LSTR MSG_BABYSTEP_J                       = _UxGT("Мікрокрок ") STR_J;
629
-  LSTR MSG_BABYSTEP_K                       = _UxGT("Мікрокрок ") STR_K;
611
+  LSTR MSG_BABYSTEP_N                       = _UxGT("Мікрокрок @");
630
   LSTR MSG_BABYSTEP_TOTAL                   = _UxGT("Сумарно");
612
   LSTR MSG_BABYSTEP_TOTAL                   = _UxGT("Сумарно");
631
   LSTR MSG_ENDSTOP_ABORT                    = _UxGT("Кінцевик спрацював");
613
   LSTR MSG_ENDSTOP_ABORT                    = _UxGT("Кінцевик спрацював");
632
   LSTR MSG_HEATING_FAILED_LCD               = _UxGT("Збій нагріву");
614
   LSTR MSG_HEATING_FAILED_LCD               = _UxGT("Збій нагріву");
749
   LSTR MSG_INFO_MAX_TEMP                    = _UxGT("Макс. ") LCD_STR_THERMOMETER;
731
   LSTR MSG_INFO_MAX_TEMP                    = _UxGT("Макс. ") LCD_STR_THERMOMETER;
750
   LSTR MSG_INFO_PSU                         = _UxGT("Блок жив-ня");
732
   LSTR MSG_INFO_PSU                         = _UxGT("Блок жив-ня");
751
   LSTR MSG_DRIVE_STRENGTH                   = _UxGT("Сила мотору");
733
   LSTR MSG_DRIVE_STRENGTH                   = _UxGT("Сила мотору");
752
-  LSTR MSG_DAC_PERCENT_A                    = _UxGT("Драйвер ") STR_A _UxGT(", %");
753
-  LSTR MSG_DAC_PERCENT_B                    = _UxGT("Драйвер ") STR_B _UxGT(", %");
754
-  LSTR MSG_DAC_PERCENT_C                    = _UxGT("Драйвер ") STR_C _UxGT(", %");
755
-  LSTR MSG_DAC_PERCENT_I                    = _UxGT("Драйвер ") STR_I _UxGT(", %");
756
-  LSTR MSG_DAC_PERCENT_J                    = _UxGT("Драйвер ") STR_J _UxGT(", %");
757
-  LSTR MSG_DAC_PERCENT_K                    = _UxGT("Драйвер ") STR_K _UxGT(", %");
758
-  LSTR MSG_DAC_PERCENT_E                    = _UxGT("Драйвер E, %");
734
+  LSTR MSG_DAC_PERCENT_N                    = _UxGT("Драйвер @, %");
759
   LSTR MSG_ERROR_TMC                        = _UxGT("ЗБІЙ ЗВ'ЯЗКУ З TMC");
735
   LSTR MSG_ERROR_TMC                        = _UxGT("ЗБІЙ ЗВ'ЯЗКУ З TMC");
760
   LSTR MSG_DAC_EEPROM_WRITE                 = _UxGT("Запис ЦАП у EEPROM");
736
   LSTR MSG_DAC_EEPROM_WRITE                 = _UxGT("Запис ЦАП у EEPROM");
761
   LSTR MSG_FILAMENT_CHANGE_HEADER           = _UxGT("ЗАМІНА ПРУТКА");
737
   LSTR MSG_FILAMENT_CHANGE_HEADER           = _UxGT("ЗАМІНА ПРУТКА");

+ 9
- 22
Marlin/src/lcd/language/language_vi.h View File

230
   LSTR MSG_VA_JERK                        = _UxGT("Giật-V") STR_A;
230
   LSTR MSG_VA_JERK                        = _UxGT("Giật-V") STR_A;
231
   LSTR MSG_VB_JERK                        = _UxGT("Giật-V") STR_B;
231
   LSTR MSG_VB_JERK                        = _UxGT("Giật-V") STR_B;
232
   LSTR MSG_VC_JERK                        = _UxGT("Giật-V") STR_C;
232
   LSTR MSG_VC_JERK                        = _UxGT("Giật-V") STR_C;
233
-  LSTR MSG_VI_JERK                        = _UxGT("Giật-V") STR_I;
234
-  LSTR MSG_VJ_JERK                        = _UxGT("Giật-V") STR_J;
235
-  LSTR MSG_VK_JERK                        = _UxGT("Giật-V") STR_K;
233
+  LSTR MSG_VN_JERK                        = _UxGT("Giật-V@");
236
   LSTR MSG_VE_JERK                        = _UxGT("Giật-Ve");
234
   LSTR MSG_VE_JERK                        = _UxGT("Giật-Ve");
237
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Độ Lệch Chỗ Giao");                    // Junction Dev
235
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("Độ Lệch Chỗ Giao");                    // Junction Dev
238
-  LSTR MSG_VELOCITY                       = _UxGT("Vận tốc");                              // velocity
236
+  LSTR MSG_MAX_SPEED                      = _UxGT("Vận tốc");                              // velocity
239
   LSTR MSG_VMAX_A                         = _UxGT("Vđa") STR_A;                        // Vmax
237
   LSTR MSG_VMAX_A                         = _UxGT("Vđa") STR_A;                        // Vmax
240
   LSTR MSG_VMAX_B                         = _UxGT("Vđa") STR_B;
238
   LSTR MSG_VMAX_B                         = _UxGT("Vđa") STR_B;
241
   LSTR MSG_VMAX_C                         = _UxGT("Vđa") STR_C;
239
   LSTR MSG_VMAX_C                         = _UxGT("Vđa") STR_C;
242
-  LSTR MSG_VMAX_I                         = _UxGT("Vđa") STR_I;
243
-  LSTR MSG_VMAX_J                         = _UxGT("Vđa") STR_J;
244
-  LSTR MSG_VMAX_K                         = _UxGT("Vđa") STR_K;
245
-  LSTR MSG_VMAX_E                         = _UxGT("Vđa") STR_E;
240
+  LSTR MSG_VMAX_N                         = _UxGT("Vđa@");
241
+  LSTR MSG_VMAX_E                         = _UxGT("VđaE");
246
   LSTR MSG_VMAX_EN                        = _UxGT("Vđa *");
242
   LSTR MSG_VMAX_EN                        = _UxGT("Vđa *");
247
   LSTR MSG_VMIN                           = _UxGT("Vthiểu");                               // Vmin
243
   LSTR MSG_VMIN                           = _UxGT("Vthiểu");                               // Vmin
248
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vchuyển thiểu");                        // VTrav min
244
   LSTR MSG_VTRAV_MIN                      = _UxGT("Vchuyển thiểu");                        // VTrav min
250
   LSTR MSG_AMAX_A                         = _UxGT("Tăng tốc ca") STR_A;                // Amax
246
   LSTR MSG_AMAX_A                         = _UxGT("Tăng tốc ca") STR_A;                // Amax
251
   LSTR MSG_AMAX_B                         = _UxGT("Tăng tốc ca") STR_B;
247
   LSTR MSG_AMAX_B                         = _UxGT("Tăng tốc ca") STR_B;
252
   LSTR MSG_AMAX_C                         = _UxGT("Tăng tốc ca") STR_C;
248
   LSTR MSG_AMAX_C                         = _UxGT("Tăng tốc ca") STR_C;
253
-  LSTR MSG_AMAX_I                         = _UxGT("Tăng tốc ca") STR_I;                // Amax
254
-  LSTR MSG_AMAX_J                         = _UxGT("Tăng tốc ca") STR_J;
255
-  LSTR MSG_AMAX_K                         = _UxGT("Tăng tốc ca") STR_K;
256
-  LSTR MSG_AMAX_E                         = _UxGT("Tăng tốc ca") STR_E;
249
+  LSTR MSG_AMAX_N                         = _UxGT("Tăng tốc ca@");
250
+  LSTR MSG_AMAX_E                         = _UxGT("Tăng tốc caE");
257
   LSTR MSG_AMAX_EN                        = _UxGT("Tăng tốc ca *");
251
   LSTR MSG_AMAX_EN                        = _UxGT("Tăng tốc ca *");
258
   LSTR MSG_A_RETRACT                      = _UxGT("TT-Rút");                               // A-retract
252
   LSTR MSG_A_RETRACT                      = _UxGT("TT-Rút");                               // A-retract
259
   LSTR MSG_A_TRAVEL                       = _UxGT("TT-Chuyển");                            // A-travel
253
   LSTR MSG_A_TRAVEL                       = _UxGT("TT-Chuyển");                            // A-travel
261
   LSTR MSG_A_STEPS                        = _UxGT("Bước") STR_A _UxGT("/mm");          // Steps/mm
255
   LSTR MSG_A_STEPS                        = _UxGT("Bước") STR_A _UxGT("/mm");          // Steps/mm
262
   LSTR MSG_B_STEPS                        = _UxGT("Bước") STR_B _UxGT("/mm");
256
   LSTR MSG_B_STEPS                        = _UxGT("Bước") STR_B _UxGT("/mm");
263
   LSTR MSG_C_STEPS                        = _UxGT("Bước") STR_C _UxGT("/mm");
257
   LSTR MSG_C_STEPS                        = _UxGT("Bước") STR_C _UxGT("/mm");
264
-  LSTR MSG_I_STEPS                        = _UxGT("Bước") STR_I _UxGT("/mm");          // Steps/mm
265
-  LSTR MSG_J_STEPS                        = _UxGT("Bước") STR_J _UxGT("/mm");
266
-  LSTR MSG_K_STEPS                        = _UxGT("Bước") STR_K _UxGT("/mm");
258
+  LSTR MSG_N_STEPS                        = _UxGT("Bước@/mm");
267
   LSTR MSG_E_STEPS                        = _UxGT("BướcE/mm");
259
   LSTR MSG_E_STEPS                        = _UxGT("BướcE/mm");
268
   LSTR MSG_EN_STEPS                       = _UxGT("Bước */mm");
260
   LSTR MSG_EN_STEPS                       = _UxGT("Bước */mm");
269
   LSTR MSG_TEMPERATURE                    = _UxGT("Nhiệt độ");                             // Temperature
261
   LSTR MSG_TEMPERATURE                    = _UxGT("Nhiệt độ");                             // Temperature
339
   LSTR MSG_BABYSTEP_X                     = _UxGT("Nhít X");                               // Babystep X
331
   LSTR MSG_BABYSTEP_X                     = _UxGT("Nhít X");                               // Babystep X
340
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Nhít Y");
332
   LSTR MSG_BABYSTEP_Y                     = _UxGT("Nhít Y");
341
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Nhít Z");
333
   LSTR MSG_BABYSTEP_Z                     = _UxGT("Nhít Z");
334
+  LSTR MSG_BABYSTEP_N                     = _UxGT("Nhít @");
342
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Hủy bỏ công tắc");                      // Endstop abort
335
   LSTR MSG_ENDSTOP_ABORT                  = _UxGT("Hủy bỏ công tắc");                      // Endstop abort
343
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Sưởi đầu phun không thành công");       // Heating failed
336
   LSTR MSG_HEATING_FAILED_LCD             = _UxGT("Sưởi đầu phun không thành công");       // Heating failed
344
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Điều sai: nhiệt độ dư");                // Err: REDUNDANT TEMP
337
   LSTR MSG_ERR_REDUNDANT_TEMP             = _UxGT("Điều sai: nhiệt độ dư");                // Err: REDUNDANT TEMP
399
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Nhiệt độ tối đa");                      // Max temp
392
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("Nhiệt độ tối đa");                      // Max temp
400
   LSTR MSG_INFO_PSU                       = _UxGT("Bộ nguồn");                             // PSU
393
   LSTR MSG_INFO_PSU                       = _UxGT("Bộ nguồn");                             // PSU
401
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Sức mạnh ổ đĩa");                       // Drive Strength
394
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("Sức mạnh ổ đĩa");                       // Drive Strength
402
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" % trình điều khiển");        // X Driver %
403
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" % trình điều khiển");
404
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" % trình điều khiển");
405
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" % trình điều khiển");
406
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" % trình điều khiển");
407
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" % trình điều khiển");
408
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E % trình điều khiển");
395
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ % trình điều khiển");
409
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Ghi DAC EEPROM");                       // DAC EEPROM Write
396
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("Ghi DAC EEPROM");                       // DAC EEPROM Write
410
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("In tạm dừng");                          // PRINT PAUSED
397
   LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE   = _UxGT("In tạm dừng");                          // PRINT PAUSED
411
   LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD    = _UxGT("Nạp dây nhựa");
398
   LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD    = _UxGT("Nạp dây nhựa");

+ 9
- 23
Marlin/src/lcd/language/language_zh_CN.h View File

225
   LSTR MSG_MOVE_E                         = _UxGT("挤出机");     // "Extruder"
225
   LSTR MSG_MOVE_E                         = _UxGT("挤出机");     // "Extruder"
226
   LSTR MSG_MOVE_EN                        = _UxGT("挤出机 *");     // "Extruder"
226
   LSTR MSG_MOVE_EN                        = _UxGT("挤出机 *");     // "Extruder"
227
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("热端太冷");
227
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("热端太冷");
228
-  LSTR MSG_MOVE_N_MM                      = _UxGT("移动 %s mm");     // "Move 0.025mm"
228
+  LSTR MSG_MOVE_N_MM                      = _UxGT("移动 $ mm");      // "Move 0.025mm"
229
   LSTR MSG_MOVE_01MM                      = _UxGT("移动 0.1 mm");     // "Move 0.1mm"
229
   LSTR MSG_MOVE_01MM                      = _UxGT("移动 0.1 mm");     // "Move 0.1mm"
230
   LSTR MSG_MOVE_1MM                       = _UxGT("移动 1 mm");     // "Move 1mm"
230
   LSTR MSG_MOVE_1MM                       = _UxGT("移动 1 mm");     // "Move 1mm"
231
   LSTR MSG_MOVE_10MM                      = _UxGT("移动 10 mm");     // "Move 10mm"
231
   LSTR MSG_MOVE_10MM                      = _UxGT("移动 10 mm");     // "Move 10mm"
270
   LSTR MSG_VA_JERK                        = _UxGT("轴抖动速率") STR_A;     // "Va-jerk"
270
   LSTR MSG_VA_JERK                        = _UxGT("轴抖动速率") STR_A;     // "Va-jerk"
271
   LSTR MSG_VB_JERK                        = _UxGT("轴抖动速率") STR_B;     // "Vb-jerk"
271
   LSTR MSG_VB_JERK                        = _UxGT("轴抖动速率") STR_B;     // "Vb-jerk"
272
   LSTR MSG_VC_JERK                        = _UxGT("轴抖动速率") STR_C;     // "Vc-jerk"
272
   LSTR MSG_VC_JERK                        = _UxGT("轴抖动速率") STR_C;     // "Vc-jerk"
273
-  LSTR MSG_VI_JERK                        = _UxGT("轴抖动速率") STR_I;     // "Vi-jerk"
274
-  LSTR MSG_VJ_JERK                        = _UxGT("轴抖动速率") STR_J;     // "Vj-jerk"
275
-  LSTR MSG_VK_JERK                        = _UxGT("轴抖动速率") STR_K;     // "Vk-jerk"
273
+  LSTR MSG_VN_JERK                        = _UxGT("轴抖动速率@");          // "V@-jerk"
276
   LSTR MSG_VE_JERK                        = _UxGT("挤出机抖动速率");     // "Ve-jerk"
274
   LSTR MSG_VE_JERK                        = _UxGT("挤出机抖动速率");     // "Ve-jerk"
277
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("接点差");
275
   LSTR MSG_JUNCTION_DEVIATION             = _UxGT("接点差");
278
-  LSTR MSG_VELOCITY                       = _UxGT("速度");     // "Velocity"
276
+  LSTR MSG_MAX_SPEED                      = _UxGT("速度");     // "Velocity"
279
   LSTR MSG_VMAX_A                         = _UxGT("最大进料速率") STR_A;     // "Vmax " max_feedrate_mm_s
277
   LSTR MSG_VMAX_A                         = _UxGT("最大进料速率") STR_A;     // "Vmax " max_feedrate_mm_s
280
   LSTR MSG_VMAX_B                         = _UxGT("最大进料速率") STR_B;
278
   LSTR MSG_VMAX_B                         = _UxGT("最大进料速率") STR_B;
281
   LSTR MSG_VMAX_C                         = _UxGT("最大进料速率") STR_C;
279
   LSTR MSG_VMAX_C                         = _UxGT("最大进料速率") STR_C;
282
-  LSTR MSG_VMAX_I                         = _UxGT("最大进料速率") STR_I;
283
-  LSTR MSG_VMAX_J                         = _UxGT("最大进料速率") STR_J;
284
-  LSTR MSG_VMAX_K                         = _UxGT("最大进料速率") STR_K;
285
-  LSTR MSG_VMAX_E                         = _UxGT("最大进料速率") STR_E;
280
+  LSTR MSG_VMAX_N                         = _UxGT("最大进料速率@");
281
+  LSTR MSG_VMAX_E                         = _UxGT("最大进料速率E");
286
   LSTR MSG_VMAX_EN                        = _UxGT("最大进料速率 *");
282
   LSTR MSG_VMAX_EN                        = _UxGT("最大进料速率 *");
287
   LSTR MSG_VMIN                           = _UxGT("最小进料速率");     // "Vmin"  min_feedrate_mm_s
283
   LSTR MSG_VMIN                           = _UxGT("最小进料速率");     // "Vmin"  min_feedrate_mm_s
288
   LSTR MSG_VTRAV_MIN                      = _UxGT("最小移动速率");     // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
284
   LSTR MSG_VTRAV_MIN                      = _UxGT("最小移动速率");     // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
290
   LSTR MSG_AMAX_A                         = _UxGT("最大打印加速度") STR_A;     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
286
   LSTR MSG_AMAX_A                         = _UxGT("最大打印加速度") STR_A;     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
291
   LSTR MSG_AMAX_B                         = _UxGT("最大打印加速度") STR_B;
287
   LSTR MSG_AMAX_B                         = _UxGT("最大打印加速度") STR_B;
292
   LSTR MSG_AMAX_C                         = _UxGT("最大打印加速度") STR_C;
288
   LSTR MSG_AMAX_C                         = _UxGT("最大打印加速度") STR_C;
293
-  LSTR MSG_AMAX_I                         = _UxGT("最大打印加速度") STR_I;
294
-  LSTR MSG_AMAX_J                         = _UxGT("最大打印加速度") STR_J;
295
-  LSTR MSG_AMAX_K                         = _UxGT("最大打印加速度") STR_K;
296
-  LSTR MSG_AMAX_E                         = _UxGT("最大打印加速度") STR_E;
289
+  LSTR MSG_AMAX_N                         = _UxGT("最大打印加速度@");
290
+  LSTR MSG_AMAX_E                         = _UxGT("最大打印加速度E");
297
   LSTR MSG_AMAX_EN                        = _UxGT("最大打印加速度 *");
291
   LSTR MSG_AMAX_EN                        = _UxGT("最大打印加速度 *");
298
   LSTR MSG_A_RETRACT                      = _UxGT("收进加速度");     // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
292
   LSTR MSG_A_RETRACT                      = _UxGT("收进加速度");     // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
299
   LSTR MSG_A_TRAVEL                       = _UxGT("非打印移动加速度");     // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
293
   LSTR MSG_A_TRAVEL                       = _UxGT("非打印移动加速度");     // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
303
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" 步数/mm");     // "Asteps/mm"
297
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" 步数/mm");     // "Asteps/mm"
304
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" 步数/mm");
298
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" 步数/mm");
305
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" 步数/mm");
299
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" 步数/mm");
306
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" 步数/mm");
307
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" 步数/mm");
308
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" 步数/mm");
300
+  LSTR MSG_N_STEPS                        = _UxGT("@ 步数/mm");
309
   LSTR MSG_E_STEPS                        = _UxGT("E 步数/mm");     // "Esteps/mm"
301
   LSTR MSG_E_STEPS                        = _UxGT("E 步数/mm");     // "Esteps/mm"
310
   LSTR MSG_EN_STEPS                       = _UxGT("* 步数/mm");
302
   LSTR MSG_EN_STEPS                       = _UxGT("* 步数/mm");
311
   LSTR MSG_TEMPERATURE                    = _UxGT("温度");     // "Temperature"
303
   LSTR MSG_TEMPERATURE                    = _UxGT("温度");     // "Temperature"
507
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("最高温度");     // "Max Temp"
499
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("最高温度");     // "Max Temp"
508
   LSTR MSG_INFO_PSU                       = _UxGT("电源供应");     // "Power Supply"
500
   LSTR MSG_INFO_PSU                       = _UxGT("电源供应");     // "Power Supply"
509
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("驱动力度");     // "Drive Strength"
501
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("驱动力度");     // "Drive Strength"
510
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" 驱动 %");     // "X Driver %"
511
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" 驱动 %");
512
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" 驱动 %");
513
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" 驱动 %");
514
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" 驱动 %");
515
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" 驱动 %");
516
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E 驱动 %");     // "E Driver %"
502
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ 驱动 %");     // "E Driver %"
517
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC 连接错误");
503
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC 连接错误");
518
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("保存驱动设置");     // "DAC EEPROM Write"
504
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("保存驱动设置");     // "DAC EEPROM Write"
519
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("更换料");
505
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("更换料");

+ 9
- 23
Marlin/src/lcd/language/language_zh_TW.h View File

221
   LSTR MSG_MOVE_E                         = _UxGT("擠出機");     // "Extruder"
221
   LSTR MSG_MOVE_E                         = _UxGT("擠出機");     // "Extruder"
222
   LSTR MSG_MOVE_EN                        = _UxGT("擠出機 *");       // "Extruder *"
222
   LSTR MSG_MOVE_EN                        = _UxGT("擠出機 *");       // "Extruder *"
223
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("噴嘴溫度不夠");   // "Hotend too cold"
223
   LSTR MSG_HOTEND_TOO_COLD                = _UxGT("噴嘴溫度不夠");   // "Hotend too cold"
224
-  LSTR MSG_MOVE_N_MM                      = _UxGT("移動 %s mm");     // "Move 0.025mm"
224
+  LSTR MSG_MOVE_N_MM                      = _UxGT("移動 $ mm");      // "Move 0.025mm"
225
   LSTR MSG_MOVE_01MM                      = _UxGT("移動 0.1 mm");    // "Move 0.1mm"
225
   LSTR MSG_MOVE_01MM                      = _UxGT("移動 0.1 mm");    // "Move 0.1mm"
226
   LSTR MSG_MOVE_1MM                       = _UxGT("移動 1 mm");      // "Move 1mm"
226
   LSTR MSG_MOVE_1MM                       = _UxGT("移動 1 mm");      // "Move 1mm"
227
   LSTR MSG_MOVE_10MM                      = _UxGT("移動 10 mm");     // "Move 10mm"
227
   LSTR MSG_MOVE_10MM                      = _UxGT("移動 10 mm");     // "Move 10mm"
254
   LSTR MSG_VA_JERK                        = _UxGT("軸抖動速率") STR_A;     // "Va-jerk"
254
   LSTR MSG_VA_JERK                        = _UxGT("軸抖動速率") STR_A;     // "Va-jerk"
255
   LSTR MSG_VB_JERK                        = _UxGT("軸抖動速率") STR_B;
255
   LSTR MSG_VB_JERK                        = _UxGT("軸抖動速率") STR_B;
256
   LSTR MSG_VC_JERK                        = _UxGT("軸抖動速率") STR_C;
256
   LSTR MSG_VC_JERK                        = _UxGT("軸抖動速率") STR_C;
257
-  LSTR MSG_VI_JERK                        = _UxGT("軸抖動速率") STR_I;
258
-  LSTR MSG_VJ_JERK                        = _UxGT("軸抖動速率") STR_J;
259
-  LSTR MSG_VK_JERK                        = _UxGT("軸抖動速率") STR_K;
257
+  LSTR MSG_VN_JERK                        = _UxGT("軸抖動速率@");
260
   LSTR MSG_VE_JERK                        = _UxGT("擠出機抖動速率");
258
   LSTR MSG_VE_JERK                        = _UxGT("擠出機抖動速率");
261
 
259
 
262
-  LSTR MSG_VELOCITY                       = _UxGT("速度");     // "Velocity"
260
+  LSTR MSG_MAX_SPEED                      = _UxGT("速度");     // "Velocity"
263
   LSTR MSG_VMAX_A                         = _UxGT("最大進料速率") STR_A;     // "Vmax " max_feedrate_mm_s
261
   LSTR MSG_VMAX_A                         = _UxGT("最大進料速率") STR_A;     // "Vmax " max_feedrate_mm_s
264
   LSTR MSG_VMAX_B                         = _UxGT("最大進料速率") STR_B;
262
   LSTR MSG_VMAX_B                         = _UxGT("最大進料速率") STR_B;
265
   LSTR MSG_VMAX_C                         = _UxGT("最大進料速率") STR_C;
263
   LSTR MSG_VMAX_C                         = _UxGT("最大進料速率") STR_C;
266
-  LSTR MSG_VMAX_I                         = _UxGT("最大進料速率") STR_I;
267
-  LSTR MSG_VMAX_J                         = _UxGT("最大進料速率") STR_J;
268
-  LSTR MSG_VMAX_K                         = _UxGT("最大進料速率") STR_K;
269
-  LSTR MSG_VMAX_E                         = _UxGT("最大進料速率") STR_E;
264
+  LSTR MSG_VMAX_N                         = _UxGT("最大進料速率@");
265
+  LSTR MSG_VMAX_E                         = _UxGT("最大進料速率E");
270
   LSTR MSG_VMAX_EN                        = _UxGT("最大進料速率 *");     // "Vmax " max_feedrate_mm_s
266
   LSTR MSG_VMAX_EN                        = _UxGT("最大進料速率 *");     // "Vmax " max_feedrate_mm_s
271
   LSTR MSG_VMIN                           = _UxGT("最小進料速率");     // "Vmin"  min_feedrate_mm_s
267
   LSTR MSG_VMIN                           = _UxGT("最小進料速率");     // "Vmin"  min_feedrate_mm_s
272
   LSTR MSG_VTRAV_MIN                      = _UxGT("最小移動速率");     // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
268
   LSTR MSG_VTRAV_MIN                      = _UxGT("最小移動速率");     // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
274
   LSTR MSG_AMAX_A                         = _UxGT("最大列印加速度") STR_A;     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
270
   LSTR MSG_AMAX_A                         = _UxGT("最大列印加速度") STR_A;     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
275
   LSTR MSG_AMAX_B                         = _UxGT("最大列印加速度") STR_B;
271
   LSTR MSG_AMAX_B                         = _UxGT("最大列印加速度") STR_B;
276
   LSTR MSG_AMAX_C                         = _UxGT("最大列印加速度") STR_C;
272
   LSTR MSG_AMAX_C                         = _UxGT("最大列印加速度") STR_C;
277
-  LSTR MSG_AMAX_I                         = _UxGT("最大列印加速度") STR_I;
278
-  LSTR MSG_AMAX_J                         = _UxGT("最大列印加速度") STR_J;
279
-  LSTR MSG_AMAX_K                         = _UxGT("最大列印加速度") STR_K;
280
-  LSTR MSG_AMAX_E                         = _UxGT("最大列印加速度") STR_E;
273
+  LSTR MSG_AMAX_N                         = _UxGT("最大列印加速度@");
274
+  LSTR MSG_AMAX_E                         = _UxGT("最大列印加速度E");
281
   LSTR MSG_AMAX_EN                        = _UxGT("最大列印加速度 *");     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
275
   LSTR MSG_AMAX_EN                        = _UxGT("最大列印加速度 *");     // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
282
   LSTR MSG_A_RETRACT                      = _UxGT("回縮加速度");     // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
276
   LSTR MSG_A_RETRACT                      = _UxGT("回縮加速度");     // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
283
   LSTR MSG_A_TRAVEL                       = _UxGT("非列印移動加速度");     // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
277
   LSTR MSG_A_TRAVEL                       = _UxGT("非列印移動加速度");     // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
285
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" 軸步數/mm");     // "Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
279
   LSTR MSG_A_STEPS                        = STR_A _UxGT(" 軸步數/mm");     // "Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
286
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" 軸步數/mm");
280
   LSTR MSG_B_STEPS                        = STR_B _UxGT(" 軸步數/mm");
287
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" 軸步數/mm");
281
   LSTR MSG_C_STEPS                        = STR_C _UxGT(" 軸步數/mm");
288
-  LSTR MSG_I_STEPS                        = STR_I _UxGT(" 軸步數/mm");
289
-  LSTR MSG_J_STEPS                        = STR_J _UxGT(" 軸步數/mm");
290
-  LSTR MSG_K_STEPS                        = STR_K _UxGT(" 軸步數/mm");
282
+  LSTR MSG_N_STEPS                        = _UxGT("@ 軸步數/mm");
291
   LSTR MSG_E_STEPS                        = _UxGT("擠出機步數/mm");     // "Esteps/mm"
283
   LSTR MSG_E_STEPS                        = _UxGT("擠出機步數/mm");     // "Esteps/mm"
292
   LSTR MSG_EN_STEPS                       = _UxGT("擠出機~步數/mm");
284
   LSTR MSG_EN_STEPS                       = _UxGT("擠出機~步數/mm");
293
   LSTR MSG_TEMPERATURE                    = _UxGT("溫度");     // "Temperature"
285
   LSTR MSG_TEMPERATURE                    = _UxGT("溫度");     // "Temperature"
454
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("最高溫度");     // "Max Temp"
446
   LSTR MSG_INFO_MAX_TEMP                  = _UxGT("最高溫度");     // "Max Temp"
455
   LSTR MSG_INFO_PSU                       = _UxGT("電源供應");     // "Power Supply"
447
   LSTR MSG_INFO_PSU                       = _UxGT("電源供應");     // "Power Supply"
456
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("驅動力度");     // "Drive Strength"
448
   LSTR MSG_DRIVE_STRENGTH                 = _UxGT("驅動力度");     // "Drive Strength"
457
-  LSTR MSG_DAC_PERCENT_A                  = STR_A _UxGT(" 驅動 %");    // X Driver %
458
-  LSTR MSG_DAC_PERCENT_B                  = STR_B _UxGT(" 驅動 %");    // Y Driver %
459
-  LSTR MSG_DAC_PERCENT_C                  = STR_C _UxGT(" 驅動 %");    // Z Driver %
460
-  LSTR MSG_DAC_PERCENT_I                  = STR_I _UxGT(" 驅動 %");    // I Driver %
461
-  LSTR MSG_DAC_PERCENT_J                  = STR_J _UxGT(" 驅動 %");    // J Driver %
462
-  LSTR MSG_DAC_PERCENT_K                  = STR_K _UxGT(" 驅動 %");    // K Driver %
463
-  LSTR MSG_DAC_PERCENT_E                  = _UxGT("E 驅動 %");    //E Driver %
449
+  LSTR MSG_DAC_PERCENT_N                  = _UxGT("@ 驅動 %");    //E Driver %
464
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC連接錯誤");   // "TMC CONNECTION ERROR"
450
   LSTR MSG_ERROR_TMC                      = _UxGT("TMC連接錯誤");   // "TMC CONNECTION ERROR"
465
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("保存驅動設置");     // "DAC EEPROM Write"
451
   LSTR MSG_DAC_EEPROM_WRITE               = _UxGT("保存驅動設置");     // "DAC EEPROM Write"
466
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("更換絲料");   // "FILAMENT CHANGE"
452
   LSTR MSG_FILAMENT_CHANGE_HEADER         = _UxGT("更換絲料");   // "FILAMENT CHANGE"

+ 11
- 8
Marlin/src/lcd/lcdprint.cpp View File

32
 #include "lcdprint.h"
32
 #include "lcdprint.h"
33
 
33
 
34
 /**
34
 /**
35
- * lcd_put_u8str_ind_P
35
+ * lcd_put_u8str_P
36
  *
36
  *
37
- * Print a string with an index substituted within it:
37
+ * Print a string with optional substitutions:
38
  *
38
  *
39
- *   $ displays the clipped C-string given by the inStr argument
39
+ *   $ displays the clipped string given by fstr or cstr
40
  *   = displays  '0'....'10' for indexes 0 - 10
40
  *   = displays  '0'....'10' for indexes 0 - 10
41
  *   ~ displays  '1'....'11' for indexes 0 - 10
41
  *   ~ displays  '1'....'11' for indexes 0 - 10
42
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
42
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
43
  *   @ displays an axis name such as XYZUVW, or E for an extruder
43
  *   @ displays an axis name such as XYZUVW, or E for an extruder
44
  */
44
  */
45
-lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const inStr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
45
+lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char *cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/, const lcd_uint_t maxlen/*=LCD_WIDTH*/) {
46
   const uint8_t prop = USE_WIDE_GLYPH ? 2 : 1;
46
   const uint8_t prop = USE_WIDE_GLYPH ? 2 : 1;
47
-  uint8_t *p = (uint8_t*)pstr;
47
+  const uint8_t *p = (uint8_t*)ptpl;
48
   int8_t n = maxlen;
48
   int8_t n = maxlen;
49
   while (n > 0) {
49
   while (n > 0) {
50
     wchar_t ch;
50
     wchar_t ch;
71
         break;
71
         break;
72
       }
72
       }
73
     }
73
     }
74
-    else if (ch == '$' && inStr) {
75
-      n -= lcd_put_u8str_max_P(inStr, n * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH);
74
+    else if (ch == '$' && fstr) {
75
+      n -= lcd_put_u8str_max_P(FTOP(fstr), n * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH);
76
+    }
77
+    else if (ch == '$' && cstr) {
78
+      n -= lcd_put_u8str_max(cstr, n * (MENU_FONT_WIDTH)) / (MENU_FONT_WIDTH);
76
     }
79
     }
77
     else if (ch == '@') {
80
     else if (ch == '@') {
78
       lcd_put_wchar(AXIS_CHAR(ind));
81
       lcd_put_wchar(AXIS_CHAR(ind));
90
 int calculateWidth(PGM_P const pstr) {
93
 int calculateWidth(PGM_P const pstr) {
91
   if (!USE_WIDE_GLYPH) return utf8_strlen_P(pstr) * MENU_FONT_WIDTH;
94
   if (!USE_WIDE_GLYPH) return utf8_strlen_P(pstr) * MENU_FONT_WIDTH;
92
   const uint8_t prop = 2;
95
   const uint8_t prop = 2;
93
-  uint8_t *p = (uint8_t*)pstr;
96
+  const uint8_t *p = (uint8_t*)pstr;
94
   int n = 0;
97
   int n = 0;
95
 
98
 
96
   do {
99
   do {

+ 109
- 25
Marlin/src/lcd/lcdprint.h View File

130
 
130
 
131
 int lcd_glyph_height();
131
 int lcd_glyph_height();
132
 
132
 
133
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length);
133
+/**
134
+ * @brief Draw a UTF-8 character
135
+ *
136
+ * @param utf8_str : the UTF-8 character
137
+ * @param max_length : the output width limit (in pixels on GLCD)
138
+ *
139
+ * @return the output width (in pixels on GLCD)
140
+ */
141
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length);
134
 
142
 
135
 /**
143
 /**
136
- * @brief Draw a UTF-8 string
144
+ * @brief Draw a SRAM UTF-8 string
137
  *
145
  *
138
  * @param utf8_str : the UTF-8 string
146
  * @param utf8_str : the UTF-8 string
139
- * @param max_length : the pixel length of the string allowed (or number of slots in HD44780)
140
- *
141
- * @return the pixel width
147
+ * @param max_length : the output width limit (in pixels on GLCD)
142
  *
148
  *
143
- * Draw a UTF-8 string
149
+ * @return the output width (in pixels on GLCD)
144
  */
150
  */
145
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length);
151
+int lcd_put_u8str_max(const char *utf8_str, const pixel_len_t max_length);
146
 
152
 
147
 /**
153
 /**
148
- * Set the print baseline position
154
+ * Change the print cursor position
149
  */
155
  */
150
 void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row);
156
 void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row);
151
 
157
 
152
 /**
158
 /**
153
  * @brief Draw a ROM UTF-8 string
159
  * @brief Draw a ROM UTF-8 string
154
  *
160
  *
155
- * @param utf8_pstr : the ROM UTF-8 string
156
- * @param max_length : the pixel length of the string allowed (or number of slots in HD44780)
161
+ * @param pstr : the ROM UTF-8 string
162
+ * @param max_length : the output width limit (in pixels on GLCD)
157
  *
163
  *
158
- * @return the pixel width
159
- *
160
- * Draw a ROM UTF-8 string
164
+ * @return the output width (in pixels on GLCD)
161
  */
165
  */
162
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length);
163
-inline int lcd_put_u8str_max_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P utf8_pstr, pixel_len_t max_length) {
166
+int lcd_put_u8str_max_P(PGM_P pstr, const pixel_len_t max_length);
167
+inline int lcd_put_u8str_max_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P pstr, const pixel_len_t max_length) {
164
   lcd_moveto(col, row);
168
   lcd_moveto(col, row);
165
-  return lcd_put_u8str_max_P(utf8_pstr, max_length);
169
+  return lcd_put_u8str_max_P(pstr, max_length);
166
 }
170
 }
167
-inline int lcd_put_u8str_max(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const utf8_fstr, pixel_len_t max_length) {
168
-  return lcd_put_u8str_max_P(col, row, FTOP(utf8_fstr), max_length);
171
+inline int lcd_put_u8str_max(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const fstr, const pixel_len_t max_length) {
172
+  return lcd_put_u8str_max_P(col, row, FTOP(fstr), max_length);
169
 }
173
 }
170
 
174
 
175
+/**
176
+ * @brief Draw an integer, left-justified
177
+ *
178
+ * @param i : the integer
179
+ */
171
 void lcd_put_int(const int i);
180
 void lcd_put_int(const int i);
172
 inline void lcd_put_int(const lcd_uint_t col, const lcd_uint_t row, const int i) {
181
 inline void lcd_put_int(const lcd_uint_t col, const lcd_uint_t row, const int i) {
173
   lcd_moveto(col, row);
182
   lcd_moveto(col, row);
174
   lcd_put_int(i);
183
   lcd_put_int(i);
175
 }
184
 }
176
 
185
 
186
+/**
187
+ * @brief Draw a ROM UTF-8 string
188
+ *
189
+ * @param i : the integer
190
+ */
177
 inline int lcd_put_u8str_P(PGM_P const pstr) { return lcd_put_u8str_max_P(pstr, PIXEL_LEN_NOLIMIT); }
191
 inline int lcd_put_u8str_P(PGM_P const pstr) { return lcd_put_u8str_max_P(pstr, PIXEL_LEN_NOLIMIT); }
178
 inline int lcd_put_u8str_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const pstr) {
192
 inline int lcd_put_u8str_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const pstr) {
179
   lcd_moveto(col, row);
193
   lcd_moveto(col, row);
180
   return lcd_put_u8str_P(pstr);
194
   return lcd_put_u8str_P(pstr);
181
 }
195
 }
182
 
196
 
197
+/**
198
+ * @brief Draw a ROM UTF-8 F-string
199
+ *
200
+ * @param fstr The F-string pointer
201
+ * @return the output width (in pixels on GLCD)
202
+ */
183
 inline int lcd_put_u8str(FSTR_P const fstr) { return lcd_put_u8str_P(FTOP(fstr)); }
203
 inline int lcd_put_u8str(FSTR_P const fstr) { return lcd_put_u8str_P(FTOP(fstr)); }
184
 inline int lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const fstr) {
204
 inline int lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const fstr) {
185
   return lcd_put_u8str_P(col, row, FTOP(fstr));
205
   return lcd_put_u8str_P(col, row, FTOP(fstr));
186
 }
206
 }
187
 
207
 
188
-lcd_uint_t lcd_put_u8str_ind_P(PGM_P const pstr, const int8_t ind, PGM_P const inStr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH);
189
-inline lcd_uint_t lcd_put_u8str_ind_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const pstr, const int8_t ind, PGM_P const inStr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
208
+/**
209
+ * @brief Draw a string with optional substitution
210
+ * @details Print a string with optional substitutions:
211
+ *   $ displays the clipped string given by fstr or cstr
212
+ *   = displays  '0'....'10' for indexes 0 - 10
213
+ *   ~ displays  '1'....'11' for indexes 0 - 10
214
+ *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
215
+ *   @ displays an axis name such as XYZUVW, or E for an extruder
216
+ *
217
+ * @param ptpl A ROM string (template)
218
+ * @param ind An index value to use for = ~ * substitution
219
+ * @param cstr An SRAM C-string to use for $ substitution
220
+ * @param fstr A ROM F-string to use for $ substitution
221
+ * @param maxlen The maximum size of the string (in pixels on GLCD)
222
+ * @return the output width (in pixels on GLCD)
223
+ */
224
+lcd_uint_t lcd_put_u8str_P(PGM_P const ptpl, const int8_t ind, const char *cstr=nullptr, FSTR_P const fstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH);
225
+inline lcd_uint_t lcd_put_u8str_P(const lcd_uint_t col, const lcd_uint_t row, PGM_P const ptpl, const int8_t ind, const char *cstr=nullptr, FSTR_P const fstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
190
   lcd_moveto(col, row);
226
   lcd_moveto(col, row);
191
-  return lcd_put_u8str_ind_P(pstr, ind, inStr, maxlen);
227
+  return lcd_put_u8str_P(ptpl, ind, cstr, fstr, maxlen);
192
 }
228
 }
193
-inline lcd_uint_t lcd_put_u8str_ind(FSTR_P const fstr, const int8_t ind, FSTR_P const inFstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
194
-  return lcd_put_u8str_ind_P(FTOP(fstr), ind, FTOP(inFstr), maxlen);
229
+/**
230
+ * @brief Draw a ROM UTF-8 F-string with optional substitution
231
+ * @details (See above)
232
+ *
233
+ * @param ftpl A ROM F-string (template)
234
+ * @param ind An index value to use for = ~ * substitution
235
+ * @param cstr An SRAM C-string to use for $ substitution
236
+ * @param fstr A ROM F-string to use for $ substitution
237
+ * @param maxlen The maximum size of the string (in pixels on GLCD)
238
+ * @return the output width (in pixels on GLCD)
239
+ */
240
+inline lcd_uint_t lcd_put_u8str(FSTR_P const ftpl, const int8_t ind, const char *cstr=nullptr, FSTR_P const fstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
241
+  return lcd_put_u8str_P(FTOP(ftpl), ind, cstr, fstr, maxlen);
195
 }
242
 }
196
-inline lcd_uint_t lcd_put_u8str_ind(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const fstr, const int8_t ind, FSTR_P const inFstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
197
-  return lcd_put_u8str_ind_P(col, row, FTOP(fstr), ind, FTOP(inFstr), maxlen);
243
+/**
244
+ * @param col
245
+ * @param row
246
+ */
247
+inline lcd_uint_t lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, FSTR_P const ftpl, const int8_t ind, const char *cstr=nullptr, FSTR_P const fstr=nullptr, const lcd_uint_t maxlen=LCD_WIDTH) {
248
+  return lcd_put_u8str_P(col, row, FTOP(ftpl), ind, cstr, fstr, maxlen);
198
 }
249
 }
199
 
250
 
251
+/**
252
+ * @brief Draw a SRAM string with no width limit
253
+ *
254
+ * @param str The UTF-8 string
255
+ * @return the output width (in pixels on GLCD)
256
+ */
200
 inline int lcd_put_u8str(const char * const str) { return lcd_put_u8str_max(str, PIXEL_LEN_NOLIMIT); }
257
 inline int lcd_put_u8str(const char * const str) { return lcd_put_u8str_max(str, PIXEL_LEN_NOLIMIT); }
258
+/**
259
+ * @param col
260
+ * @param row
261
+ */
201
 inline int lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, const char * const str) {
262
 inline int lcd_put_u8str(const lcd_uint_t col, const lcd_uint_t row, const char * const str) {
202
   lcd_moveto(col, row);
263
   lcd_moveto(col, row);
203
   return lcd_put_u8str(str);
264
   return lcd_put_u8str(str);
204
 }
265
 }
205
 
266
 
267
+/**
268
+ * @brief Draw a UTF-8 character with no width limit
269
+ *
270
+ * @param c The wchar to draw
271
+ * @return the output width (in pixels on GLCD)
272
+ */
206
 inline int lcd_put_wchar(const wchar_t c) { return lcd_put_wchar_max(c, PIXEL_LEN_NOLIMIT); }
273
 inline int lcd_put_wchar(const wchar_t c) { return lcd_put_wchar_max(c, PIXEL_LEN_NOLIMIT); }
274
+/**
275
+ * @param col
276
+ * @param row
277
+ */
207
 inline int lcd_put_wchar(const lcd_uint_t col, const lcd_uint_t row, const wchar_t c) {
278
 inline int lcd_put_wchar(const lcd_uint_t col, const lcd_uint_t row, const wchar_t c) {
208
   lcd_moveto(col, row);
279
   lcd_moveto(col, row);
209
   return lcd_put_wchar(c);
280
   return lcd_put_wchar(c);
210
 }
281
 }
211
 
282
 
283
+/**
284
+ * @brief Calculate the width of a ROM UTF-8 string (in pixels on GLCD)
285
+ *
286
+ * @param pstr The ROM-based UTF-8 string
287
+ * @return the string width (in pixels on GLCD)
288
+ */
212
 int calculateWidth(PGM_P const pstr);
289
 int calculateWidth(PGM_P const pstr);
290
+/**
291
+ * @brief Calculate the width of a ROM UTF-8 string (in pixels on GLCD)
292
+ *
293
+ * @param pstr The ROM-based UTF-8 string
294
+ * @return the string width (in pixels on GLCD)
295
+ */
296
+inline int calculateWidth(FSTR_P const fstr) { return calculateWidth(FTOP(fstr)); }

+ 3
- 2
Marlin/src/lcd/marlinui.cpp View File

416
           SETCURSOR(0, row);              // Simulate carriage return
416
           SETCURSOR(0, row);              // Simulate carriage return
417
         };
417
         };
418
 
418
 
419
-        uint8_t *p = (uint8_t*)string;
419
+        const uint8_t *p = (uint8_t*)string;
420
         wchar_t ch;
420
         wchar_t ch;
421
         if (wordwrap) {
421
         if (wordwrap) {
422
-          uint8_t *wrd = nullptr, c = 0;
422
+          const uint8_t *wrd = nullptr;
423
+          uint8_t c = 0;
423
           // find the end of the part
424
           // find the end of the part
424
           for (;;) {
425
           for (;;) {
425
             if (!wrd) wrd = p;            // Get word start /before/ advancing
426
             if (!wrd) wrd = p;            // Get word start /before/ advancing

+ 4
- 3
Marlin/src/lcd/menu/menu.cpp View File

68
 menuPosition screen_history[6];
68
 menuPosition screen_history[6];
69
 uint8_t screen_history_depth = 0;
69
 uint8_t screen_history_depth = 0;
70
 
70
 
71
-int8_t MenuItemBase::itemIndex;   // Index number for draw and action
72
-FSTR_P MenuItemBase::itemString;  // A string for substitution
73
-chimera_t editable;               // Value Editing
71
+int8_t MenuItemBase::itemIndex;         // Index number for draw and action
72
+FSTR_P MenuItemBase::itemStringF;       // A string for substitution
73
+const char *MenuItemBase::itemStringC;
74
+chimera_t editable;                     // Value Editing
74
 
75
 
75
 // Menu Edit Items
76
 // Menu Edit Items
76
 FSTR_P       MenuEditItemBase::editLabel;
77
 FSTR_P       MenuEditItemBase::editLabel;

+ 12
- 10
Marlin/src/lcd/menu/menu.h View File

53
     // Index to interject in the item label and/or for use by its action.
53
     // Index to interject in the item label and/or for use by its action.
54
     static int8_t itemIndex;
54
     static int8_t itemIndex;
55
 
55
 
56
-    // An optional pointer for use in display or by the action
57
-    static FSTR_P itemString;
56
+    // Optional pointers for use in display or by the action
57
+    static FSTR_P itemStringF;
58
+    static const char* itemStringC;
58
 
59
 
59
-    // Store the index of the item ahead of use by indexed items
60
-    FORCE_INLINE static void init(const int8_t ind=0, FSTR_P const fstr=nullptr) { itemIndex = ind; itemString = fstr; }
60
+    // Store an index and string for later substitution
61
+    FORCE_INLINE static void init(const int8_t ind=0, FSTR_P const fstr=nullptr) { itemIndex = ind; itemStringF = fstr; itemStringC = nullptr; }
62
+    FORCE_INLINE static void init(const int8_t ind, const char * const cstr) { itemIndex = ind; itemStringC = cstr; itemStringF = nullptr; }
61
 
63
 
62
     // Implementation-specific:
64
     // Implementation-specific:
63
     // Draw an item either selected (pre_char) or not (space) with post_char
65
     // Draw an item either selected (pre_char) or not (space) with post_char
64
-    // Menus may set up itemIndex, itemString and pass them to string-building or string-emitting functions
66
+    // Menus may set up itemIndex, itemStringC/F and pass them to string-building or string-emitting functions
65
     static void _draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char);
67
     static void _draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char);
66
 
68
 
67
     // Draw an item either selected ('>') or not (space) with post_char
69
     // Draw an item either selected ('>') or not (space) with post_char
90
 // YESNO_ITEM(LABEL,FY,FN,...)
92
 // YESNO_ITEM(LABEL,FY,FN,...)
91
 class MenuItem_confirm : public MenuItemBase {
93
 class MenuItem_confirm : public MenuItemBase {
92
   public:
94
   public:
93
-    FORCE_INLINE static void draw(const bool sel, const uint8_t row, FSTR_P const fstr, ...) {
94
-      _draw(sel, row, fstr, '>', LCD_STR_ARROW_RIGHT[0]);
95
+    FORCE_INLINE static void draw(const bool sel, const uint8_t row, FSTR_P const ftpl, ...) {
96
+      _draw(sel, row, ftpl, '>', LCD_STR_ARROW_RIGHT[0]);
95
     }
97
     }
96
     // Implemented for HD44780 and DOGM
98
     // Implemented for HD44780 and DOGM
97
     // Draw the prompt, buttons, and state
99
     // Draw the prompt, buttons, and state
170
   public:
172
   public:
171
     // Implementation-specific:
173
     // Implementation-specific:
172
     // Draw the current item at specified row with edit data
174
     // Draw the current item at specified row with edit data
173
-    static void draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm=false);
175
+    static void draw(const bool sel, const uint8_t row, FSTR_P const ftpl, const char * const inStr, const bool pgm=false);
174
 
176
 
175
-    static void draw(const bool sel, const uint8_t row, FSTR_P const fstr, FSTR_P const inStr) {
176
-      draw(sel, row, fstr, FTOP(inStr), true);
177
+    static void draw(const bool sel, const uint8_t row, FSTR_P const ftpl, FSTR_P const fstr) {
178
+      draw(sel, row, ftpl, FTOP(fstr), true);
177
     }
179
     }
178
 
180
 
179
     // Implementation-specific:
181
     // Implementation-specific:

+ 20
- 28
Marlin/src/lcd/menu/menu_advanced.cpp View File

68
     LOOP_LOGICAL_AXES(i) driverPercent[i] = stepper_dac.get_current_percent((AxisEnum)i);
68
     LOOP_LOGICAL_AXES(i) driverPercent[i] = stepper_dac.get_current_percent((AxisEnum)i);
69
     START_MENU();
69
     START_MENU();
70
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
70
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
71
-    #define EDIT_DAC_PERCENT(A) EDIT_ITEM(uint8, MSG_DAC_PERCENT_##A, &driverPercent[_AXIS(A)], 0, 100, []{ stepper_dac.set_current_percents(driverPercent); });
72
-    MAP(EDIT_DAC_PERCENT, LOGICAL_AXIS_LIST(E, A, B, C, I, J, K, U, V, W));
71
+
72
+    LOOP_LOGICAL_AXES(a)
73
+      EDIT_ITEM_N(uint8, a, MSG_DAC_PERCENT_N, &driverPercent[a], 0, 100, []{ stepper_dac.set_current_percents(driverPercent); });
74
+
73
     ACTION_ITEM(MSG_DAC_EEPROM_WRITE, stepper_dac.commit_eeprom);
75
     ACTION_ITEM(MSG_DAC_EEPROM_WRITE, stepper_dac.commit_eeprom);
74
     END_MENU();
76
     END_MENU();
75
   }
77
   }
427
     START_MENU();
429
     START_MENU();
428
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
430
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
429
 
431
 
430
-    #define EDIT_VMAX(N) EDIT_ITEM_FAST(float5, MSG_VMAX_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)]);
431
-    MAP(EDIT_VMAX, NUM_AXIS_LIST(A, B, C, I, J, K, U, V, W));
432
+    LOOP_NUM_AXES(a)
433
+      EDIT_ITEM_FAST_N(float5, a, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[a], 1, max_fr_edit_scaled[a]);
432
 
434
 
433
     #if E_STEPPERS
435
     #if E_STEPPERS
434
-      EDIT_ITEM_FAST(float5, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
436
+      EDIT_ITEM_FAST_N(float5, E_AXIS, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
435
     #endif
437
     #endif
436
     #if ENABLED(DISTINCT_E_FACTORS)
438
     #if ENABLED(DISTINCT_E_FACTORS)
437
       LOOP_L_N(n, E_STEPPERS)
439
       LOOP_L_N(n, E_STEPPERS)
515
       BACK_ITEM(MSG_ADVANCED_SETTINGS);
517
       BACK_ITEM(MSG_ADVANCED_SETTINGS);
516
 
518
 
517
       #if HAS_JUNCTION_DEVIATION
519
       #if HAS_JUNCTION_DEVIATION
518
-        #if ENABLED(LIN_ADVANCE)
519
-          EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, 0.3f, planner.recalculate_max_e_jerk);
520
-        #else
521
-          EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, 0.5f);
522
-        #endif
520
+        EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, TERN(LIN_ADVANCE, 0.3f, 0.5f)
521
+          OPTARG(LIN_ADVANCE, planner.recalculate_max_e_jerk)
522
+        );
523
       #endif
523
       #endif
524
 
524
 
525
       constexpr xyze_float_t max_jerk_edit =
525
       constexpr xyze_float_t max_jerk_edit =
532
           LOGICAL_AXIS_ARRAY_1(990)
532
           LOGICAL_AXIS_ARRAY_1(990)
533
         #endif
533
         #endif
534
       ;
534
       ;
535
-      #define EDIT_JERK(N) EDIT_ITEM_FAST(float3, MSG_V##N##_JERK, &planner.max_jerk[_AXIS(N)], 1, max_jerk_edit[_AXIS(N)])
536
-      #if ENABLED(DELTA)
537
-        #define EDIT_JERK_C() EDIT_JERK(C)
538
-      #else
539
-        #define EDIT_JERK_C() EDIT_ITEM_FAST(float52sign, MSG_VC_JERK, &planner.max_jerk.c, 0.1f, max_jerk_edit.c)
540
-      #endif
541
-      NUM_AXIS_CODE(
542
-        EDIT_JERK(A), EDIT_JERK(B), EDIT_JERK_C(),
543
-        EDIT_JERK(I), EDIT_JERK(J), EDIT_JERK(K),
544
-        EDIT_JERK(U), EDIT_JERK(V), EDIT_JERK(W)
545
-      );
546
 
535
 
547
-      #if HAS_EXTRUDERS
548
-        EDIT_ITEM_FAST(float52sign, MSG_VE_JERK, &planner.max_jerk.e, 0.1f, max_jerk_edit.e);
549
-      #endif
536
+      LOOP_LOGICAL_AXES(a) {
537
+        if (a == C_AXIS || TERN0(HAS_EXTRUDERS, a == E_AXIS))
538
+          EDIT_ITEM_FAST_N(float52sign, a, MSG_VN_JERK, &planner.max_jerk[a], 0.1f, max_jerk_edit[a]);
539
+        else
540
+          EDIT_ITEM_FAST_N(float3, a, MSG_VN_JERK, &planner.max_jerk[a], 1.0f, max_jerk_edit[a]);
541
+      }
550
 
542
 
551
       END_MENU();
543
       END_MENU();
552
     }
544
     }
583
   START_MENU();
575
   START_MENU();
584
   BACK_ITEM(MSG_ADVANCED_SETTINGS);
576
   BACK_ITEM(MSG_ADVANCED_SETTINGS);
585
 
577
 
586
-  #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float61, MSG_##Q##_STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, []{ planner.refresh_positioning(); });
587
-  MAP(EDIT_QSTEPS, NUM_AXIS_LIST(A, B, C, I, J, K, U, V, W));
578
+  LOOP_NUM_AXES(a)
579
+    EDIT_ITEM_FAST_N(float61, a, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[a], 5, 9999, []{ planner.refresh_positioning(); });
588
 
580
 
589
   #if ENABLED(DISTINCT_E_FACTORS)
581
   #if ENABLED(DISTINCT_E_FACTORS)
590
     LOOP_L_N(n, E_STEPPERS)
582
     LOOP_L_N(n, E_STEPPERS)
596
           planner.mm_per_step[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
588
           planner.mm_per_step[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
597
       });
589
       });
598
   #elif E_STEPPERS
590
   #elif E_STEPPERS
599
-    EDIT_ITEM_FAST(float61, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, []{ planner.refresh_positioning(); });
591
+    EDIT_ITEM_FAST_N(float61, E_AXIS, MSG_N_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, []{ planner.refresh_positioning(); });
600
   #endif
592
   #endif
601
 
593
 
602
   END_MENU();
594
   END_MENU();
622
     #endif
614
     #endif
623
 
615
 
624
     // M203 / M205 - Feedrate items
616
     // M203 / M205 - Feedrate items
625
-    SUBMENU(MSG_VELOCITY, menu_advanced_velocity);
617
+    SUBMENU(MSG_MAX_SPEED, menu_advanced_velocity);
626
 
618
 
627
     // M201 - Acceleration items
619
     // M201 - Acceleration items
628
     SUBMENU(MSG_ACCELERATION, menu_advanced_acceleration);
620
     SUBMENU(MSG_ACCELERATION, menu_advanced_acceleration);

+ 1
- 1
Marlin/src/lcd/menu/menu_backlash.cpp View File

47
 
47
 
48
   #define EDIT_BACKLASH_DISTANCE(N) do { \
48
   #define EDIT_BACKLASH_DISTANCE(N) do { \
49
     editable.decimal = backlash.get_distance_mm(_AXIS(N)); \
49
     editable.decimal = backlash.get_distance_mm(_AXIS(N)); \
50
-    EDIT_ITEM_FAST(float43, MSG_BACKLASH_##N, &editable.decimal, 0.0f, 9.9f, []{ backlash.set_distance_mm(_AXIS(N), editable.decimal); }); \
50
+    EDIT_ITEM_FAST_N(float43, _AXIS(N), MSG_BACKLASH_N, &editable.decimal, 0.0f, 9.9f, []{ backlash.set_distance_mm(_AXIS(N), editable.decimal); }); \
51
   } while (0);
51
   } while (0);
52
 
52
 
53
   if (_CAN_CALI(A)) EDIT_BACKLASH_DISTANCE(A);
53
   if (_CAN_CALI(A)) EDIT_BACKLASH_DISTANCE(A);

+ 1
- 1
Marlin/src/lcd/menu/menu_configuration.cpp View File

572
   // Preheat configurations
572
   // Preheat configurations
573
   #if HAS_PREHEAT && DISABLED(SLIM_LCD_MENUS)
573
   #if HAS_PREHEAT && DISABLED(SLIM_LCD_MENUS)
574
     LOOP_L_N(m, PREHEAT_COUNT)
574
     LOOP_L_N(m, PREHEAT_COUNT)
575
-      SUBMENU_N_S(m, ui.get_preheat_label(m), MSG_PREHEAT_M_SETTINGS, _menu_configuration_preheat_settings);
575
+      SUBMENU_N_f(m, ui.get_preheat_label(m), MSG_PREHEAT_M_SETTINGS, _menu_configuration_preheat_settings);
576
   #endif
576
   #endif
577
 
577
 
578
   #if ENABLED(SOUND_MENU_ITEM)
578
   #if ENABLED(SOUND_MENU_ITEM)

+ 10
- 10
Marlin/src/lcd/menu/menu_filament.cpp View File

95
   BACK_ITEM(MSG_BACK);
95
   BACK_ITEM(MSG_BACK);
96
   #if HAS_PREHEAT
96
   #if HAS_PREHEAT
97
     LOOP_L_N(m, PREHEAT_COUNT)
97
     LOOP_L_N(m, PREHEAT_COUNT)
98
-      ACTION_ITEM_N_S(m, ui.get_preheat_label(m), MSG_PREHEAT_M, _change_filament_with_preset);
98
+      ACTION_ITEM_N_f(m, ui.get_preheat_label(m), MSG_PREHEAT_M, _change_filament_with_preset);
99
   #endif
99
   #endif
100
   EDIT_ITEM_FAST_N(int3, extruder, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[extruder].target,
100
   EDIT_ITEM_FAST_N(int3, extruder, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[extruder].target,
101
     EXTRUDE_MINTEMP, thermalManager.hotend_max_target(extruder),
101
     EXTRUDE_MINTEMP, thermalManager.hotend_max_target(extruder),
132
 
132
 
133
     // Change filament
133
     // Change filament
134
     #if E_STEPPERS == 1
134
     #if E_STEPPERS == 1
135
-      FSTR_P const msg = GET_TEXT_F(MSG_FILAMENTCHANGE);
135
+      FSTR_P const fmsg = GET_TEXT_F(MSG_FILAMENTCHANGE);
136
       if (thermalManager.targetTooColdToExtrude(active_extruder))
136
       if (thermalManager.targetTooColdToExtrude(active_extruder))
137
-        SUBMENU_F(msg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0); });
137
+        SUBMENU_F(fmsg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0); });
138
       else
138
       else
139
-        GCODES_ITEM_F(msg, F("M600 B0"));
139
+        GCODES_ITEM_F(fmsg, F("M600 B0"));
140
     #else
140
     #else
141
-      FSTR_P const msg = GET_TEXT_F(MSG_FILAMENTCHANGE_E);
141
+      FSTR_P const fmsg = GET_TEXT_F(MSG_FILAMENTCHANGE_E);
142
       LOOP_L_N(s, E_STEPPERS) {
142
       LOOP_L_N(s, E_STEPPERS) {
143
         if (thermalManager.targetTooColdToExtrude(s))
143
         if (thermalManager.targetTooColdToExtrude(s))
144
-          SUBMENU_N_F(s, msg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, MenuItemBase::itemIndex); });
144
+          SUBMENU_N_F(s, fmsg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, MenuItemBase::itemIndex); });
145
         else {
145
         else {
146
-          ACTION_ITEM_N_F(s, msg, []{
146
+          ACTION_ITEM_N_F(s, fmsg, []{
147
             PGM_P const cmdpstr = PSTR("M600 B0 T%i");
147
             PGM_P const cmdpstr = PSTR("M600 B0 T%i");
148
             char cmd[strlen_P(cmdpstr) + 3 + 1];
148
             char cmd[strlen_P(cmdpstr) + 3 + 1];
149
             sprintf_P(cmd, cmdpstr, int(MenuItemBase::itemIndex));
149
             sprintf_P(cmd, cmdpstr, int(MenuItemBase::itemIndex));
271
 //
271
 //
272
 // ADVANCED_PAUSE_FEATURE message screens
272
 // ADVANCED_PAUSE_FEATURE message screens
273
 //
273
 //
274
-// Warning: msg must have three null bytes to delimit lines!
274
+// Warning: fmsg must have three null bytes to delimit lines!
275
 //
275
 //
276
-void _lcd_pause_message(FSTR_P const msg) {
277
-  PGM_P const msg1 = FTOP(msg);
276
+void _lcd_pause_message(FSTR_P const fmsg) {
277
+  PGM_P const msg1 = FTOP(fmsg);
278
   PGM_P const msg2 = msg1 + strlen_P(msg1) + 1;
278
   PGM_P const msg2 = msg1 + strlen_P(msg1) + 1;
279
   PGM_P const msg3 = msg2 + strlen_P(msg2) + 1;
279
   PGM_P const msg3 = msg2 + strlen_P(msg2) + 1;
280
   const bool has2 = msg2[0], has3 = msg3[0],
280
   const bool has2 = msg2[0], has3 = msg3[0],

+ 71
- 9
Marlin/src/lcd/menu/menu_item.h View File

268
   #define _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER)
268
   #define _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER)
269
 #endif
269
 #endif
270
 
270
 
271
-#define _MENU_INNER_P(TYPE, USE_MULTIPLIER, FLABEL, V...) do { \
271
+#define _MENU_INNER_F(TYPE, USE_MULTIPLIER, FLABEL, V...) do { \
272
   FSTR_P const flabel = FLABEL;                                \
272
   FSTR_P const flabel = FLABEL;                                \
273
   if (encoderLine == _thisItemNr && ui.use_click()) {          \
273
   if (encoderLine == _thisItemNr && ui.use_click()) {          \
274
     _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER);               \
274
     _MENU_ITEM_MULTIPLIER_CHECK(USE_MULTIPLIER);               \
280
       (encoderLine == _thisItemNr, _lcdLineNr, flabel, ##V);   \
280
       (encoderLine == _thisItemNr, _lcdLineNr, flabel, ##V);   \
281
 }while(0)
281
 }while(0)
282
 
282
 
283
+// Item with optional data
283
 #define _MENU_ITEM_F(TYPE, V...) do { \
284
 #define _MENU_ITEM_F(TYPE, V...) do { \
284
   if (_menuLineNr == _thisItemNr) {   \
285
   if (_menuLineNr == _thisItemNr) {   \
285
     _skipStatic = false;              \
286
     _skipStatic = false;              \
286
-    _MENU_INNER_P(TYPE, ##V);         \
287
+    _MENU_INNER_F(TYPE, ##V);         \
287
   }                                   \
288
   }                                   \
288
   NEXT_ITEM();                        \
289
   NEXT_ITEM();                        \
289
 }while(0)
290
 }while(0)
290
 
291
 
291
-// Indexed items set a global index value and optional data
292
+// Item with index value, C-string, and optional data
292
 #define _MENU_ITEM_N_S_F(TYPE, N, S, V...) do{ \
293
 #define _MENU_ITEM_N_S_F(TYPE, N, S, V...) do{ \
293
   if (_menuLineNr == _thisItemNr) {            \
294
   if (_menuLineNr == _thisItemNr) {            \
294
     _skipStatic = false;                       \
295
     _skipStatic = false;                       \
295
     MenuItemBase::init(N, S);                  \
296
     MenuItemBase::init(N, S);                  \
296
-    _MENU_INNER_P(TYPE, ##V);                  \
297
+    _MENU_INNER_F(TYPE, ##V);                  \
297
   }                                            \
298
   }                                            \
298
   NEXT_ITEM();                                 \
299
   NEXT_ITEM();                                 \
299
 }while(0)
300
 }while(0)
300
 
301
 
301
-// Indexed items set a global index value
302
+// Item with index value and F-string
303
+#define _MENU_ITEM_N_f_F(TYPE, N, f, V...) do{ \
304
+  if (_menuLineNr == _thisItemNr) {            \
305
+    _skipStatic = false;                       \
306
+    MenuItemBase::init(N, f);                  \
307
+    _MENU_INNER_F(TYPE, ##V);                  \
308
+  }                                            \
309
+  NEXT_ITEM();                                 \
310
+}while(0)
311
+
312
+// Item with index value
302
 #define _MENU_ITEM_N_F(TYPE, N, V...) do{ \
313
 #define _MENU_ITEM_N_F(TYPE, N, V...) do{ \
303
   if (_menuLineNr == _thisItemNr) {       \
314
   if (_menuLineNr == _thisItemNr) {       \
304
     _skipStatic = false;                  \
315
     _skipStatic = false;                  \
305
-    MenuItemBase::itemIndex = N;          \
306
-    _MENU_INNER_P(TYPE, ##V);             \
316
+    MenuItemBase::init(N);                \
317
+    _MENU_INNER_F(TYPE, ##V);             \
307
   }                                       \
318
   }                                       \
308
   NEXT_ITEM();                            \
319
   NEXT_ITEM();                            \
309
 }while(0)
320
 }while(0)
312
 #define _MENU_ITEM_S_F(TYPE, S, V...) do{ \
323
 #define _MENU_ITEM_S_F(TYPE, S, V...) do{ \
313
   if (_menuLineNr == _thisItemNr) {       \
324
   if (_menuLineNr == _thisItemNr) {       \
314
     _skipStatic = false;                  \
325
     _skipStatic = false;                  \
315
-    MenuItemBase::itemString = S;         \
316
-    _MENU_INNER_P(TYPE, ##V);             \
326
+    MenuItemBase::init(0, S);             \
327
+    _MENU_INNER_F(TYPE, ##V);             \
328
+  }                                       \
329
+  NEXT_ITEM();                            \
330
+}while(0)
331
+
332
+// Items with a unique F-string
333
+#define _MENU_ITEM_f_F(TYPE, f, V...) do{ \
334
+  if (_menuLineNr == _thisItemNr) {       \
335
+    _skipStatic = false;                  \
336
+    MenuItemBase::init(0, f);             \
337
+    _MENU_INNER_F(TYPE, ##V);             \
317
   }                                       \
338
   }                                       \
318
   NEXT_ITEM();                            \
339
   NEXT_ITEM();                            \
319
 }while(0)
340
 }while(0)
361
 #define STATIC_ITEM(LABEL, V...)                       STATIC_ITEM_F(GET_TEXT_F(LABEL), ##V)
382
 #define STATIC_ITEM(LABEL, V...)                       STATIC_ITEM_F(GET_TEXT_F(LABEL), ##V)
362
 #define STATIC_ITEM_N(LABEL, N, V...)                STATIC_ITEM_N_F(GET_TEXT_F(LABEL), N, ##V)
383
 #define STATIC_ITEM_N(LABEL, N, V...)                STATIC_ITEM_N_F(GET_TEXT_F(LABEL), N, ##V)
363
 
384
 
385
+// Menu item with index and composed C-string substitution
364
 #define MENU_ITEM_N_S_F(TYPE, N, S, FLABEL, V...)   _MENU_ITEM_N_S_F(TYPE, N, S, false, FLABEL, ##V)
386
 #define MENU_ITEM_N_S_F(TYPE, N, S, FLABEL, V...)   _MENU_ITEM_N_S_F(TYPE, N, S, false, FLABEL, ##V)
365
 #define MENU_ITEM_N_S(TYPE, N, S, LABEL, V...)       MENU_ITEM_N_S_F(TYPE, N, S, GET_TEXT_F(LABEL), ##V)
387
 #define MENU_ITEM_N_S(TYPE, N, S, LABEL, V...)       MENU_ITEM_N_S_F(TYPE, N, S, GET_TEXT_F(LABEL), ##V)
388
+
389
+// Menu item with composed C-string substitution
366
 #define MENU_ITEM_S_F(TYPE, S, FLABEL, V...)          _MENU_ITEM_S_F(TYPE, S, false, FLABEL, ##V)
390
 #define MENU_ITEM_S_F(TYPE, S, FLABEL, V...)          _MENU_ITEM_S_F(TYPE, S, false, FLABEL, ##V)
367
 #define MENU_ITEM_S(TYPE, S, LABEL, V...)              MENU_ITEM_S_F(TYPE, S, GET_TEXT_F(LABEL), ##V)
391
 #define MENU_ITEM_S(TYPE, S, LABEL, V...)              MENU_ITEM_S_F(TYPE, S, GET_TEXT_F(LABEL), ##V)
392
+
393
+// Menu item substitution, indexed
368
 #define MENU_ITEM_N_F(TYPE, N, FLABEL, V...)          _MENU_ITEM_N_F(TYPE, N, false, FLABEL, ##V)
394
 #define MENU_ITEM_N_F(TYPE, N, FLABEL, V...)          _MENU_ITEM_N_F(TYPE, N, false, FLABEL, ##V)
369
 #define MENU_ITEM_N(TYPE, N, LABEL, V...)              MENU_ITEM_N_F(TYPE, N, GET_TEXT_F(LABEL), ##V)
395
 #define MENU_ITEM_N(TYPE, N, LABEL, V...)              MENU_ITEM_N_F(TYPE, N, GET_TEXT_F(LABEL), ##V)
396
+
397
+// Basic menu items, no substitution
370
 #define MENU_ITEM_F(TYPE, FLABEL, V...)                 _MENU_ITEM_F(TYPE, false, FLABEL, ##V)
398
 #define MENU_ITEM_F(TYPE, FLABEL, V...)                 _MENU_ITEM_F(TYPE, false, FLABEL, ##V)
371
 #define MENU_ITEM(TYPE, LABEL, V...)                     MENU_ITEM_F(TYPE, GET_TEXT_F(LABEL), ##V)
399
 #define MENU_ITEM(TYPE, LABEL, V...)                     MENU_ITEM_F(TYPE, GET_TEXT_F(LABEL), ##V)
372
 
400
 
401
+// Predefined menu item types //
402
+
373
 #define BACK_ITEM_F(FLABEL)                              MENU_ITEM_F(back, FLABEL)
403
 #define BACK_ITEM_F(FLABEL)                              MENU_ITEM_F(back, FLABEL)
374
 #define BACK_ITEM(LABEL)                                   MENU_ITEM(back, LABEL)
404
 #define BACK_ITEM(LABEL)                                   MENU_ITEM(back, LABEL)
375
 
405
 
418
 #define EDIT_ITEM_FAST_F(TYPE, FLABEL, V...)                _MENU_ITEM_F(TYPE, true, FLABEL, ##V)
448
 #define EDIT_ITEM_FAST_F(TYPE, FLABEL, V...)                _MENU_ITEM_F(TYPE, true, FLABEL, ##V)
419
 #define EDIT_ITEM_FAST(TYPE, LABEL, V...)               EDIT_ITEM_FAST_F(TYPE, GET_TEXT_F(LABEL), ##V)
449
 #define EDIT_ITEM_FAST(TYPE, LABEL, V...)               EDIT_ITEM_FAST_F(TYPE, GET_TEXT_F(LABEL), ##V)
420
 
450
 
451
+// F-string substitution instead of C-string //
452
+
453
+#define MENU_ITEM_N_f_F(TYPE, N, f, FLABEL, V...)   _MENU_ITEM_N_f_F(TYPE, N, f, false, FLABEL, ##V)
454
+#define MENU_ITEM_N_f(TYPE, N, f, LABEL, V...)       MENU_ITEM_N_f_F(TYPE, N, f, GET_TEXT_F(LABEL), ##V)
455
+#define MENU_ITEM_f_F(TYPE, f, FLABEL, V...)          _MENU_ITEM_f_F(TYPE, f, false, FLABEL, ##V)
456
+#define MENU_ITEM_f(TYPE, f, LABEL, V...)              MENU_ITEM_f_F(TYPE, f, GET_TEXT_F(LABEL), ##V)
457
+
458
+#define ACTION_ITEM_N_f_F(N, f, FLABEL, ACTION)      MENU_ITEM_N_f_F(function, N, f, FLABEL, ACTION)
459
+#define ACTION_ITEM_N_f(N, f, LABEL, ACTION)       ACTION_ITEM_N_f_F(N, f, GET_TEXT_F(LABEL), ACTION)
460
+#define ACTION_ITEM_f_F(f, FLABEL, ACTION)             MENU_ITEM_f_F(function, f, FLABEL, ACTION)
461
+#define ACTION_ITEM_f(f, LABEL, ACTION)              ACTION_ITEM_f_F(f, GET_TEXT_F(LABEL), ACTION)
462
+
463
+#define GCODES_ITEM_N_f_F(N, f, FLABEL, GCODES)      MENU_ITEM_N_f_F(gcode, N, f, FLABEL, GCODES)
464
+#define GCODES_ITEM_N_f(N, f, LABEL, GCODES)       GCODES_ITEM_N_f_F(N, f, GET_TEXT_F(LABEL), GCODES)
465
+#define GCODES_ITEM_f_F(f, FLABEL, GCODES)             MENU_ITEM_f_F(gcode, f, FLABEL, GCODES)
466
+#define GCODES_ITEM_f(f, LABEL, GCODES)              GCODES_ITEM_f_F(f, GET_TEXT_F(LABEL), GCODES)
467
+
468
+#define SUBMENU_N_f_F(N, f, FLABEL, DEST)            MENU_ITEM_N_f_F(submenu, N, f, FLABEL, DEST)
469
+#define SUBMENU_N_f(N, f, LABEL, DEST)                 SUBMENU_N_f_F(N, f, GET_TEXT_F(LABEL), DEST)
470
+#define SUBMENU_f_F(f, FLABEL, DEST)                   MENU_ITEM_f_F(submenu, f, FLABEL, DEST)
471
+#define SUBMENU_f(f, LABEL, DEST)                        SUBMENU_f_F(f, GET_TEXT_F(LABEL), DEST)
472
+
473
+#define EDIT_ITEM_N_f_F(TYPE, N, f, FLABEL, V...)    MENU_ITEM_N_f_F(TYPE, N, f, FLABEL, ##V)
474
+#define EDIT_ITEM_N_f(TYPE, N, f, LABEL, V...)       EDIT_ITEM_N_f_F(TYPE, N, f, GET_TEXT_F(LABEL), ##V)
475
+#define EDIT_ITEM_f_F(TYPE, f, FLABEL, V...)           MENU_ITEM_f_F(TYPE, f, FLABEL, ##V)
476
+#define EDIT_ITEM_f(TYPE, f, LABEL, V...)              EDIT_ITEM_f_F(TYPE, f, GET_TEXT_F(LABEL), ##V)
477
+
478
+#define EDIT_ITEM_FAST_N_f_F(TYPE, N, f, FLABEL, V...)  _MENU_ITEM_N_f_F(TYPE, N, f, true, FLABEL, ##V)
479
+#define EDIT_ITEM_FAST_N_f(TYPE, N, f, LABEL, V...) EDIT_ITEM_FAST_N_f_F(TYPE, N, f, true, GET_TEXT_F(LABEL), ##V)
480
+#define EDIT_ITEM_FAST_f_F(TYPE, f, FLABEL, V...)         _MENU_ITEM_f_F(TYPE, f, true, FLABEL, ##V)
481
+#define EDIT_ITEM_FAST_f(TYPE, f, LABEL, V...)        EDIT_ITEM_FAST_f_F(TYPE, f, GET_TEXT_F(LABEL), ##V)
482
+
421
 #define _CONFIRM_ITEM_INNER_F(FLABEL, V...) do {             \
483
 #define _CONFIRM_ITEM_INNER_F(FLABEL, V...) do {             \
422
   if (encoderLine == _thisItemNr && ui.use_click()) {        \
484
   if (encoderLine == _thisItemNr && ui.use_click()) {        \
423
     ui.push_current_screen();                                \
485
     ui.push_current_screen();                                \

+ 4
- 16
Marlin/src/lcd/menu/menu_motion.cpp View File

54
 // "Motion" > "Move Axis" submenu
54
 // "Motion" > "Move Axis" submenu
55
 //
55
 //
56
 
56
 
57
+// TODO: Use substitution here with MSG_MOVE_N
58
+
57
 static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
59
 static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
58
   if (ui.use_click()) return ui.goto_previous_screen_no_defer();
60
   if (ui.use_click()) return ui.goto_previous_screen_no_defer();
59
   if (ui.encoderPosition && !ui.manual_move.processing) {
61
   if (ui.encoderPosition && !ui.manual_move.processing) {
192
     SUBMENU(MSG_MOVE_10MM, []{ _goto_manual_move(10);    });
194
     SUBMENU(MSG_MOVE_10MM, []{ _goto_manual_move(10);    });
193
     SUBMENU(MSG_MOVE_1MM,  []{ _goto_manual_move( 1);    });
195
     SUBMENU(MSG_MOVE_1MM,  []{ _goto_manual_move( 1);    });
194
     SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move( 0.1f); });
196
     SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move( 0.1f); });
195
-    if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f) {
196
-      // Determine digits needed right of decimal
197
-      constexpr uint8_t digs = !UNEAR_ZERO((FINE_MANUAL_MOVE) * 1000 - int((FINE_MANUAL_MOVE) * 1000)) ? 4 :
198
-                               !UNEAR_ZERO((FINE_MANUAL_MOVE) *  100 - int((FINE_MANUAL_MOVE) *  100)) ? 3 : 2;
199
-      PGM_P const label = GET_TEXT(MSG_MOVE_N_MM);
200
-      char tmp[strlen_P(label) + 10 + 1], numstr[10];
201
-      sprintf_P(tmp, label, dtostrf(FINE_MANUAL_MOVE, 1, digs, numstr));
202
-      #if DISABLED(HAS_GRAPHICAL_TFT)
203
-        SUBMENU_F(FPSTR(NUL_STR), []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
204
-        MENU_ITEM_ADDON_START(0 + ENABLED(HAS_MARLINUI_HD44780));
205
-        lcd_put_u8str(tmp);
206
-        MENU_ITEM_ADDON_END();
207
-      #else
208
-        SUBMENU_F(FPSTR(tmp), []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
209
-      #endif
210
-    }
197
+    if (axis == Z_AXIS && (FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
198
+      SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move(float(FINE_MANUAL_MOVE)); });
211
   }
199
   }
212
   END_MENU();
200
   END_MENU();
213
 }
201
 }

+ 2
- 15
Marlin/src/lcd/menu/menu_probe_offset.cpp View File

68
   SUBMENU(MSG_MOVE_1MM,  []{ _goto_manual_move_z( 1);    });
68
   SUBMENU(MSG_MOVE_1MM,  []{ _goto_manual_move_z( 1);    });
69
   SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move_z( 0.1f); });
69
   SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move_z( 0.1f); });
70
 
70
 
71
-  if ((FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f) {
72
-    char tmp[20], numstr[10];
73
-    // Determine digits needed right of decimal
74
-    const uint8_t digs = !UNEAR_ZERO((FINE_MANUAL_MOVE) * 1000 - int((FINE_MANUAL_MOVE) * 1000)) ? 4 :
75
-                         !UNEAR_ZERO((FINE_MANUAL_MOVE) *  100 - int((FINE_MANUAL_MOVE) *  100)) ? 3 : 2;
76
-    sprintf_P(tmp, GET_TEXT(MSG_MOVE_N_MM), dtostrf(FINE_MANUAL_MOVE, 1, digs, numstr));
77
-    #if DISABLED(HAS_GRAPHICAL_TFT)
78
-      SUBMENU_F(FPSTR(NUL_STR), []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
79
-      MENU_ITEM_ADDON_START(0 + ENABLED(HAS_MARLINUI_HD44780));
80
-      lcd_put_u8str(tmp);
81
-      MENU_ITEM_ADDON_END();
82
-    #else
83
-      SUBMENU_F(tmp, []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
84
-    #endif
85
-  }
71
+  if ((FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f)
72
+    SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
86
 
73
 
87
   ACTION_ITEM(MSG_BUTTON_DONE, []{
74
   ACTION_ITEM(MSG_BUTTON_DONE, []{
88
     set_offset_and_go_back(calculated_z_offset);
75
     set_offset_and_go_back(calculated_z_offset);

+ 12
- 12
Marlin/src/lcd/menu/menu_temperature.cpp View File

88
 
88
 
89
     // Indexed "Preheat ABC" and "Heat Bed" items
89
     // Indexed "Preheat ABC" and "Heat Bed" items
90
     #define PREHEAT_ITEMS(M,E) do{ \
90
     #define PREHEAT_ITEMS(M,E) do{ \
91
-      ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_both(M, MenuItemBase::itemIndex); }); \
92
-      ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_END_E, []{ _preheat_end(M, MenuItemBase::itemIndex); }); \
91
+      ACTION_ITEM_N_f(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_both(M, MenuItemBase::itemIndex); }); \
92
+      ACTION_ITEM_N_f(E, ui.get_preheat_label(M), MSG_PREHEAT_M_END_E, []{ _preheat_end(M, MenuItemBase::itemIndex); }); \
93
     }while(0)
93
     }while(0)
94
 
94
 
95
   #elif HAS_MULTI_HOTEND
95
   #elif HAS_MULTI_HOTEND
96
 
96
 
97
     // No heated bed, so just indexed "Preheat ABC" items
97
     // No heated bed, so just indexed "Preheat ABC" items
98
-    #define PREHEAT_ITEMS(M,E) ACTION_ITEM_N_S(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_end(M, MenuItemBase::itemIndex); })
98
+    #define PREHEAT_ITEMS(M,E) ACTION_ITEM_N_f(E, ui.get_preheat_label(M), MSG_PREHEAT_M_H, []{ _preheat_end(M, MenuItemBase::itemIndex); })
99
 
99
 
100
   #endif
100
   #endif
101
 
101
 
112
       #if HOTENDS == 1
112
       #if HOTENDS == 1
113
 
113
 
114
         #if HAS_HEATED_BED
114
         #if HAS_HEATED_BED
115
-          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, []{ _preheat_both(editable.int8, 0); });
116
-          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_END, do_preheat_end_m);
115
+          ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M, []{ _preheat_both(editable.int8, 0); });
116
+          ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_END, do_preheat_end_m);
117
         #else
117
         #else
118
-          ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
118
+          ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
119
         #endif
119
         #endif
120
 
120
 
121
       #elif HAS_MULTI_HOTEND
121
       #elif HAS_MULTI_HOTEND
122
 
122
 
123
         HOTEND_LOOP() PREHEAT_ITEMS(editable.int8, e);
123
         HOTEND_LOOP() PREHEAT_ITEMS(editable.int8, e);
124
-        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_ALL, []() {
124
+        ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_ALL, []() {
125
           const celsius_t t = ui.material_preset[editable.int8].hotend_temp;
125
           const celsius_t t = ui.material_preset[editable.int8].hotend_temp;
126
           HOTEND_LOOP() thermalManager.setTargetHotend(t, e);
126
           HOTEND_LOOP() thermalManager.setTargetHotend(t, e);
127
           TERN(HAS_HEATED_BED, _preheat_bed(editable.int8), ui.return_to_status());
127
           TERN(HAS_HEATED_BED, _preheat_bed(editable.int8), ui.return_to_status());
130
       #endif
130
       #endif
131
 
131
 
132
       #if HAS_HEATED_BED
132
       #if HAS_HEATED_BED
133
-        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M_BEDONLY, []{ _preheat_bed(editable.int8); });
133
+        ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M_BEDONLY, []{ _preheat_bed(editable.int8); });
134
       #endif
134
       #endif
135
 
135
 
136
       END_MENU();
136
       END_MENU();
269
     LOOP_L_N(m, PREHEAT_COUNT) {
269
     LOOP_L_N(m, PREHEAT_COUNT) {
270
       editable.int8 = m;
270
       editable.int8 = m;
271
       #if HAS_MULTI_HOTEND || HAS_HEATED_BED
271
       #if HAS_MULTI_HOTEND || HAS_HEATED_BED
272
-        SUBMENU_S(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
272
+        SUBMENU_f(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
273
       #elif HAS_HOTEND
273
       #elif HAS_HOTEND
274
-        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
274
+        ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
275
       #endif
275
       #endif
276
     }
276
     }
277
   #endif
277
   #endif
296
     LOOP_L_N(m, PREHEAT_COUNT) {
296
     LOOP_L_N(m, PREHEAT_COUNT) {
297
       editable.int8 = m;
297
       editable.int8 = m;
298
       #if HAS_MULTI_HOTEND || HAS_HEATED_BED
298
       #if HAS_MULTI_HOTEND || HAS_HEATED_BED
299
-        SUBMENU_S(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
299
+        SUBMENU_f(ui.get_preheat_label(m), MSG_PREHEAT_M, menu_preheat_m);
300
       #else
300
       #else
301
-        ACTION_ITEM_S(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
301
+        ACTION_ITEM_f(ui.get_preheat_label(m), MSG_PREHEAT_M, do_preheat_end_m);
302
       #endif
302
       #endif
303
     }
303
     }
304
 
304
 

+ 5
- 3
Marlin/src/lcd/menu/menu_tune.cpp View File

50
     #include "../dogm/marlinui_DOGM.h"
50
     #include "../dogm/marlinui_DOGM.h"
51
   #endif
51
   #endif
52
 
52
 
53
+  // TODO: Replace fmsg with MSG_BABYSTEP_N and index substitution
54
+
53
   void _lcd_babystep(const AxisEnum axis, FSTR_P const fmsg) {
55
   void _lcd_babystep(const AxisEnum axis, FSTR_P const fmsg) {
54
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
56
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
55
     if (ui.encoderPosition) {
57
     if (ui.encoderPosition) {
223
   //
225
   //
224
   #if ENABLED(BABYSTEPPING)
226
   #if ENABLED(BABYSTEPPING)
225
     #if ENABLED(BABYSTEP_XY)
227
     #if ENABLED(BABYSTEP_XY)
226
-      SUBMENU(MSG_BABYSTEP_X, []{ _lcd_babystep_go(_lcd_babystep_x); });
227
-      SUBMENU(MSG_BABYSTEP_Y, []{ _lcd_babystep_go(_lcd_babystep_y); });
228
+      SUBMENU_N(X_AXIS, MSG_BABYSTEP_N, []{ _lcd_babystep_go(_lcd_babystep_x); });
229
+      SUBMENU_N(Y_AXIS, MSG_BABYSTEP_N, []{ _lcd_babystep_go(_lcd_babystep_y); });
228
     #endif
230
     #endif
229
     #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
231
     #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
230
       SUBMENU(MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
232
       SUBMENU(MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
231
     #else
233
     #else
232
-      SUBMENU(MSG_BABYSTEP_Z, lcd_babystep_z);
234
+      SUBMENU_N(Z_AXIS, MSG_BABYSTEP_N, lcd_babystep_z);
233
     #endif
235
     #endif
234
   #endif
236
   #endif
235
 
237
 

+ 3
- 3
Marlin/src/lcd/menu/menu_ubl.cpp View File

211
     #if HAS_PREHEAT
211
     #if HAS_PREHEAT
212
       #if HAS_HEATED_BED
212
       #if HAS_HEATED_BED
213
         #define VALIDATE_MESH_GCODE_ITEM(M) \
213
         #define VALIDATE_MESH_GCODE_ITEM(M) \
214
-          GCODES_ITEM_N_S(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, F("G28\nG26CPI" STRINGIFY(M)));
214
+          GCODES_ITEM_N_f(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, F("G28\nG26CPI" STRINGIFY(M)));
215
       #else
215
       #else
216
         #define VALIDATE_MESH_GCODE_ITEM(M) \
216
         #define VALIDATE_MESH_GCODE_ITEM(M) \
217
-          GCODES_ITEM_N_S(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, F("G28\nG26CPB0I" STRINGIFY(M)));
217
+          GCODES_ITEM_N_f(M, ui.get_preheat_label(M), MSG_UBL_VALIDATE_MESH_M, F("G28\nG26CPB0I" STRINGIFY(M)));
218
       #endif
218
       #endif
219
       REPEAT(PREHEAT_COUNT, VALIDATE_MESH_GCODE_ITEM)
219
       REPEAT(PREHEAT_COUNT, VALIDATE_MESH_GCODE_ITEM)
220
     #endif
220
     #endif
317
     #else
317
     #else
318
       #define PREHEAT_BED_GCODE(M) ""
318
       #define PREHEAT_BED_GCODE(M) ""
319
     #endif
319
     #endif
320
-    #define BUILD_MESH_GCODE_ITEM(M) GCODES_ITEM_S(ui.get_preheat_label(M), MSG_UBL_BUILD_MESH_M, \
320
+    #define BUILD_MESH_GCODE_ITEM(M) GCODES_ITEM_f(ui.get_preheat_label(M), MSG_UBL_BUILD_MESH_M, \
321
       F( \
321
       F( \
322
         "G28\n" \
322
         "G28\n" \
323
         PREHEAT_BED_GCODE(M) \
323
         PREHEAT_BED_GCODE(M) \

+ 1
- 10
Marlin/src/lcd/menu/menu_x_twist.cpp View File

100
   SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move_z( 0.1f); });
100
   SUBMENU(MSG_MOVE_01MM, []{ _goto_manual_move_z( 0.1f); });
101
 
101
 
102
   if ((FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f) {
102
   if ((FINE_MANUAL_MOVE) > 0.0f && (FINE_MANUAL_MOVE) < 0.1f) {
103
-    char tmp[20], numstr[10];
104
     // Determine digits needed right of decimal
103
     // Determine digits needed right of decimal
105
     const uint8_t digs = !UNEAR_ZERO((FINE_MANUAL_MOVE) * 1000 - int((FINE_MANUAL_MOVE) * 1000)) ? 4 :
104
     const uint8_t digs = !UNEAR_ZERO((FINE_MANUAL_MOVE) * 1000 - int((FINE_MANUAL_MOVE) * 1000)) ? 4 :
106
                          !UNEAR_ZERO((FINE_MANUAL_MOVE) *  100 - int((FINE_MANUAL_MOVE) *  100)) ? 3 : 2;
105
                          !UNEAR_ZERO((FINE_MANUAL_MOVE) *  100 - int((FINE_MANUAL_MOVE) *  100)) ? 3 : 2;
107
-    sprintf_P(tmp, GET_TEXT(MSG_MOVE_N_MM), dtostrf(FINE_MANUAL_MOVE, 1, digs, numstr));
108
-    #if DISABLED(HAS_GRAPHICAL_TFT)
109
-      SUBMENU_F(FPSTR(NUL_STR), []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
110
-      MENU_ITEM_ADDON_START(0 + ENABLED(HAS_MARLINUI_HD44780));
111
-      lcd_put_u8str(tmp);
112
-      MENU_ITEM_ADDON_END();
113
-    #else
114
-      SUBMENU_F(FPSTR(tmp), []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
115
-    #endif
106
+    SUBMENU_f(F(STRINGIFY(FINE_MANUAL_MOVE)), MSG_MOVE_N_MM, []{ _goto_manual_move_z(float(FINE_MANUAL_MOVE)); });
116
   }
107
   }
117
 
108
 
118
   ACTION_ITEM(MSG_BUTTON_DONE, xatc_wizard_set_offset_and_go_to_next_point);
109
   ACTION_ITEM(MSG_BUTTON_DONE, xatc_wizard_set_offset_and_go_to_next_point);

+ 1
- 1
Marlin/src/lcd/tft/tft.h View File

94
     static void canvas(uint16_t x, uint16_t y, uint16_t width, uint16_t height) { queue.canvas(x, y, width, height); }
94
     static void canvas(uint16_t x, uint16_t y, uint16_t width, uint16_t height) { queue.canvas(x, y, width, height); }
95
     static void set_background(uint16_t color) { queue.set_background(color); }
95
     static void set_background(uint16_t color) { queue.set_background(color); }
96
     static void add_text(uint16_t x, uint16_t y, uint16_t color, TFT_String tft_string, uint16_t maxWidth = 0) { queue.add_text(x, y, color, tft_string.string(), maxWidth); }
96
     static void add_text(uint16_t x, uint16_t y, uint16_t color, TFT_String tft_string, uint16_t maxWidth = 0) { queue.add_text(x, y, color, tft_string.string(), maxWidth); }
97
-    static void add_text(uint16_t x, uint16_t y, uint16_t color, const char *string, uint16_t maxWidth = 0) { queue.add_text(x, y, color, (uint8_t *)string, maxWidth); }
97
+    static void add_text(uint16_t x, uint16_t y, uint16_t color, const char *string, uint16_t maxWidth = 0) { queue.add_text(x, y, color, string, maxWidth); }
98
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) { queue.add_image(x, y, image, colors); }
98
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) { queue.add_image(x, y, image, colors); }
99
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t color_main = COLOR_WHITE, uint16_t color_background = COLOR_BACKGROUND, uint16_t color_shadow = COLOR_BLACK) { queue.add_image(x, y, image, color_main,  color_background, color_shadow); }
99
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t color_main = COLOR_WHITE, uint16_t color_background = COLOR_BACKGROUND, uint16_t color_shadow = COLOR_BLACK) { queue.add_image(x, y, image, color_main,  color_background, color_shadow); }
100
     static void add_bar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { queue.add_bar(x, y, width, height, color); }
100
     static void add_bar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { queue.add_bar(x, y, width, height, color); }

+ 2
- 2
Marlin/src/lcd/tft/tft_queue.cpp View File

215
   }
215
   }
216
 }
216
 }
217
 
217
 
218
-void TFT_Queue::add_text(uint16_t x, uint16_t y, uint16_t color, uint8_t *string, uint16_t maxWidth) {
218
+void TFT_Queue::add_text(uint16_t x, uint16_t y, uint16_t color, const uint8_t *string, uint16_t maxWidth) {
219
   handle_queue_overflow(sizeof(parametersCanvasText_t) + maxWidth);
219
   handle_queue_overflow(sizeof(parametersCanvasText_t) + maxWidth);
220
   parametersCanvas_t *task_parameters = (parametersCanvas_t *)(((uint8_t *)last_task) + sizeof(queueTask_t));
220
   parametersCanvas_t *task_parameters = (parametersCanvas_t *)(((uint8_t *)last_task) + sizeof(queueTask_t));
221
   parametersCanvasText_t *parameters = (parametersCanvasText_t *)end_of_queue;
221
   parametersCanvasText_t *parameters = (parametersCanvasText_t *)end_of_queue;
222
   last_parameter = end_of_queue;
222
   last_parameter = end_of_queue;
223
 
223
 
224
-  uint8_t *pointer = string;
224
+  const uint8_t *pointer = string;
225
 
225
 
226
   parameters->type = CANVAS_ADD_TEXT;
226
   parameters->type = CANVAS_ADD_TEXT;
227
   parameters->x = x;
227
   parameters->x = x;

+ 4
- 1
Marlin/src/lcd/tft/tft_queue.h View File

139
     static void fill(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
139
     static void fill(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color);
140
     static void canvas(uint16_t x, uint16_t y, uint16_t width, uint16_t height);
140
     static void canvas(uint16_t x, uint16_t y, uint16_t width, uint16_t height);
141
     static void set_background(uint16_t color);
141
     static void set_background(uint16_t color);
142
-    static void add_text(uint16_t x, uint16_t y, uint16_t color, uint8_t *string, uint16_t maxWidth);
142
+    static void add_text(uint16_t x, uint16_t y, uint16_t color, const uint8_t *string, uint16_t maxWidth);
143
+    static void add_text(uint16_t x, uint16_t y, uint16_t color, const char *string, uint16_t maxWidth) {
144
+      add_text(x, y, color, (uint8_t *)string, maxWidth);
145
+    }
143
 
146
 
144
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t *colors);
147
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t *colors);
145
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t color_main, uint16_t color_background, uint16_t color_shadow);
148
     static void add_image(int16_t x, int16_t y, MarlinImage image, uint16_t color_main, uint16_t color_background, uint16_t color_shadow);

+ 19
- 19
Marlin/src/lcd/tft/tft_string.cpp View File

35
 glyph_t *TFT_String::glyphs[256];
35
 glyph_t *TFT_String::glyphs[256];
36
 font_t *TFT_String::font_header;
36
 font_t *TFT_String::font_header;
37
 
37
 
38
-uint8_t TFT_String::data[];
38
+char TFT_String::data[];
39
 uint16_t TFT_String::span;
39
 uint16_t TFT_String::span;
40
 uint8_t TFT_String::length;
40
 uint8_t TFT_String::length;
41
 
41
 
84
   length = 0;
84
   length = 0;
85
 }
85
 }
86
 
86
 
87
-uint8_t read_byte(uint8_t *byte) { return *byte; }
88
-
89
 /**
87
 /**
90
  * Add a string, applying substitutions for the following characters:
88
  * Add a string, applying substitutions for the following characters:
91
  *
89
  *
92
- *   $ displays an inserted C-string given by the inStr parameter
90
+ *   $ displays the string given by fstr or cstr
93
  *   = displays  '0'....'10' for indexes 0 - 10
91
  *   = displays  '0'....'10' for indexes 0 - 10
94
  *   ~ displays  '1'....'11' for indexes 0 - 10
92
  *   ~ displays  '1'....'11' for indexes 0 - 10
95
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
93
  *   * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL)
96
  *   @ displays an axis name such as XYZUVW, or E for an extruder
94
  *   @ displays an axis name such as XYZUVW, or E for an extruder
97
  */
95
  */
98
-void TFT_String::add(uint8_t *string, int8_t index, uint8_t *inStr/*=nullptr*/) {
96
+void TFT_String::add(const char *tpl, const int8_t index, const char *cstr/*=nullptr*/, FSTR_P const fstr/*=nullptr*/) {
99
   wchar_t wchar;
97
   wchar_t wchar;
100
 
98
 
101
-  while (*string) {
102
-    string = get_utf8_value_cb(string, read_byte, &wchar);
99
+  while (*tpl) {
100
+    tpl = get_utf8_value_cb(tpl, read_byte_ram, &wchar);
103
     if (wchar > 255) wchar |= 0x0080;
101
     if (wchar > 255) wchar |= 0x0080;
104
-    uint8_t ch = uint8_t(wchar & 0x00FF);
102
+    const uint8_t ch = uint8_t(wchar & 0x00FF);
105
 
103
 
106
     if (ch == '=' || ch == '~' || ch == '*') {
104
     if (ch == '=' || ch == '~' || ch == '*') {
107
       if (index >= 0) {
105
       if (index >= 0) {
111
         add_character('0' + inum);
109
         add_character('0' + inum);
112
       }
110
       }
113
       else
111
       else
114
-        add(index == -2 ? GET_TEXT(MSG_CHAMBER) : GET_TEXT(MSG_BED));
112
+        add(index == -2 ? GET_TEXT_F(MSG_CHAMBER) : GET_TEXT_F(MSG_BED));
115
     }
113
     }
116
-    else if (ch == '$' && inStr)
117
-      add(inStr);
114
+    else if (ch == '$' && fstr)
115
+      add(fstr);
116
+    else if (ch == '$' && cstr)
117
+      add(cstr);
118
     else if (ch == '@')
118
     else if (ch == '@')
119
       add_character(AXIS_CHAR(index));
119
       add_character(AXIS_CHAR(index));
120
     else
120
     else
123
   eol();
123
   eol();
124
 }
124
 }
125
 
125
 
126
-void TFT_String::add(uint8_t *string, uint8_t max_len) {
126
+void TFT_String::add(const char *cstr, uint8_t max_len/*=MAX_STRING_LENGTH*/) {
127
   wchar_t wchar;
127
   wchar_t wchar;
128
-  while (*string && max_len) {
129
-    string = get_utf8_value_cb(string, read_byte, &wchar);
128
+  while (*cstr && max_len) {
129
+    cstr = get_utf8_value_cb(cstr, read_byte_ram, &wchar);
130
     if (wchar > 255) wchar |= 0x0080;
130
     if (wchar > 255) wchar |= 0x0080;
131
-    uint8_t ch = uint8_t(wchar & 0x00FF);
131
+    const uint8_t ch = uint8_t(wchar & 0x00FF);
132
     add_character(ch);
132
     add_character(ch);
133
     max_len--;
133
     max_len--;
134
   }
134
   }
135
   eol();
135
   eol();
136
 }
136
 }
137
 
137
 
138
-void TFT_String::add_character(uint8_t character) {
138
+void TFT_String::add_character(const char character) {
139
   if (length < MAX_STRING_LENGTH) {
139
   if (length < MAX_STRING_LENGTH) {
140
     data[length] = character;
140
     data[length] = character;
141
     length++;
141
     length++;
143
   }
143
   }
144
 }
144
 }
145
 
145
 
146
-void TFT_String::rtrim(uint8_t character) {
146
+void TFT_String::rtrim(const char character) {
147
   while (length) {
147
   while (length) {
148
     if (data[length - 1] == 0x20 || data[length - 1] == character) {
148
     if (data[length - 1] == 0x20 || data[length - 1] == character) {
149
       length--;
149
       length--;
155
   }
155
   }
156
 }
156
 }
157
 
157
 
158
-void TFT_String::ltrim(uint8_t character) {
158
+void TFT_String::ltrim(const char character) {
159
   uint16_t i, j;
159
   uint16_t i, j;
160
   for (i = 0; (i < length) && (data[i] == 0x20 || data[i] == character); i++) {
160
   for (i = 0; (i < length) && (data[i] == 0x20 || data[i] == character); i++) {
161
     span -= glyph(data[i])->DWidth;
161
     span -= glyph(data[i])->DWidth;
166
   eol();
166
   eol();
167
 }
167
 }
168
 
168
 
169
-void TFT_String::trim(uint8_t character) {
169
+void TFT_String::trim(const char character) {
170
   rtrim(character);
170
   rtrim(character);
171
   ltrim(character);
171
   ltrim(character);
172
 }
172
 }

+ 67
- 26
Marlin/src/lcd/tft/tft_string.h View File

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
+// TODO: Make AVR-compatible with separate ROM / RAM string methods
25
+
24
 #include <stdint.h>
26
 #include <stdint.h>
25
 
27
 
26
 extern const uint8_t ISO10646_1_5x7[];
28
 extern const uint8_t ISO10646_1_5x7[];
67
     static glyph_t *glyphs[256];
69
     static glyph_t *glyphs[256];
68
     static font_t *font_header;
70
     static font_t *font_header;
69
 
71
 
70
-    static uint8_t data[MAX_STRING_LENGTH + 1];
72
+    static char data[MAX_STRING_LENGTH + 1];
71
     static uint16_t span;   // in pixels
73
     static uint16_t span;   // in pixels
72
-    static uint8_t length;  // in characters
73
 
74
 
74
-    static void add_character(uint8_t character);
75
-    static void eol() { data[length] = 0x00; }
75
+    static void add_character(const char character);
76
+    static void eol() { data[length] = '\0'; }
76
 
77
 
77
   public:
78
   public:
79
+    static uint8_t length;  // in characters
80
+
78
     static void set_font(const uint8_t *font);
81
     static void set_font(const uint8_t *font);
79
     static void add_glyphs(const uint8_t *font);
82
     static void add_glyphs(const uint8_t *font);
80
 
83
 
83
     static glyph_t *glyph(uint8_t character) { return glyphs[character] ?: glyphs[0x3F]; }  /* Use '?' for unknown glyphs */
86
     static glyph_t *glyph(uint8_t character) { return glyphs[character] ?: glyphs[0x3F]; }  /* Use '?' for unknown glyphs */
84
     static glyph_t *glyph(uint8_t *character) { return glyph(*character); }
87
     static glyph_t *glyph(uint8_t *character) { return glyph(*character); }
85
 
88
 
89
+    /**
90
+     * @brief Set the string empty
91
+     */
86
     static void set();
92
     static void set();
87
-    static void add(uint8_t character) { add_character(character); eol(); }
88
-    static void add(uint8_t *string, uint8_t max_len=MAX_STRING_LENGTH);
89
-    static void add(uint8_t *string, int8_t index, uint8_t *inStr=nullptr);
90
-    static void set(uint8_t *string) { set(); add(string); };
91
-    static void set(uint8_t *string, int8_t index, const char *inStr=nullptr) { set(); add(string, index, (uint8_t *)inStr); };
92
-    static void set(const char *string) { set((uint8_t *)string); }
93
-    static void set(const char *string, int8_t index, const char *inStr=nullptr) { set((uint8_t *)string, index, inStr); }
94
-    static void add(const char *string) { add((uint8_t *)string); }
95
-
96
-    static void add(FSTR_P const string, uint8_t max_len=MAX_STRING_LENGTH) { add((uint8_t *)FTOP(string), max_len); }
97
-    static void add(FSTR_P const string, int8_t index, uint8_t *inStr=nullptr) { add((uint8_t *)FTOP(string), index, inStr); }
98
-    static void set(FSTR_P const string) { set((uint8_t *)FTOP(string)); }
99
-    static void set(FSTR_P const string, int8_t index, const char *inStr=nullptr) { set((uint8_t *)FTOP(string), index, inStr); }
100
-    static void add(FSTR_P const string) { add((uint8_t *)FTOP(string)); }
101
-
102
-    static void trim(uint8_t character=0x20);
103
-    static void rtrim(uint8_t character=0x20);
104
-    static void ltrim(uint8_t character=0x20);
105
-
106
-    static void truncate(uint8_t maxlen) { if (length > maxlen) { length = maxlen; eol(); } }
107
 
93
 
94
+    /**
95
+     * @brief Append an ASCII character and EOL
96
+     *
97
+     * @param character The ASCII character
98
+     */
99
+    static void add(const char character) { add_character(character); eol(); }
100
+    static void set(wchar_t character) { set(); add(character); }
101
+
102
+    /**
103
+     * @brief Append / Set C-string
104
+     *
105
+     * @param cstr The string
106
+     * @param max_len Character limit
107
+     */
108
+    static void add(const char *cstr, uint8_t max_len=MAX_STRING_LENGTH);
109
+    static void set(const char *cstr, uint8_t max_len=MAX_STRING_LENGTH) { set(); add(cstr, max_len); }
110
+
111
+    /**
112
+     * @brief Append / Set F-string
113
+     *
114
+     * @param fstr The string
115
+     * @param max_len Character limit
116
+     */
117
+    static void add(FSTR_P const fstr, uint8_t max_len=MAX_STRING_LENGTH) { add(FTOP(fstr), max_len); }
118
+    static void set(FSTR_P const fstr, uint8_t max_len=MAX_STRING_LENGTH) { set(FTOP(fstr), max_len); }
119
+
120
+    /**
121
+     * @brief Append / Set C-string with optional substitution
122
+     *
123
+     * @param tpl A string with optional substitution
124
+     * @param index An index
125
+     * @param cstr An SRAM C-string to use for $ substitution
126
+     * @param fstr A ROM F-string to use for $ substitution
127
+     */
128
+    static void add(const char *tpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr);
129
+    static void set(const char *tpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { set(); add(tpl, index, cstr, fstr); }
130
+
131
+    /**
132
+     * @brief Append / Set F-string with optional substitution
133
+     *
134
+     * @param ftpl A ROM F-string with optional substitution
135
+     * @param index An index
136
+     * @param cstr An SRAM C-string to use for $ substitution
137
+     * @param fstr A ROM F-string to use for $ substitution
138
+     */
139
+    static void add(FSTR_P const ftpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { add(FTOP(ftpl), index, cstr, fstr); }
140
+    static void set(FSTR_P const ftpl, const int8_t index, const char *cstr=nullptr, FSTR_P const fstr=nullptr) { set(); add(ftpl, index, cstr, fstr); }
141
+
142
+    // Common string ops
143
+    static void trim(const char character=' ');
144
+    static void rtrim(const char character=' ');
145
+    static void ltrim(const char character=' ');
146
+    static void truncate(const uint8_t maxlen) { if (length > maxlen) { length = maxlen; eol(); } }
147
+
148
+    // Accessors
149
+    static char *string() { return data; }
108
     static uint16_t width() { return span; }
150
     static uint16_t width() { return span; }
109
-    static uint8_t *string() { return data; }
110
-    static uint16_t center(uint16_t width) { return span > width ? 0 : (width - span) / 2; }
151
+    static uint16_t center(const uint16_t width) { return span > width ? 0 : (width - span) / 2; }
111
 };
152
 };
112
 
153
 
113
 extern TFT_String tft_string;
154
 extern TFT_String tft_string;

+ 5
- 5
Marlin/src/lcd/tft/ui_1024x600.cpp View File

181
 
181
 
182
   tft.add_image(8, 28, image, Color);
182
   tft.add_image(8, 28, image, Color);
183
 
183
 
184
-  tft_string.set((uint8_t *)i16tostr3rj(currentTemperature));
184
+  tft_string.set(i16tostr3rj(currentTemperature));
185
   tft_string.add(LCD_STR_DEGREE);
185
   tft_string.add(LCD_STR_DEGREE);
186
   tft_string.trim();
186
   tft_string.trim();
187
   tft.add_text(tft_string.center(80) + 2, 82, Color, tft_string);
187
   tft.add_text(tft_string.center(80) + 2, 82, Color, tft_string);
188
 
188
 
189
   if (targetTemperature >= 0) {
189
   if (targetTemperature >= 0) {
190
-    tft_string.set((uint8_t *)i16tostr3rj(targetTemperature));
190
+    tft_string.set(i16tostr3rj(targetTemperature));
191
     tft_string.add(LCD_STR_DEGREE);
191
     tft_string.add(LCD_STR_DEGREE);
192
     tft_string.trim();
192
     tft_string.trim();
193
     tft.add_text(tft_string.center(80) + 2, 8, Color, tft_string);
193
     tft.add_text(tft_string.center(80) + 2, 8, Color, tft_string);
211
 
211
 
212
   tft.add_image(8, 20, image, COLOR_FAN);
212
   tft.add_image(8, 20, image, COLOR_FAN);
213
 
213
 
214
-  tft_string.set((uint8_t *)ui8tostr4pctrj(thermalManager.fan_speed[0]));
214
+  tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0]));
215
   tft_string.trim();
215
   tft_string.trim();
216
   tft.add_text(tft_string.center(80) + 6, 82, COLOR_FAN, tft_string);
216
   tft.add_text(tft_string.center(80) + 6, 82, COLOR_FAN, tft_string);
217
 }
217
 }
359
   uint16_t line = 1;
359
   uint16_t line = 1;
360
 
360
 
361
   menu_line(line++);
361
   menu_line(line++);
362
-  tft_string.set(FTOP(fstr), itemIndex, FTOP(itemString));
362
+  tft_string.set(fstr, itemIndex, itemStringC, itemStringF);
363
   tft_string.trim();
363
   tft_string.trim();
364
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
364
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
365
 
365
 
606
 
606
 
607
 #define CUR_STEP_VALUE_WIDTH 104
607
 #define CUR_STEP_VALUE_WIDTH 104
608
 static void drawCurStepValue() {
608
 static void drawCurStepValue() {
609
-  tft_string.set((uint8_t *)ftostr52sp(motionAxisState.currentStepSize));
609
+  tft_string.set(ftostr52sp(motionAxisState.currentStepSize));
610
   tft_string.add("mm");
610
   tft_string.add("mm");
611
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT);
611
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT);
612
   tft.set_background(COLOR_BACKGROUND);
612
   tft.set_background(COLOR_BACKGROUND);

+ 5
- 5
Marlin/src/lcd/tft/ui_320x240.cpp View File

181
 
181
 
182
   tft.add_image(0, 18, image, Color);
182
   tft.add_image(0, 18, image, Color);
183
 
183
 
184
-  tft_string.set((uint8_t *)i16tostr3rj(currentTemperature));
184
+  tft_string.set(i16tostr3rj(currentTemperature));
185
   tft_string.add(LCD_STR_DEGREE);
185
   tft_string.add(LCD_STR_DEGREE);
186
   tft_string.trim();
186
   tft_string.trim();
187
   tft.add_text(tft_string.center(64) + 2, 72, Color, tft_string);
187
   tft.add_text(tft_string.center(64) + 2, 72, Color, tft_string);
188
 
188
 
189
   if (targetTemperature >= 0) {
189
   if (targetTemperature >= 0) {
190
-    tft_string.set((uint8_t *)i16tostr3rj(targetTemperature));
190
+    tft_string.set(i16tostr3rj(targetTemperature));
191
     tft_string.add(LCD_STR_DEGREE);
191
     tft_string.add(LCD_STR_DEGREE);
192
     tft_string.trim();
192
     tft_string.trim();
193
     tft.add_text(tft_string.center(64) + 2, 8, Color, tft_string);
193
     tft.add_text(tft_string.center(64) + 2, 8, Color, tft_string);
211
 
211
 
212
   tft.add_image(0, 10, image, COLOR_FAN);
212
   tft.add_image(0, 10, image, COLOR_FAN);
213
 
213
 
214
-  tft_string.set((uint8_t *)ui8tostr4pctrj(thermalManager.fan_speed[0]));
214
+  tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0]));
215
   tft_string.trim();
215
   tft_string.trim();
216
   tft.add_text(tft_string.center(64) + 6, 72, COLOR_FAN, tft_string);
216
   tft.add_text(tft_string.center(64) + 6, 72, COLOR_FAN, tft_string);
217
 }
217
 }
354
   uint16_t line = 1;
354
   uint16_t line = 1;
355
 
355
 
356
   menu_line(line++);
356
   menu_line(line++);
357
-  tft_string.set(FTOP(fstr), itemIndex, FTOP(itemString));
357
+  tft_string.set(fstr, itemIndex, itemStringC, itemStringF);
358
   tft_string.trim();
358
   tft_string.trim();
359
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
359
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
360
 
360
 
588
 
588
 
589
 #define CUR_STEP_VALUE_WIDTH 38
589
 #define CUR_STEP_VALUE_WIDTH 38
590
 static void drawCurStepValue() {
590
 static void drawCurStepValue() {
591
-  tft_string.set((uint8_t *)ftostr52sp(motionAxisState.currentStepSize));
591
+  tft_string.set(ftostr52sp(motionAxisState.currentStepSize));
592
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, 20);
592
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, 20);
593
   tft.set_background(COLOR_BACKGROUND);
593
   tft.set_background(COLOR_BACKGROUND);
594
   tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string);
594
   tft.add_text(CUR_STEP_VALUE_WIDTH - tft_string.width(), 0, COLOR_AXIS_HOMED, tft_string);

+ 5
- 5
Marlin/src/lcd/tft/ui_480x320.cpp View File

181
 
181
 
182
   tft.add_image(8, 28, image, Color);
182
   tft.add_image(8, 28, image, Color);
183
 
183
 
184
-  tft_string.set((uint8_t *)i16tostr3rj(currentTemperature));
184
+  tft_string.set(i16tostr3rj(currentTemperature));
185
   tft_string.add(LCD_STR_DEGREE);
185
   tft_string.add(LCD_STR_DEGREE);
186
   tft_string.trim();
186
   tft_string.trim();
187
   tft.add_text(tft_string.center(80) + 2, 82, Color, tft_string);
187
   tft.add_text(tft_string.center(80) + 2, 82, Color, tft_string);
188
 
188
 
189
   if (targetTemperature >= 0) {
189
   if (targetTemperature >= 0) {
190
-    tft_string.set((uint8_t *)i16tostr3rj(targetTemperature));
190
+    tft_string.set(i16tostr3rj(targetTemperature));
191
     tft_string.add(LCD_STR_DEGREE);
191
     tft_string.add(LCD_STR_DEGREE);
192
     tft_string.trim();
192
     tft_string.trim();
193
     tft.add_text(tft_string.center(80) + 2, 8, Color, tft_string);
193
     tft.add_text(tft_string.center(80) + 2, 8, Color, tft_string);
211
 
211
 
212
   tft.add_image(8, 20, image, COLOR_FAN);
212
   tft.add_image(8, 20, image, COLOR_FAN);
213
 
213
 
214
-  tft_string.set((uint8_t *)ui8tostr4pctrj(thermalManager.fan_speed[0]));
214
+  tft_string.set(ui8tostr4pctrj(thermalManager.fan_speed[0]));
215
   tft_string.trim();
215
   tft_string.trim();
216
   tft.add_text(tft_string.center(80) + 6, 82, COLOR_FAN, tft_string);
216
   tft.add_text(tft_string.center(80) + 6, 82, COLOR_FAN, tft_string);
217
 }
217
 }
359
   uint16_t line = 1;
359
   uint16_t line = 1;
360
 
360
 
361
   menu_line(line++);
361
   menu_line(line++);
362
-  tft_string.set(FTOP(fstr), itemIndex, FTOP(itemString));
362
+  tft_string.set(fstr, itemIndex, itemStringC, itemStringF);
363
   tft_string.trim();
363
   tft_string.trim();
364
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
364
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
365
 
365
 
593
 
593
 
594
 #define CUR_STEP_VALUE_WIDTH 104
594
 #define CUR_STEP_VALUE_WIDTH 104
595
 static void drawCurStepValue() {
595
 static void drawCurStepValue() {
596
-  tft_string.set((uint8_t *)ftostr52sp(motionAxisState.currentStepSize));
596
+  tft_string.set(ftostr52sp(motionAxisState.currentStepSize));
597
   tft_string.add("mm");
597
   tft_string.add("mm");
598
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT);
598
   tft.canvas(motionAxisState.stepValuePos.x, motionAxisState.stepValuePos.y, CUR_STEP_VALUE_WIDTH, BTN_HEIGHT);
599
   tft.set_background(COLOR_BACKGROUND);
599
   tft.set_background(COLOR_BACKGROUND);

+ 12
- 12
Marlin/src/lcd/tft/ui_common.cpp View File

96
   lcd_gotopixel(int(col) * (TFT_COL_WIDTH), int(row) * MENU_LINE_HEIGHT);
96
   lcd_gotopixel(int(col) * (TFT_COL_WIDTH), int(row) * MENU_LINE_HEIGHT);
97
 }
97
 }
98
 
98
 
99
-int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
99
+int lcd_put_wchar_max(const wchar_t c, const pixel_len_t max_length) {
100
   if (max_length < 1) return 0;
100
   if (max_length < 1) return 0;
101
-  tft_string.set();
102
-  tft_string.add(c);
101
+  tft_string.set(c);
103
   tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
102
   tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
104
   lcd_gotopixel((cursor.x + 1) * (TFT_COL_WIDTH) + tft_string.width(), cursor.y * MENU_LINE_HEIGHT);
103
   lcd_gotopixel((cursor.x + 1) * (TFT_COL_WIDTH) + tft_string.width(), cursor.y * MENU_LINE_HEIGHT);
105
   return tft_string.width();
104
   return tft_string.width();
106
 }
105
 }
107
 
106
 
108
-int lcd_put_u8str_max_P(PGM_P utf8_pstr, pixel_len_t max_length) {
107
+int lcd_put_u8str_max_P(PGM_P utf8_pstr, const pixel_len_t max_length) {
109
   if (max_length < 1) return 0;
108
   if (max_length < 1) return 0;
110
   tft_string.set(utf8_pstr);
109
   tft_string.set(utf8_pstr);
111
   tft_string.trim();
110
   tft_string.trim();
115
   return tft_string.width();
114
   return tft_string.width();
116
 }
115
 }
117
 
116
 
118
-int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
117
+int lcd_put_u8str_max(const char * utf8_str, const pixel_len_t max_length) {
119
   return lcd_put_u8str_max_P(utf8_str, max_length);
118
   return lcd_put_u8str_max_P(utf8_str, max_length);
120
 }
119
 }
121
 
120
 
133
 void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char) {
132
 void MenuItemBase::_draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char pre_char, const char post_char) {
134
   menu_item(row, sel);
133
   menu_item(row, sel);
135
 
134
 
136
-  uint8_t *string = (uint8_t *)FTOP(fstr);
135
+  const char *string = FTOP(fstr);
137
   MarlinImage image = noImage;
136
   MarlinImage image = noImage;
138
   switch (*string) {
137
   switch (*string) {
139
     case 0x01: image = imgRefresh; break;  // LCD_STR_REFRESH
138
     case 0x01: image = imgRefresh; break;  // LCD_STR_REFRESH
147
     tft.add_image(MENU_ITEM_ICON_X, MENU_ITEM_ICON_Y, image, COLOR_MENU_TEXT, sel ? COLOR_SELECTION_BG : COLOR_BACKGROUND);
146
     tft.add_image(MENU_ITEM_ICON_X, MENU_ITEM_ICON_Y, image, COLOR_MENU_TEXT, sel ? COLOR_SELECTION_BG : COLOR_BACKGROUND);
148
   }
147
   }
149
 
148
 
150
-  tft_string.set(string, itemIndex, FTOP(itemString));
149
+  tft_string.set(string, itemIndex, itemStringC, itemStringF);
150
+
151
   tft.add_text(offset, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
151
   tft.add_text(offset, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
152
 }
152
 }
153
 
153
 
154
 // Draw a menu item with a (potentially) editable value
154
 // Draw a menu item with a (potentially) editable value
155
-void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const data, const bool pgm) {
155
+void MenuEditItemBase::draw(const bool sel, const uint8_t row, FSTR_P const fstr, const char * const inStr, const bool pgm) {
156
   menu_item(row, sel);
156
   menu_item(row, sel);
157
 
157
 
158
-  tft_string.set(FTOP(fstr), itemIndex, FTOP(itemString));
158
+  tft_string.set(fstr, itemIndex, itemStringC, itemStringF);
159
   tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
159
   tft.add_text(MENU_TEXT_X_OFFSET, MENU_TEXT_Y_OFFSET, COLOR_MENU_TEXT, tft_string);
160
-  if (data) {
161
-    tft_string.set(data);
160
+  if (inStr) {
161
+    tft_string.set(inStr);
162
     tft.add_text(TFT_WIDTH - MENU_TEXT_X_OFFSET - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string);
162
     tft.add_text(TFT_WIDTH - MENU_TEXT_X_OFFSET - tft_string.width(), MENU_TEXT_Y_OFFSET, COLOR_MENU_VALUE, tft_string);
163
   }
163
   }
164
 }
164
 }
166
 // Draw a static item with no left-right margin required. Centered by default.
166
 // Draw a static item with no left-right margin required. Centered by default.
167
 void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
167
 void MenuItem_static::draw(const uint8_t row, FSTR_P const fstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
168
   menu_item(row);
168
   menu_item(row);
169
-  tft_string.set(FTOP(fstr), itemIndex, FTOP(itemString));
169
+  tft_string.set(fstr, itemIndex, itemStringC, itemStringF);
170
   if (vstr) tft_string.add(vstr);
170
   if (vstr) tft_string.add(vstr);
171
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string);
171
   tft.add_text(tft_string.center(TFT_WIDTH), MENU_TEXT_Y_OFFSET, COLOR_YELLOW, tft_string);
172
 }
172
 }

+ 1
- 1
Marlin/src/libs/L64XX/L64XX_Marlin.cpp View File

38
 #include "../../HAL/shared/Delay.h"
38
 #include "../../HAL/shared/Delay.h"
39
 
39
 
40
 static const char NUM_AXIS_LIST(
40
 static const char NUM_AXIS_LIST(
41
-                   str_X[] PROGMEM = "X ",          str_Y[] PROGMEM = "Y ",          str_Z[] PROGMEM = "Z ",
41
+                   str_X[] PROGMEM = "X ",      str_Y[] PROGMEM = "Y ",      str_Z[] PROGMEM = "Z ",
42
                    str_I[] PROGMEM = STR_I " ", str_J[] PROGMEM = STR_J " ", str_K[] PROGMEM = STR_K " "
42
                    str_I[] PROGMEM = STR_I " ", str_J[] PROGMEM = STR_J " ", str_K[] PROGMEM = STR_K " "
43
                  ),
43
                  ),
44
                  str_X2[] PROGMEM = "X2", str_Y2[] PROGMEM = "Y2",
44
                  str_X2[] PROGMEM = "X2", str_Y2[] PROGMEM = "Y2",

+ 1
- 1
buildroot/share/fonts/genpages.c View File

66
  */
66
  */
67
 uint8_t* get_utf8_value(uint8_t *pstart, wchar_t *pval) {
67
 uint8_t* get_utf8_value(uint8_t *pstart, wchar_t *pval) {
68
   uint32_t val = 0;
68
   uint32_t val = 0;
69
-  uint8_t *p = pstart;
69
+  const uint8_t *p = pstart;
70
   /*size_t maxlen = strlen(pstart);*/
70
   /*size_t maxlen = strlen(pstart);*/
71
 
71
 
72
   assert(NULL != pstart);
72
   assert(NULL != pstart);

Loading…
Cancel
Save