diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index ef8442e867..f130221821 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -324,7 +324,7 @@ void disable_all_steppers() {
#ifdef ACTION_ON_CANCEL
host_action_cancel();
#endif
- kill(PSTR(MSG_ERR_PROBING_FAILED));
+ kill(GET_TEXT(MSG_LCD_PROBING_FAILED));
#endif
}
@@ -686,15 +686,16 @@ void idle(
* Kill all activity and lock the machine.
* After this the machine will need to be reset.
*/
-void kill(PGM_P const lcd_msg/*=nullptr*/, const bool steppers_off/*=false*/) {
+void kill(PGM_P const lcd_error/*=nullptr*/, PGM_P const lcd_component/*=nullptr*/, const bool steppers_off/*=false*/) {
thermalManager.disable_all_heaters();
SERIAL_ERROR_MSG(MSG_ERR_KILLED);
#if HAS_DISPLAY
- ui.kill_screen(lcd_msg ?: PSTR(MSG_KILLED));
+ ui.kill_screen(lcd_error ?: GET_TEXT(MSG_KILLED), lcd_component);
#else
- UNUSED(lcd_msg);
+ UNUSED(lcd_error);
+ UNUSED(lcd_component);
#endif
#ifdef ACTION_ON_KILL
diff --git a/Marlin/src/Marlin.h b/Marlin/src/Marlin.h
index 8b64c9a2cb..391c453e01 100644
--- a/Marlin/src/Marlin.h
+++ b/Marlin/src/Marlin.h
@@ -322,7 +322,7 @@ void disable_e_stepper(const uint8_t e);
void disable_e_steppers();
void disable_all_steppers();
-void kill(PGM_P const lcd_msg=nullptr, const bool steppers_off=false);
+void kill(PGM_P const lcd_error=nullptr, PGM_P const lcd_component=nullptr, const bool steppers_off=false);
void minkill(const bool steppers_off=false);
void quickstop_stepper();
diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h
index 9a68a4765c..696a5cb0a9 100644
--- a/Marlin/src/core/language.h
+++ b/Marlin/src/core/language.h
@@ -97,7 +97,20 @@
// #define STRING_SPLASH_LINE3 WEBSITE_URL
//#endif
-#if HAS_GRAPHICAL_LCD
+#if HAS_CHARACTER_LCD
+
+ // Custom characters defined in the first 8 characters of the LCD
+ #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
+ #define LCD_STR_DEGREE "\x01"
+ #define LCD_STR_THERMOMETER "\x02" // Still used with string concatenation
+ #define LCD_STR_UPLEVEL "\x03"
+ #define LCD_STR_REFRESH "\x04"
+ #define LCD_STR_FOLDER "\x05"
+ #define LCD_STR_FEEDRATE "\x06"
+ #define LCD_STR_CLOCK "\x07"
+ #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
+
+#else
//
// Custom characters from Marlin_symbols.fon which was merged into ISO10646-0-3.bdf
// \x00 intentionally skipped to avoid problems in strings
@@ -120,19 +133,6 @@
#define LCD_STR_FILAM_DIA "\xF8"
#define LCD_STR_FILAM_MUL "\xA4"
-#elif HAS_CHARACTER_LCD
-
- // Custom characters defined in the first 8 characters of the LCD
- #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
- #define LCD_STR_DEGREE "\x01"
- #define LCD_STR_THERMOMETER "\x02" // Still used with string concatenation
- #define LCD_STR_UPLEVEL "\x03"
- #define LCD_STR_REFRESH "\x04"
- #define LCD_STR_FOLDER "\x05"
- #define LCD_STR_FEEDRATE "\x06"
- #define LCD_STR_CLOCK "\x07"
- #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
-
#endif
// Common LCD messages
@@ -243,10 +243,9 @@
#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
#define MSG_ERR_HOTEND_TOO_COLD "Hotend too cold"
+#define MSG_ERR_Z_HOMING_SER "Home XY first"
+#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
-#define MSG_FILAMENT_CHANGE_HEAT "Press button (or M108) to heat nozzle"
-#define MSG_FILAMENT_CHANGE_INSERT "Insert filament and press button (or M108)"
-#define MSG_FILAMENT_CHANGE_WAIT "Press button (or M108) to resume"
#define MSG_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
#define MSG_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"
#define MSG_FILAMENT_CHANGE_WAIT_LCD "Press button to resume"
@@ -254,8 +253,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_M108 "Insert filament and send M108"
#define MSG_FILAMENT_CHANGE_WAIT_M108 "Send M108 to resume"
-#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
-
#define MSG_STOP_BLTOUCH "STOP called because of BLTouch error - restart with M999"
#define MSG_STOP_UNHOMED "STOP called because of unhomed error - restart with M999"
#define MSG_KILL_INACTIVE_TIME "KILL caused by too much inactive time - current command: "
@@ -298,6 +295,8 @@
#define MSG_T_THERMAL_RUNAWAY "Thermal Runaway"
#define MSG_T_MAXTEMP "MAXTEMP triggered"
#define MSG_T_MINTEMP "MINTEMP triggered"
+#define MSG_ERR_PROBING_FAILED "Probing Failed"
+#define MSG_ZPROBE_OUT_SER "Z Probe Past Bed"
// Debug
#define MSG_DEBUG_PREFIX "DEBUG:"
@@ -313,11 +312,9 @@
#define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
#define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
-#define INCLUDE_LANGUAGE_DATA LANGUAGE_DATA_INCL(LCD_LANGUAGE)
#define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
-#define INCLUDE_LANGUAGE LANGUAGE_INCL(LCD_LANGUAGE)
// Never translate these strings
#define MSG_X "X"
@@ -338,6 +335,11 @@
#define MSG_Z2 "Z2"
#define MSG_Z3 "Z3"
+#define LCD_STR_A MSG_A
+#define LCD_STR_B MSG_B
+#define LCD_STR_C MSG_C
+#define LCD_STR_E MSG_E
+
/**
* Tool indexes for LCD display only
*
@@ -370,7 +372,14 @@
#define LCD_STR_E4 "E" LCD_STR_N4
#define LCD_STR_E5 "E" LCD_STR_N5
-#include INCLUDE_LANGUAGE
+#include "multi_language.h" // Allow multiple languages
+
+#include "../lcd/language/language_en.h"
+#include LANGUAGE_INCL(LCD_LANGUAGE)
+#include LANGUAGE_INCL(LCD_LANGUAGE_2)
+#include LANGUAGE_INCL(LCD_LANGUAGE_3)
+#include LANGUAGE_INCL(LCD_LANGUAGE_4)
+#include LANGUAGE_INCL(LCD_LANGUAGE_5)
#if NONE(DISPLAY_CHARSET_ISO10646_1, \
DISPLAY_CHARSET_ISO10646_5, \
@@ -383,5 +392,3 @@
DISPLAY_CHARSET_ISO10646_SK)
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
#endif
-
-#include "../lcd/language/language_en.h"
diff --git a/Marlin/src/core/multi_language.cpp b/Marlin/src/core/multi_language.cpp
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/Marlin/src/core/multi_language.h b/Marlin/src/core/multi_language.h
new file mode 100644
index 0000000000..7ddedf3e1a
--- /dev/null
+++ b/Marlin/src/core/multi_language.h
@@ -0,0 +1,79 @@
+/********************
+ * multi_language.h *
+ ********************/
+
+/****************************************************************************
+ * Written By Marcio Teixeira 2019 - Aleph Objects, Inc. *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * To view a copy of the GNU General Public License, go to the following *
+ * location: . *
+ ****************************************************************************/
+#pragma once
+
+typedef const char Language_Str[];
+
+#if defined(LCD_LANGUAGE_5)
+ #define NUM_LANGUAGES 5
+#elif defined(LCD_LANGUAGE_4)
+ #define NUM_LANGUAGES 4
+#elif defined(LCD_LANGUAGE_3)
+ #define NUM_LANGUAGES 3
+#elif defined(LCD_LANGUAGE_2)
+ #define NUM_LANGUAGES 2
+#else
+ #define NUM_LANGUAGES 1
+#endif
+
+// Setting the unused languages equal to each other allows
+// the compiler to optimize away the conditionals
+
+#ifndef LCD_LANGUAGE_2
+ #define LCD_LANGUAGE_2 LCD_LANGUAGE
+#endif
+
+#ifndef LCD_LANGUAGE_3
+ #define LCD_LANGUAGE_3 LCD_LANGUAGE_2
+#endif
+
+#ifndef LCD_LANGUAGE_4
+ #define LCD_LANGUAGE_4 LCD_LANGUAGE_3
+#endif
+
+#ifndef LCD_LANGUAGE_5
+ #define LCD_LANGUAGE_5 LCD_LANGUAGE_4
+#endif
+
+#define _GET_LANG(LANG) Language_##LANG
+#define GET_LANG(LANG) _GET_LANG(LANG)
+
+#if NUM_LANGUAGES > 1
+ extern uint8_t lang;
+ #define GET_TEXT(MSG) ( \
+ lang == 0 ? GET_LANG(LCD_LANGUAGE)::MSG : \
+ lang == 1 ? GET_LANG(LCD_LANGUAGE_2)::MSG : \
+ lang == 2 ? GET_LANG(LCD_LANGUAGE_3)::MSG : \
+ lang == 3 ? GET_LANG(LCD_LANGUAGE_4)::MSG : \
+ GET_LANG(LCD_LANGUAGE_5)::MSG \
+ )
+ #define MAX_LANG_CHARSIZE max(GET_LANG(LCD_LANGUAGE)::CHARSIZE, \
+ GET_LANG(LCD_LANGUAGE_2)::CHARSIZE, \
+ GET_LANG(LCD_LANGUAGE_3)::CHARSIZE, \
+ GET_LANG(LCD_LANGUAGE_4)::CHARSIZE, \
+ GET_LANG(LCD_LANGUAGE_5)::CHARSIZE)
+#else
+ #define GET_TEXT(MSG) GET_LANG(LCD_LANGUAGE)::MSG
+ #define MAX_LANG_CHARSIZE GET_LANG(LCD_LANGUAGE)::CHARSIZE
+#endif
+#define GET_TEXT_F(MSG) (const __FlashStringHelper*)GET_TEXT(MSG)
+
+#define MSG_CONCAT(A,B) pgm_p_pair_t(GET_TEXT(A),GET_TEXT(B))
diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
index d016667e44..69c3d2d997 100644
--- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
+++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
@@ -757,7 +757,7 @@
const int point_num = (GRID_MAX_POINTS) - count + 1;
SERIAL_ECHOLNPAIR("\nProbing mesh point ", point_num, "/", int(GRID_MAX_POINTS), ".\n");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_PROBING_MESH " %i/%i"), point_num, int(GRID_MAX_POINTS));
+ ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_MESH), point_num, int(GRID_MAX_POINTS));
#endif
#if HAS_LCD_MENU
@@ -921,7 +921,7 @@
if (do_ubl_mesh_map) display_map(g29_map_type); // show user where we're probing
- serialprintPGM(parser.seen('B') ? PSTR(MSG_UBL_BC_INSERT) : PSTR(MSG_UBL_BC_INSERT2));
+ serialprintPGM(parser.seen('B') ? GET_TEXT(MSG_UBL_BC_INSERT) : GET_TEXT(MSG_UBL_BC_INSERT2));
const float z_step = 0.01f; // existing behavior: 0.01mm per click, occasionally step
//const float z_step = planner.steps_to_mm[Z_AXIS]; // approx one step each click
@@ -959,7 +959,7 @@
void abort_fine_tune() {
ui.return_to_status();
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
- set_message_with_feedback(PSTR(MSG_EDITING_STOPPED));
+ set_message_with_feedback(GET_TEXT(MSG_EDITING_STOPPED));
}
void unified_bed_leveling::fine_tune_mesh(const xy_pos_t &pos, const bool do_ubl_mesh_map) {
@@ -1072,7 +1072,7 @@
bool err_flag = false;
#if HAS_LCD_MENU
- set_message_with_feedback(PSTR(MSG_UBL_DOING_G29));
+ set_message_with_feedback(GET_TEXT(MSG_UBL_DOING_G29));
#endif
g29_constant = 0;
@@ -1196,7 +1196,7 @@
if (ubl_state_recursion_chk != 1) {
SERIAL_ECHOLNPGM("save_ubl_active_state_and_disabled() called multiple times in a row.");
#if HAS_LCD_MENU
- set_message_with_feedback(PSTR(MSG_UBL_SAVE_ERROR));
+ set_message_with_feedback(GET_TEXT(MSG_UBL_SAVE_ERROR));
#endif
return;
}
@@ -1210,7 +1210,7 @@
if (--ubl_state_recursion_chk) {
SERIAL_ECHOLNPGM("restore_ubl_active_state_and_leave() called too many times.");
#if HAS_LCD_MENU
- set_message_with_feedback(PSTR(MSG_UBL_RESTORE_ERROR));
+ set_message_with_feedback(GET_TEXT(MSG_UBL_RESTORE_ERROR));
#endif
return;
}
@@ -1410,7 +1410,7 @@
if (do_3_pt_leveling) {
SERIAL_ECHOLNPGM("Tilting mesh (1/3)");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 1/3"));
+ ui.status_printf_P(0, PSTR(S_FMT " 1/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
#endif
measured_z = probe_at_point(points[0], PROBE_PT_RAISE, g29_verbose_level);
@@ -1431,7 +1431,7 @@
if (!abort_flag) {
SERIAL_ECHOLNPGM("Tilting mesh (2/3)");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 2/3"));
+ ui.status_printf_P(0, PSTR(S_FMT " 2/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
#endif
measured_z = probe_at_point(points[1], PROBE_PT_RAISE, g29_verbose_level);
@@ -1453,7 +1453,7 @@
if (!abort_flag) {
SERIAL_ECHOLNPGM("Tilting mesh (3/3)");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 3/3"));
+ ui.status_printf_P(0, PSTR(S_FMT " 3/3"), GET_TEXT(MSG_LCD_TILTING_MESH));
#endif
measured_z = probe_at_point(points[2], PROBE_PT_STOW, g29_verbose_level);
@@ -1497,7 +1497,7 @@
if (!abort_flag) {
SERIAL_ECHOLNPAIR("Tilting mesh point ", point_num, "/", total_points, "\n");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " %i/%i"), point_num, total_points);
+ ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_LCD_TILTING_MESH), point_num, total_points);
#endif
measured_z = probe_at_point(rpos, parser.seen('E') ? PROBE_PT_STOW : PROBE_PT_RAISE, g29_verbose_level); // TODO: Needs error handling
diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp
index b319bbab6e..07f1d7d1b2 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -53,6 +53,7 @@
#include "../lcd/extensible_ui/ui_api.h"
#endif
+#include "../core/language.h"
#include "../lcd/ultralcd.h"
#if HAS_BUZZER
@@ -76,6 +77,12 @@ fil_change_settings_t fc_settings[EXTRUDERS];
#include "../sd/cardreader.h"
#endif
+#if ENABLED(EMERGENCY_PARSER)
+ #define _PMSG(L) L##_M108
+#else
+ #define _PMSG(L) L##_LCD
+#endif
+
#if HAS_BUZZER
static void filament_change_beep(const int8_t max_beep_count, const bool init=false) {
if (pause_mode == PAUSE_MODE_PAUSE_PRINT) return;
@@ -163,7 +170,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
#if HAS_LCD_MENU
if (show_lcd) lcd_pause_show_message(PAUSE_MESSAGE_INSERT, mode);
#endif
- SERIAL_ECHO_MSG(MSG_FILAMENT_CHANGE_INSERT);
+ SERIAL_ECHO_MSG(_PMSG(MSG_FILAMENT_CHANGE_INSERT));
#if HAS_BUZZER
filament_change_beep(max_beep_count, true);
@@ -188,7 +195,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
host_action_prompt_show();
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("Load Filament"));
+ ExtUI::onUserConfirmRequired_P(PSTR("Load Filament"));
#endif
while (wait_for_user) {
#if HAS_BUZZER
@@ -243,7 +250,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Filament Purge Running..."), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("Filament Purge Running..."));
+ ExtUI::onUserConfirmRequired_P(PSTR("Filament Purge Running..."));
#endif
for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count)
do_pause_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE);
@@ -481,14 +488,6 @@ bool pause_print(const float &retract, const xyz_pos_t &park_point, const float
* Used by M125 and M600
*/
-#if (HAS_LCD_MENU || ENABLED(EXTENSIBLE_UI)) && ENABLED(EMERGENCY_PARSER)
- #define _PMSG(L) L
-#elif ENABLED(EMERGENCY_PARSER)
- #define _PMSG(L) L##_M108
-#else
- #define _PMSG(L) L##_LCD
-#endif
-
void show_continue_prompt(const bool is_reload) {
#if HAS_LCD_MENU
lcd_pause_show_message(is_reload ? PAUSE_MESSAGE_INSERT : PAUSE_MESSAGE_WAITING);
@@ -527,7 +526,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Nozzle Parked"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("Nozzle Parked"));
+ ExtUI::onUserConfirmRequired_P(PSTR("Nozzle Parked"));
#endif
while (wait_for_user) {
#if HAS_BUZZER
@@ -551,7 +550,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("HeaterTimeout"));
+ ExtUI::onUserConfirmRequired_P(PSTR("HeaterTimeout"));
#endif
// Wait for LCD click or M108
@@ -581,7 +580,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Reheat Done"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired("Reheat finished.");
+ ExtUI::onUserConfirmRequired_P(PSTR("Reheat finished."));
#endif
wait_for_user = true;
nozzle_timed_out = false;
diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp
index bf13bb4b1a..99f8d5dc4a 100644
--- a/Marlin/src/feature/power_loss_recovery.cpp
+++ b/Marlin/src/feature/power_loss_recovery.cpp
@@ -228,7 +228,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*=
#if PIN_EXISTS(POWER_LOSS)
void PrintJobRecovery::_outage() {
save(true);
- kill(PSTR(MSG_OUTAGE_RECOVERY));
+ kill(GET_TEXT(MSG_OUTAGE_RECOVERY));
}
#endif
diff --git a/Marlin/src/feature/prusa_MMU2/mmu2.cpp b/Marlin/src/feature/prusa_MMU2/mmu2.cpp
index dd0b2c681c..66b3877f0c 100644
--- a/Marlin/src/feature/prusa_MMU2/mmu2.cpp
+++ b/Marlin/src/feature/prusa_MMU2/mmu2.cpp
@@ -433,7 +433,7 @@ bool MMU2::rx_ok() {
void MMU2::check_version() {
if (buildnr < MMU_REQUIRED_FW_BUILDNR) {
SERIAL_ERROR_MSG("Invalid MMU2 firmware. Version >= " STRINGIFY(MMU_REQUIRED_FW_BUILDNR) " required.");
- kill(MSG_MMU2_WRONG_FIRMWARE);
+ kill(GET_TEXT(MSG_MMU2_WRONG_FIRMWARE));
}
}
@@ -449,7 +449,7 @@ void MMU2::tool_change(uint8_t index) {
if (index != extruder) {
disable_E0();
- ui.status_printf_P(0, PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
+ ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
command(MMU_CMD_T0 + index);
@@ -712,7 +712,7 @@ void MMU2::filament_runout() {
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("MMU2 Eject Recover"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("MMU2 Eject Recover"));
+ ExtUI::onUserConfirmRequired_P(PSTR("MMU2 Eject Recover"));
#endif
while (wait_for_user) idle();
BUZZ(200, 404);
diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp
index 6b97168f98..618fdd81f5 100644
--- a/Marlin/src/feature/tmc_util.cpp
+++ b/Marlin/src/feature/tmc_util.cpp
@@ -1118,7 +1118,7 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
#endif
}
- if (axis_connection) ui.set_status_P(PSTR(MSG_ERROR_TMC));
+ if (axis_connection) ui.set_status_P(GET_TEXT(MSG_ERROR_TMC));
}
#endif // HAS_TRINAMIC
diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp
index 46001411c8..467b71059c 100644
--- a/Marlin/src/gcode/bedlevel/G26.cpp
+++ b/Marlin/src/gcode/bedlevel/G26.cpp
@@ -168,7 +168,7 @@ int8_t g26_prime_flag;
*/
bool user_canceled() {
if (!ui.button_pressed()) return false; // Return if the button isn't pressed
- ui.set_status_P(PSTR(MSG_G26_CANCELED), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_CANCELED), 99);
#if HAS_LCD_MENU
ui.quick_feedback();
#endif
@@ -370,7 +370,7 @@ inline bool turn_on_heaters() {
if (g26_bed_temp > 25) {
#if HAS_SPI_LCD
- ui.set_status_P(PSTR(MSG_G26_HEATING_BED), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_HEATING_BED), 99);
ui.quick_feedback();
#if HAS_LCD_MENU
ui.capture();
@@ -391,7 +391,7 @@ inline bool turn_on_heaters() {
// Start heating the active nozzle
#if HAS_SPI_LCD
- ui.set_status_P(PSTR(MSG_G26_HEATING_NOZZLE), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_HEATING_NOZZLE), 99);
ui.quick_feedback();
#endif
thermalManager.setTargetHotend(g26_hotend_temp, active_extruder);
@@ -426,7 +426,7 @@ inline bool prime_nozzle() {
if (g26_prime_flag == -1) { // The user wants to control how much filament gets purged
ui.capture();
- ui.set_status_P(PSTR(MSG_G26_MANUAL_PRIME), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_MANUAL_PRIME), 99);
ui.chirp();
destination = current_position;
@@ -450,7 +450,7 @@ inline bool prime_nozzle() {
ui.wait_for_release();
- ui.set_status_P(PSTR(MSG_G26_PRIME_DONE), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_PRIME_DONE), 99);
ui.quick_feedback();
ui.release();
}
@@ -458,7 +458,7 @@ inline bool prime_nozzle() {
#endif
{
#if HAS_SPI_LCD
- ui.set_status_P(PSTR(MSG_G26_FIXED_LENGTH), 99);
+ ui.set_status_P(GET_TEXT(MSG_G26_FIXED_LENGTH), 99);
ui.quick_feedback();
#endif
destination = current_position;
@@ -827,7 +827,7 @@ void GcodeSuite::G26() {
} while (--g26_repeats && location.valid());
LEAVE:
- ui.set_status_P(PSTR(MSG_G26_LEAVING), -1);
+ ui.set_status_P(GET_TEXT(MSG_G26_LEAVING), -1);
retract_filament(destination);
destination.z = Z_CLEARANCE_BETWEEN_PROBES;
diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp
index 5f1ef2e9a3..9ca621d7cd 100644
--- a/Marlin/src/gcode/bedlevel/abl/G29.cpp
+++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp
@@ -722,7 +722,7 @@ G29_TYPE GcodeSuite::G29() {
if (verbose_level) SERIAL_ECHOLNPAIR("Probing mesh point ", int(pt_index), "/", int(GRID_MAX_POINTS), ".");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), PSTR(MSG_PROBING_MESH), int(pt_index), int(GRID_MAX_POINTS));
+ ui.status_printf_P(0, PSTR(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_MESH), int(pt_index), int(GRID_MAX_POINTS));
#endif
measured_z = faux ? 0.001 * random(-100, 101) : probe_at_point(probePos, raise_after, verbose_level);
@@ -764,7 +764,7 @@ G29_TYPE GcodeSuite::G29() {
for (uint8_t i = 0; i < 3; ++i) {
if (verbose_level) SERIAL_ECHOLNPAIR("Probing point ", int(i), "/3.");
#if HAS_DISPLAY
- ui.status_printf_P(0, PSTR(MSG_PROBING_MESH " %i/3"), int(i));
+ ui.status_printf_P(0, PSTR(S_FMT" %i/3"), GET_TEXT(MSG_PROBING_MESH)), int(i);
#endif
// Retain the last probe position
diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp
index 7f1fb7705e..8fcb74abc5 100644
--- a/Marlin/src/gcode/calibrate/G28.cpp
+++ b/Marlin/src/gcode/calibrate/G28.cpp
@@ -118,7 +118,7 @@
// Disallow Z homing if X or Y are unknown
if (!TEST(axis_known_position, X_AXIS) || !TEST(axis_known_position, Y_AXIS)) {
LCD_MESSAGEPGM(MSG_ERR_Z_HOMING);
- SERIAL_ECHO_MSG(MSG_ERR_Z_HOMING);
+ SERIAL_ECHO_MSG(MSG_ERR_Z_HOMING_SER);
return;
}
@@ -154,7 +154,7 @@
}
else {
LCD_MESSAGEPGM(MSG_ZPROBE_OUT);
- SERIAL_ECHO_MSG(MSG_ZPROBE_OUT);
+ SERIAL_ECHO_MSG(MSG_ZPROBE_OUT_SER);
}
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("<<< home_z_safely");
diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp
index 8a12767224..ca30110670 100644
--- a/Marlin/src/gcode/calibrate/M48.cpp
+++ b/Marlin/src/gcode/calibrate/M48.cpp
@@ -126,7 +126,7 @@ void GcodeSuite::M48() {
for (uint8_t n = 0; n < n_samples; n++) {
#if HAS_SPI_LCD
// Display M48 progress in the status bar
- ui.status_printf_P(0, PSTR(MSG_M48_POINT ": %d/%d"), int(n + 1), int(n_samples));
+ ui.status_printf_P(0, PSTR(S_FMT ": %d/%d"), GET_TEXT(MSG_M48_POINT), int(n + 1), int(n_samples));
#endif
if (n_legs) {
const int dir = (random(0, 10) > 5.0) ? -1 : 1; // clockwise or counter clockwise
@@ -252,7 +252,7 @@ void GcodeSuite::M48() {
#if HAS_SPI_LCD
// Display M48 results in the status bar
char sigma_str[8];
- ui.status_printf_P(0, PSTR(MSG_M48_DEVIATION ": %s"), dtostrf(sigma, 2, 6, sigma_str));
+ ui.status_printf_P(0, PSTR(S_FMT ": %s"), GET_TEXT(MSG_M48_DEVIATION), dtostrf(sigma, 2, 6, sigma_str));
#endif
}
diff --git a/Marlin/src/gcode/calibrate/M852.cpp b/Marlin/src/gcode/calibrate/M852.cpp
index 156d1f5bf6..4bb068e5b2 100644
--- a/Marlin/src/gcode/calibrate/M852.cpp
+++ b/Marlin/src/gcode/calibrate/M852.cpp
@@ -93,13 +93,13 @@ void GcodeSuite::M852() {
if (!ijk) {
SERIAL_ECHO_START();
- SERIAL_ECHOLNPAIR_F(MSG_SKEW_FACTOR " XY: ", planner.skew_factor.xy, 6);
+ serialprintPGM(GET_TEXT(MSG_SKEW_FACTOR));
+ SERIAL_ECHOPAIR_F(" XY: ", planner.skew_factor.xy, 6);
#if ENABLED(SKEW_CORRECTION_FOR_Z)
- SERIAL_ECHOPAIR(" XZ: ", planner.skew_factor.xz);
- SERIAL_ECHOLNPAIR(" YZ: ", planner.skew_factor.yz);
- #else
- SERIAL_EOL();
+ SERIAL_ECHOPAIR_F(" XZ: ", planner.skew_factor.xz, 6);
+ SERIAL_ECHOPAIR_F(" YZ: ", planner.skew_factor.yz, 6);
#endif
+ SERIAL_EOL();
}
}
diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp
index 34d42ed499..0fd213886d 100644
--- a/Marlin/src/gcode/config/M43.cpp
+++ b/Marlin/src/gcode/config/M43.cpp
@@ -334,7 +334,7 @@ void GcodeSuite::M43() {
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("M43 Wait Called"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("M43 Wait Called"));
+ ExtUI::onUserConfirmRequired_P(PSTR("M43 Wait Called"));
#endif
#endif
diff --git a/Marlin/src/gcode/control/M108_M112_M410.cpp b/Marlin/src/gcode/control/M108_M112_M410.cpp
index 9b6193bd93..50feb8276f 100644
--- a/Marlin/src/gcode/control/M108_M112_M410.cpp
+++ b/Marlin/src/gcode/control/M108_M112_M410.cpp
@@ -41,7 +41,7 @@ void GcodeSuite::M108() {
* M112: Full Shutdown
*/
void GcodeSuite::M112() {
- kill(PSTR("M112 Shutdown"), true);
+ kill(PSTR("M112 Shutdown"), nullptr, true);
}
/**
diff --git a/Marlin/src/gcode/control/M80_M81.cpp b/Marlin/src/gcode/control/M80_M81.cpp
index 03f73fe877..d7880358c4 100644
--- a/Marlin/src/gcode/control/M80_M81.cpp
+++ b/Marlin/src/gcode/control/M80_M81.cpp
@@ -110,6 +110,6 @@ void GcodeSuite::M81() {
#endif
#if HAS_LCD_MENU
- LCD_MESSAGEPGM(MACHINE_NAME " " MSG_OFF ".");
+ LCD_MESSAGEPGM_P(PSTR(MACHINE_NAME " " MSG_OFF "."));
#endif
}
diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp
index e17f41f835..6e2b46081c 100644
--- a/Marlin/src/gcode/geometry/M206_M428.cpp
+++ b/Marlin/src/gcode/geometry/M206_M428.cpp
@@ -70,7 +70,7 @@ void GcodeSuite::M428() {
diff[i] = -current_position[i];
if (!WITHIN(diff[i], -20, 20)) {
SERIAL_ERROR_MSG(MSG_ERR_M428_TOO_FAR);
- LCD_ALERTMESSAGEPGM("Err: Too far!");
+ LCD_ALERTMESSAGEPGM_P(PSTR("Err: Too far!"));
BUZZ(200, 40);
return;
}
diff --git a/Marlin/src/gcode/host/M16.cpp b/Marlin/src/gcode/host/M16.cpp
index 94ae79b263..9219155011 100644
--- a/Marlin/src/gcode/host/M16.cpp
+++ b/Marlin/src/gcode/host/M16.cpp
@@ -33,7 +33,7 @@
void GcodeSuite::M16() {
if (strcmp_P(parser.string_arg, PSTR(MACHINE_NAME)))
- kill(PSTR(MSG_EXPECTED_PRINTER));
+ kill(GET_TEXT(MSG_EXPECTED_PRINTER));
}
diff --git a/Marlin/src/gcode/lcd/M0_M1.cpp b/Marlin/src/gcode/lcd/M0_M1.cpp
index 05fb7576fb..aca149abdc 100644
--- a/Marlin/src/gcode/lcd/M0_M1.cpp
+++ b/Marlin/src/gcode/lcd/M0_M1.cpp
@@ -80,7 +80,10 @@ void GcodeSuite::M0_M1() {
#elif ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(has_message ? args : MSG_USERWAIT); // SRAM string
+ if (has_message)
+ ExtUI::onUserConfirmRequired(args); // Can this take an SRAM string??
+ else
+ ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_USERWAIT));
#else
@@ -98,7 +101,7 @@ void GcodeSuite::M0_M1() {
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("M0/1 Break Called"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("M0/1 Break Called"));
+ ExtUI::onUserConfirmRequired_P(PSTR("M0/1 Break Called"));
#endif
if (ms > 0) {
diff --git a/Marlin/src/gcode/temperature/M140_M190.cpp b/Marlin/src/gcode/temperature/M140_M190.cpp
index a0d132f6b7..8d7c4fe0d1 100644
--- a/Marlin/src/gcode/temperature/M140_M190.cpp
+++ b/Marlin/src/gcode/temperature/M140_M190.cpp
@@ -64,7 +64,7 @@ void GcodeSuite::M190() {
}
else return;
- ui.set_status_P(thermalManager.isHeatingBed() ? PSTR(MSG_BED_HEATING) : PSTR(MSG_BED_COOLING));
+ ui.set_status_P(thermalManager.isHeatingBed() ? GET_TEXT(MSG_BED_HEATING) : GET_TEXT(MSG_BED_COOLING));
thermalManager.wait_for_bed(no_wait_for_cooling);
}
diff --git a/Marlin/src/gcode/temperature/M141_M191.cpp b/Marlin/src/gcode/temperature/M141_M191.cpp
index 53deb25d2f..a319faa8ac 100644
--- a/Marlin/src/gcode/temperature/M141_M191.cpp
+++ b/Marlin/src/gcode/temperature/M141_M191.cpp
@@ -68,7 +68,7 @@ void GcodeSuite::M191() {
}
else return;
- lcd_setstatusPGM(thermalManager.isHeatingChamber() ? PSTR(MSG_CHAMBER_HEATING) : PSTR(MSG_CHAMBER_COOLING));
+ lcd_setstatusPGM(thermalManager.isHeatingChamber() ? GET_TEXT(MSG_CHAMBER_HEATING) : GET_TEXT(MSG_CHAMBER_COOLING));
thermalManager.wait_for_chamber(no_wait_for_cooling);
}
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 627fd0be38..fcc361ad4b 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -1072,14 +1072,9 @@
#define HAS_AUTO_CHAMBER_FAN (HAS_TEMP_CHAMBER && PIN_EXISTS(CHAMBER_AUTO_FAN))
#define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 || HAS_AUTO_FAN_4 || HAS_AUTO_FAN_5 || HAS_AUTO_CHAMBER_FAN)
+#define _FANOVERLAP(A,B) (A##_AUTO_FAN_PIN == E##B##_AUTO_FAN_PIN)
#if HAS_AUTO_FAN
- #define AUTO_CHAMBER_IS_0 (CHAMBER_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_1 (CHAMBER_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_2 (CHAMBER_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_3 (CHAMBER_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_4 (CHAMBER_AUTO_FAN_PIN == E4_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_5 (CHAMBER_AUTO_FAN_PIN == E5_AUTO_FAN_PIN)
- #define AUTO_CHAMBER_IS_E (AUTO_CHAMBER_IS_0 || AUTO_CHAMBER_IS_1 || AUTO_CHAMBER_IS_2 || AUTO_CHAMBER_IS_3 || AUTO_CHAMBER_IS_4 || AUTO_CHAMBER_IS_5)
+ #define AUTO_CHAMBER_IS_E (_FANOVERLAP(CHAMBER,0) || _FANOVERLAP(CHAMBER,1) || _FANOVERLAP(CHAMBER,2) || _FANOVERLAP(CHAMBER,3) || _FANOVERLAP(CHAMBER,4) || _FANOVERLAP(CHAMBER,5))
#endif
#if !HAS_AUTO_CHAMBER_FAN || AUTO_CHAMBER_IS_E
diff --git a/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp b/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
index 9f34946137..e497cfe9ee 100644
--- a/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
+++ b/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
@@ -484,9 +484,9 @@ void MarlinUI::draw_kill_screen() {
lcd_put_u8str(0, 0, status_message);
lcd_uint_t y = 2;
#if LCD_HEIGHT >= 4
- lcd_put_u8str_P(0, y++, PSTR(MSG_HALTED));
+ lcd_put_u8str_P(0, y++, GET_TEXT(MSG_HALTED));
#endif
- lcd_put_u8str_P(0, y, PSTR(MSG_PLEASE_RESET));
+ lcd_put_u8str_P(0, y, GET_TEXT(MSG_PLEASE_RESET));
}
//
@@ -977,7 +977,7 @@ void MarlinUI::draw_status_screen() {
#endif // ADVANCED_PAUSE_FEATURE
- void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_CENTER*/, const char * const valstr/*=nullptr*/) {
+ void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
int8_t n = LCD_WIDTH;
lcd_moveto(0, row);
if ((style & SS_CENTER) && !valstr) {
diff --git a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
index 7f9376fbc1..9f08643e76 100644
--- a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
@@ -300,8 +300,8 @@ void MarlinUI::draw_kill_screen() {
do {
set_font(FONT_MENU);
lcd_put_u8str(0, h4 * 1, status_message);
- lcd_put_u8str_P(0, h4 * 2, PSTR(MSG_HALTED));
- lcd_put_u8str_P(0, h4 * 3, PSTR(MSG_PLEASE_RESET));
+ lcd_put_u8str_P(0, h4 * 2, GET_TEXT(MSG_HALTED));
+ lcd_put_u8str_P(0, h4 * 3, GET_TEXT(MSG_PLEASE_RESET));
} while (u8g.nextPage());
}
@@ -363,9 +363,9 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
}
// Draw a static line of text in the same idiom as a menu item
- void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_CENTER*/, const char * const valstr/*=nullptr*/) {
+ void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const valstr/*=nullptr*/) {
- if (mark_as_selected(row, (style & SS_INVERT))) {
+ if (mark_as_selected(row, style & SS_INVERT)) {
u8g_uint_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
diff --git a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp
index 1fb3783b2d..c669294125 100644
--- a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp
@@ -289,11 +289,11 @@ void DGUSScreenVariableHandler::DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable
// Don't let the user in the dark why there is no reaction.
if (!ExtUI::isMediaInserted()) {
- setstatusmessagePGM(PSTR(MSG_NO_MEDIA));
+ setstatusmessagePGM(GET_TEXT(MSG_NO_MEDIA));
return;
}
if (card.flag.abort_sd_printing) {
- setstatusmessagePGM(PSTR(MSG_MEDIA_ABORTING));
+ setstatusmessagePGM(GET_TEXT(MSG_MEDIA_ABORTING));
return;
}
}
@@ -472,13 +472,13 @@ void DGUSScreenVariableHandler::HandleTemperatureChanged(DGUS_VP_Variable &var,
switch (var.VP) {
default: return;
#if HOTENDS >= 1
- case VP_T_E1_Set:
+ case VP_T_E0_Set:
thermalManager.setTargetHotend(newvalue, 0);
acceptedvalue = thermalManager.temp_hotend[0].target;
break;
#endif
#if HOTENDS >= 2
- case VP_T_E2_Set:
+ case VP_T_E1_Set:
thermalManager.setTargetHotend(newvalue, 1);
acceptedvalue = thermalManager.temp_hotend[1].target;
break;
@@ -503,10 +503,10 @@ void DGUSScreenVariableHandler::HandleFlowRateChanged(DGUS_VP_Variable &var, voi
switch (var.VP) {
default: return;
#if (HOTENDS >= 1)
- case VP_Flowrate_E1: target_extruder = 0; break;
+ case VP_Flowrate_E0: target_extruder = 0; break;
#endif
#if (HOTENDS >= 2)
- case VP_Flowrate_E2: target_extruder = 1; break;
+ case VP_Flowrate_E1: target_extruder = 1; break;
#endif
}
@@ -526,11 +526,11 @@ void DGUSScreenVariableHandler::HandleManualExtrude(DGUS_VP_Variable &var, void
ExtUI::extruder_t target_extruder;
switch (var.VP) {
- #if HOTENDS >=1
- case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E0; break;
+ #if HOTENDS >= 1
+ case VP_MOVE_E0: target_extruder = ExtUI::extruder_t::E0; break;
#endif
- #if HOTENDS >=2
- case VP_MOVE_E2: target_extruder = ExtUI::extruder_t::E1; break
+ #if HOTENDS >= 2
+ case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E1; break
#endif
default: return;
}
diff --git a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp
index 0501bc635b..de15d54597 100644
--- a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.cpp
@@ -46,10 +46,10 @@ const uint16_t VPList_Main[] PROGMEM = {
const uint16_t VPList_Temp[] PROGMEM = {
#if HOTENDS >= 1
- VP_T_E1_Is, VP_T_E1_Set,
+ VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
- VP_T_E2_I, VP_T_E2_S,
+ VP_T_E1_I, VP_T_E1_S,
#endif
#if HAS_HEATED_BED
VP_T_Bed_Is, VP_T_Bed_Set,
@@ -60,10 +60,10 @@ const uint16_t VPList_Temp[] PROGMEM = {
const uint16_t VPList_Status[] PROGMEM = {
/* VP_M117, for completeness, but it cannot be auto-uploaded */
#if HOTENDS >= 1
- VP_T_E1_Is, VP_T_E1_Set,
+ VP_T_E0_Is, VP_T_E0_Set,
#endif
#if HOTENDS >= 2
- VP_T_E2_I, VP_T_E2_S,
+ VP_T_E1_I, VP_T_E1_S,
#endif
#if HAS_HEATED_BED
VP_T_Bed_Is, VP_T_Bed_Set,
@@ -81,10 +81,10 @@ const uint16_t VPList_Status[] PROGMEM = {
const uint16_t VPList_Status2[] PROGMEM = {
/* VP_M117, for completeness, but it cannot be auto-uploaded */
#if HOTENDS >= 1
- VP_Flowrate_E1,
+ VP_Flowrate_E0,
#endif
#if HOTENDS >= 2
- VP_Flowrate_E2,
+ VP_Flowrate_E1,
#endif
VP_PrintProgress_Percentage,
VP_PrintTime,
@@ -107,7 +107,7 @@ const uint16_t VPList_FanAndFeedrate[] PROGMEM = {
};
const uint16_t VPList_SD_FlowRates[] PROGMEM = {
- VP_Flowrate_E1, VP_Flowrate_E2,
+ VP_Flowrate_E0, VP_Flowrate_E1,
0x0000
};
@@ -166,17 +166,17 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
// Temperature Data
#if HOTENDS >= 1
- VPHELPER(VP_T_E1_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>),
- VPHELPER(VP_T_E1_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
- VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
+ VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<0>),
+ VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
+ VPHELPER(VP_Flowrate_E0, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
VPHELPER(VP_EPos, &destination.e, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
- VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
+ VPHELPER(VP_MOVE_E0, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
#endif
#if HOTENDS >= 2
- VPHELPER(VP_T_E2_I, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>),
- VPHELPER(VP_T_E2_S, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
- VPHELPER(VP_Flowrate_E2, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
- VPHELPER(VP_MOVE_E2, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
+ VPHELPER(VP_T_E1_I, &thermalManager.temp_hotend[1].celsius, nullptr, DGUSLCD_SendFloatAsLongValueToDisplay<0>),
+ VPHELPER(VP_T_E1_S, &thermalManager.temp_hotend[1].target, DGUSScreenVariableHandler::HandleTemperatureChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
+ VPHELPER(VP_Flowrate_E1, nullptr, DGUSScreenVariableHandler::HandleFlowRateChanged, &DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
+ VPHELPER(VP_MOVE_E1, nullptr, &DGUSScreenVariableHandler::HandleManualExtrude, nullptr),
#endif
#if HOTENDS >= 3
#error More than 2 Hotends currently not implemented on the Display UI design.
diff --git a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h
index f54a2938ec..f90cfa948b 100644
--- a/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h
+++ b/Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinition.h
@@ -109,12 +109,12 @@ constexpr uint16_t VP_SD_AbortPrintConfirmed = 0x2028; // Abort print confirmati
constexpr uint16_t VP_MOVE_X = 0x2100;
constexpr uint16_t VP_MOVE_Y = 0x2102;
constexpr uint16_t VP_MOVE_Z = 0x2104;
-constexpr uint16_t VP_MOVE_E1 = 0x2110;
-constexpr uint16_t VP_MOVE_E2 = 0x2112;
-//constexpr uint16_t VP_MOVE_E3 = 0x2114;
-//constexpr uint16_t VP_MOVE_E4 = 0x2116;
-//constexpr uint16_t VP_MOVE_E5 = 0x2118;
-//constexpr uint16_t VP_MOVE_E6 = 0x211A;
+constexpr uint16_t VP_MOVE_E0 = 0x2110;
+constexpr uint16_t VP_MOVE_E1 = 0x2112;
+//constexpr uint16_t VP_MOVE_E2 = 0x2114;
+//constexpr uint16_t VP_MOVE_E3 = 0x2116;
+//constexpr uint16_t VP_MOVE_E4 = 0x2118;
+//constexpr uint16_t VP_MOVE_E5 = 0x211A;
constexpr uint16_t VP_HOME_ALL = 0x2120;
// Firmware version on the boot screen.
@@ -126,34 +126,34 @@ constexpr uint16_t VP_M117 = 0x3020;
constexpr uint8_t VP_M117_LEN = 0x20;
// Temperatures.
-constexpr uint16_t VP_T_E1_Is = 0x3060; // 4 Byte Integer
-constexpr uint16_t VP_T_E1_Set = 0x3062; // 2 Byte Integer
-constexpr uint16_t VP_T_E2_Is = 0x3064; // 4 Byte Integer
+constexpr uint16_t VP_T_E0_Is = 0x3060; // 4 Byte Integer
+constexpr uint16_t VP_T_E0_Set = 0x3062; // 2 Byte Integer
+constexpr uint16_t VP_T_E1_Is = 0x3064; // 4 Byte Integer
// reserved to support up to 6 Extruders:
-//constexpr uint16_t VP_T_E2_Set = 0x3066; // 2 Byte Integer
-//constexpr uint16_t VP_T_E3_Is = 0x3068; // 4 Byte Integer
-//constexpr uint16_t VP_T_E3_Set = 0x306A; // 2 Byte Integer
-//constexpr uint16_t VP_T_E4_Is = 0x306C; // 4 Byte Integer
-//constexpr uint16_t VP_T_E4_Set = 0x306E; // 2 Byte Integer
-//constexpr uint16_t VP_T_E5_Is = 0x3070; // 4 Byte Integer
-//constexpr uint16_t VP_T_E5_Set = 0x3072; // 2 Byte Integer
-//constexpr uint16_t VP_T_E5_Is = 0x3074; // 4 Byte Integer
-//constexpr uint16_t VP_T_E5_Set = 0x3076; // 2 Byte Integer
-//constexpr uint16_t VP_T_E6_Is = 0x3078; // 4 Byte Integer
-//constexpr uint16_t VP_T_E6_Set = 0x307A; // 2 Byte Integer
+//constexpr uint16_t VP_T_E1_Set = 0x3066; // 2 Byte Integer
+//constexpr uint16_t VP_T_E2_Is = 0x3068; // 4 Byte Integer
+//constexpr uint16_t VP_T_E2_Set = 0x306A; // 2 Byte Integer
+//constexpr uint16_t VP_T_E3_Is = 0x306C; // 4 Byte Integer
+//constexpr uint16_t VP_T_E3_Set = 0x306E; // 2 Byte Integer
+//constexpr uint16_t VP_T_E4_Is = 0x3070; // 4 Byte Integer
+//constexpr uint16_t VP_T_E4_Set = 0x3072; // 2 Byte Integer
+//constexpr uint16_t VP_T_E4_Is = 0x3074; // 4 Byte Integer
+//constexpr uint16_t VP_T_E4_Set = 0x3076; // 2 Byte Integer
+//constexpr uint16_t VP_T_E5_Is = 0x3078; // 4 Byte Integer
+//constexpr uint16_t VP_T_E5_Set = 0x307A; // 2 Byte Integer
constexpr uint16_t VP_T_Bed_Is = 0x3080; // 4 Byte Integer
constexpr uint16_t VP_T_Bed_Set = 0x3082; // 2 Byte Integer
-constexpr uint16_t VP_Flowrate_E1 = 0x3090; // 2 Byte Integer
-constexpr uint16_t VP_Flowrate_E2 = 0x3092; // 2 Byte Integer
+constexpr uint16_t VP_Flowrate_E0 = 0x3090; // 2 Byte Integer
+constexpr uint16_t VP_Flowrate_E1 = 0x3092; // 2 Byte Integer
// reserved for up to 6 Extruders:
-//constexpr uint16_t VP_Flowrate_E3 = 0x3094;
-//constexpr uint16_t VP_Flowrate_E4 = 0x3096;
-//constexpr uint16_t VP_Flowrate_E5 = 0x3098;
-//constexpr uint16_t VP_Flowrate_E6 = 0x309A;
+//constexpr uint16_t VP_Flowrate_E2 = 0x3094;
+//constexpr uint16_t VP_Flowrate_E3 = 0x3096;
+//constexpr uint16_t VP_Flowrate_E4 = 0x3098;
+//constexpr uint16_t VP_Flowrate_E5 = 0x309A;
constexpr uint16_t VP_Fan_Percentage = 0x3100; // 2 Byte Integer (0..100)
constexpr uint16_t VP_Feedrate_Percentage = 0x3102; // 2 Byte Integer (0..100)
@@ -182,9 +182,9 @@ constexpr uint16_t VP_SD_FileName4 = 0x3280;
// located at 0x5000 and up
// Not used yet!
// This can be used e.g to make controls / data display invisible
-constexpr uint16_t SP_T_E1_Is = 0x5000;
-constexpr uint16_t SP_T_E1_Set = 0x5010;
-constexpr uint16_t SP_T_E2_Is = 0x5020;
+constexpr uint16_t SP_T_E0_Is = 0x5000;
+constexpr uint16_t SP_T_E0_Set = 0x5010;
+constexpr uint16_t SP_T_E1_Is = 0x5020;
constexpr uint16_t SP_T_Bed_Is = 0x5030;
constexpr uint16_t SP_T_Bed_Set = 0x5040;
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h
index 7e051be75a..90fd615a5d 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/compat.h
@@ -38,11 +38,6 @@
// __MARLIN_FIRMWARE__ exists when compiled within Marlin.
#include "pin_mappings.h"
#else
- // Messages that are declared in Marlin
- #define WELCOME_MSG "Printer Ready"
- #define MSG_MEDIA_INSERTED "Media Inserted"
- #define MSG_MEDIA_REMOVED "Media Removed"
-
namespace UI {
static inline uint32_t safe_millis() {return millis();};
static inline void yield() {};
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h
index 694a94b908..fb66e6d77e 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language.h
@@ -20,70 +20,6 @@
****************************************************************************/
#pragma once
-typedef const char Language_Str[];
-
-// Count how many languages are defined.
-
-#if defined(LCD_LANGUAGE_5)
- #define NUM_LANGUAGES 5
-#elif defined(LCD_LANGUAGE_4)
- #define NUM_LANGUAGES 4
-#elif defined(LCD_LANGUAGE_3)
- #define NUM_LANGUAGES 3
-#elif defined(LCD_LANGUAGE_2)
- #define NUM_LANGUAGES 2
-#else
- #define NUM_LANGUAGES 1
-#endif
-
-// Set undefined languages equal to the last and
-// let the compiler optimize out the duplicates
-
-#ifndef LCD_LANGUAGE_1
- #define LCD_LANGUAGE_1 LCD_LANGUAGE
-#endif
-
-#ifndef LCD_LANGUAGE_2
- #define LCD_LANGUAGE_2 LCD_LANGUAGE_1
-#endif
-
-#ifndef LCD_LANGUAGE_3
- #define LCD_LANGUAGE_3 LCD_LANGUAGE_2
-#endif
-
-#ifndef LCD_LANGUAGE_4
- #define LCD_LANGUAGE_4 LCD_LANGUAGE_3
-#endif
-
-#ifndef LCD_LANGUAGE_5
- #define LCD_LANGUAGE_5 LCD_LANGUAGE_4
-#endif
-
-// Indirection required to paste together the namespace name
-
-#define _GET_LANG(LANG) Language_##LANG
-#define GET_LANG(LANG) _GET_LANG(LANG)
-
-#if NUM_LANGUAGES > 1
- extern uint8_t lang;
- // The compiler does a good job of "flattening" out this
- // if statement when there are fewer than five languages.
- #define GET_TEXT(MSG) ( \
- lang == 0 ? GET_LANG(LCD_LANGUAGE_1)::MSG : \
- lang == 1 ? GET_LANG(LCD_LANGUAGE_2)::MSG : \
- lang == 2 ? GET_LANG(LCD_LANGUAGE_3)::MSG : \
- lang == 3 ? GET_LANG(LCD_LANGUAGE_4)::MSG : \
- GET_LANG(LCD_LANGUAGE_5)::MSG \
- )
-#else
- #define GET_TEXT(MSG) GET_LANG(LCD_LANGUAGE_1)::MSG
-#endif
-#define GET_TEXT_F(MSG) reinterpret_cast(GET_TEXT(MSG))
-
-#define GET_LANGUAGE_NAME(N) GET_LANG(LCD_LANGUAGE_##N)::LANGUAGE
-
-// All the language tables go here
-
#include "language_en.h"
#include "language_de.h"
#include "language_fr.h"
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h
index 3c26bfb3d8..f00c50591e 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_de.h
@@ -24,8 +24,6 @@
namespace Language_de {
using namespace Language_en; // Inherit undefined strings from English
- PROGMEM Language_Str LANGUAGE = u8"Deutsche";
-
PROGMEM Language_Str YES = u8"JA";
PROGMEM Language_Str NO = u8"NEIN";
PROGMEM Language_Str BACK = u8"Zurück";
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h
index d9bd63eb35..1485b0838e 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_en.h
@@ -24,8 +24,6 @@
#include "language.h"
namespace Language_en {
- PROGMEM Language_Str LANGUAGE = u8"English";
-
PROGMEM Language_Str YES = u8"Yes";
PROGMEM Language_Str NO = u8"No";
PROGMEM Language_Str BACK = u8"Back";
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h
index a9ad20d320..64582219ce 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/language/language_fr.h
@@ -24,8 +24,6 @@
namespace Language_fr {
using namespace Language_en; // Inherit undefined strings from English
- PROGMEM Language_Str LANGUAGE = u8"Français";
-
PROGMEM Language_Str YES = u8"oui";
PROGMEM Language_Str NO = u8"non";
PROGMEM Language_Str BACK = u8"Retour";
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp
index 38d7c7985f..e61033ee3a 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/marlin_events.cpp
@@ -38,19 +38,21 @@ namespace ExtUI {
EventLoop::loop();
}
- void onPrinterKilled(PGM_P lcd_msg) {
- KillScreen::show(progmem_str(lcd_msg));
+ void onPrinterKilled(PGM_P const error, PGM_P const component) {
+ char str[strlen_P(error) + strlen_P(component) + 3];
+ sprintf_P(str, PSTR(S_FMT ": " S_FMT), error, component);
+ KillScreen::show(str);
}
void onMediaInserted() {
if (AT_SCREEN(StatusScreen))
- StatusScreen::setStatusMessage(F(MSG_MEDIA_INSERTED));
+ StatusScreen::setStatusMessage(GET_TEXT_F(MSG_MEDIA_INSERTED));
sound.play(media_inserted, PLAY_ASYNCHRONOUS);
}
void onMediaRemoved() {
if (AT_SCREEN(StatusScreen))
- StatusScreen::setStatusMessage(F(MSG_MEDIA_REMOVED));
+ StatusScreen::setStatusMessage(GET_TEXT_F(MSG_MEDIA_REMOVED));
sound.play(media_removed, PLAY_ASYNCHRONOUS);
if (AT_SCREEN(FilesScreen)) {
GOTO_SCREEN(StatusScreen)
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp
index 117d426999..47a71f836d 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/boot_screen.cpp
@@ -85,10 +85,10 @@ void BootScreen::onIdle() {
PUSH_SCREEN(StatusScreen);
PUSH_SCREEN(BioConfirmHomeE);
#elif NUM_LANGUAGES > 1
- StatusScreen::setStatusMessage(F(WELCOME_MSG));
+ StatusScreen::setStatusMessage(GET_TEXT_F(WELCOME_MSG));
GOTO_SCREEN(LanguageMenu);
#else
- StatusScreen::setStatusMessage(F(WELCOME_MSG));
+ StatusScreen::setStatusMessage(GET_TEXT_F(WELCOME_MSG));
GOTO_SCREEN(StatusScreen);
#endif
}
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp
index 740ca4e0e6..05dccf96f3 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/endstop_state_screen.cpp
@@ -32,10 +32,12 @@ using namespace ExtUI;
void EndstopStatesScreen::onEntry() {
BaseScreen::onEntry();
+ enable_emi_pins(true);
}
void EndstopStatesScreen::onExit() {
BaseScreen::onExit();
+ enable_emi_pins(false);
}
void EndstopStatesScreen::onRedraw(draw_mode_t) {
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp
index 7aa8a081e4..853491032e 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/kill_screen.cpp
@@ -32,7 +32,7 @@ using namespace FTDI;
// loop. So we only have a show() method rather than onRedraw(). The KillScreen
// should not be used as a model for other UI screens as it is an exception.
-void KillScreen::show(progmem_str message) {
+void KillScreen::show(const char *message) {
CommandProcessor cmd;
cmd.cmd(CMD_DLSTART)
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp
index dafa91de74..2a4569244d 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/max_acceleration_screen.cpp
@@ -39,15 +39,15 @@ void MaxAccelerationScreen::onRedraw(draw_mode_t what) {
w.color(y_axis) .adjuster( 4, GET_TEXT_F(AMAX_Y), getAxisMaxAcceleration_mm_s2(Y) );
w.color(z_axis) .adjuster( 6, GET_TEXT_F(AMAX_Z), getAxisMaxAcceleration_mm_s2(Z) );
#if EXTRUDERS == 1 || DISABLED(DISTINCT_E_FACTORS)
- w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
+ w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) );
#elif EXTRUDERS > 1
- w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E0) );
- w.color(e_axis).adjuster(10, GET_TEXT_F(AMAX_E2), getAxisMaxAcceleration_mm_s2(E1) );
+ w.color(e_axis).adjuster( 8, GET_TEXT_F(AMAX_E0), getAxisMaxAcceleration_mm_s2(E0) );
+ w.color(e_axis).adjuster(10, GET_TEXT_F(AMAX_E1), getAxisMaxAcceleration_mm_s2(E1) );
#if EXTRUDERS > 2
- w.color(e_axis).adjuster(12, GET_TEXT_F(AMAX_E3), getAxisMaxAcceleration_mm_s2(E2) );
+ w.color(e_axis).adjuster(12, GET_TEXT_F(AMAX_E2), getAxisMaxAcceleration_mm_s2(E2) );
#endif
#if EXTRUDERS > 3
- w.color(e_axis).adjuster(14, GET_TEXT_F(AMAX_E4), getAxisMaxAcceleration_mm_s2(E3) );
+ w.color(e_axis).adjuster(14, GET_TEXT_F(AMAX_E3), getAxisMaxAcceleration_mm_s2(E3) );
#endif
#endif
w.increments();
diff --git a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h
index 0f52ed0363..a781564644 100644
--- a/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h
+++ b/Marlin/src/lcd/extensible_ui/lib/lulzbot/screens/screens.h
@@ -135,7 +135,7 @@ class KillScreen {
// The KillScreen is behaves differently than the
// others, so we do not bother extending UIScreen.
public:
- static void show(progmem_str msg);
+ static void show(const char*);
};
class DialogBoxBaseClass : public BaseScreen {
diff --git a/Marlin/src/lcd/extensible_ui/ui_api.cpp b/Marlin/src/lcd/extensible_ui/ui_api.cpp
index 206befe7cc..66f4edd5de 100644
--- a/Marlin/src/lcd/extensible_ui/ui_api.cpp
+++ b/Marlin/src/lcd/extensible_ui/ui_api.cpp
@@ -939,6 +939,12 @@ namespace ExtUI {
ui.abort_print();
}
+ void onUserConfirmRequired_P(PGM_P const pstr) {
+ char msg[strlen_P(pstr) + 1];
+ strcpy_P(msg, pstr);
+ onUserConfirmRequired(msg);
+ }
+
FileList::FileList() { refresh(); }
void FileList::refresh() { num_files = 0xFFFF; }
@@ -1036,11 +1042,11 @@ void MarlinUI::update() {
ExtUI::onIdle();
}
-void MarlinUI::kill_screen(PGM_P const msg) {
+void MarlinUI::kill_screen(PGM_P const error, PGM_P const component) {
using namespace ExtUI;
if (!flags.printer_killed) {
flags.printer_killed = true;
- onPrinterKilled(msg);
+ onPrinterKilled(error, component);
}
}
diff --git a/Marlin/src/lcd/extensible_ui/ui_api.h b/Marlin/src/lcd/extensible_ui/ui_api.h
index 393b19d307..d929183949 100644
--- a/Marlin/src/lcd/extensible_ui/ui_api.h
+++ b/Marlin/src/lcd/extensible_ui/ui_api.h
@@ -293,12 +293,13 @@ namespace ExtUI {
void onMediaError();
void onMediaRemoved();
void onPlayTone(const uint16_t frequency, const uint16_t duration);
- void onPrinterKilled(PGM_P const msg);
+ void onPrinterKilled(PGM_P const error, PGM_P const component);
void onPrintTimerStarted();
void onPrintTimerPaused();
void onPrintTimerStopped();
void onFilamentRunout(const extruder_t extruder);
void onUserConfirmRequired(const char * const msg);
+ void onUserConfirmRequired_P(PGM_P const pstr);
void onStatusChanged(const char * const msg);
void onFactoryReset();
void onStoreSettings(char *);
diff --git a/Marlin/src/lcd/extui_dgus_lcd.cpp b/Marlin/src/lcd/extui_dgus_lcd.cpp
index 484a333095..e57355bcd0 100644
--- a/Marlin/src/lcd/extui_dgus_lcd.cpp
+++ b/Marlin/src/lcd/extui_dgus_lcd.cpp
@@ -43,8 +43,8 @@ namespace ExtUI {
void onIdle() { ScreenHandler.loop(); }
- void onPrinterKilled(const char* msg) {
- ScreenHandler.sendinfoscreen(PSTR(MSG_HALTED), msg, PSTR(""), PSTR(MSG_PLEASE_RESET), true, true, true, true);
+ void onPrinterKilled(PGM_P error, PGM_P component) {
+ ScreenHandler.sendinfoscreen(GET_TEXT(MSG_HALTED), error, PSTR(""), GET_TEXT(MSG_PLEASE_RESET), true, true, true, true);
ScreenHandler.GotoScreen(DGUSLCD_SCREEN_KILL);
while (!ScreenHandler.loop()); // Wait while anything is left to be sent
}
@@ -59,7 +59,7 @@ namespace ExtUI {
void onPrintTimerStopped() {}
void onFilamentRunout(const extruder_t extruder) {}
- void onUserConfirmRequired(const char *msg) {
+ void onUserConfirmRequired(const char * const msg) {
if (msg) {
ScreenHandler.sendinfoscreen(PSTR("Please confirm."), nullptr, msg, nullptr, true, true, false, true);
ScreenHandler.SetupConfirmAction(ExtUI::setUserConfirmed);
diff --git a/Marlin/src/lcd/extui_example.cpp b/Marlin/src/lcd/extui_example.cpp
index 35a0215c37..9bdc0ddfe9 100644
--- a/Marlin/src/lcd/extui_example.cpp
+++ b/Marlin/src/lcd/extui_example.cpp
@@ -46,7 +46,7 @@ namespace ExtUI {
*/
}
void onIdle() {}
- void onPrinterKilled(PGM_P const msg) {}
+ void onPrinterKilled(PGM_P const error, PGM_P const component) {}
void onMediaInserted() {};
void onMediaError() {};
void onMediaRemoved() {};
diff --git a/Marlin/src/lcd/extui_malyan_lcd.cpp b/Marlin/src/lcd/extui_malyan_lcd.cpp
index e6605c10be..61d4a7d761 100644
--- a/Marlin/src/lcd/extui_malyan_lcd.cpp
+++ b/Marlin/src/lcd/extui_malyan_lcd.cpp
@@ -464,9 +464,11 @@ namespace ExtUI {
}
// {E:} is for error states.
- void onPrinterKilled(PGM_P msg) {
+ void onPrinterKilled(PGM_P error, PGM_P component) {
write_to_lcd_P(PSTR("{E:"));
- write_to_lcd_P(msg);
+ write_to_lcd_P(error);
+ write_to_lcd_P(PSTR(" "));
+ write_to_lcd_P(component);
write_to_lcd_P("}");
}
diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h
index 56c785ab13..45d19e85c1 100644
--- a/Marlin/src/lcd/language/language_an.h
+++ b/Marlin/src/lcd/language/language_an.h
@@ -32,225 +32,263 @@
#define DISPLAY_CHARSET_ISO10646_1
#define NOT_EXTENDED_ISO10646_1_5X7
-#define WELCOME_MSG MACHINE_NAME _UxGT(" parada.")
-#define MSG_MEDIA_INSERTED _UxGT("Tarcheta mesa")
-#define MSG_MEDIA_REMOVED _UxGT("Tarcheta sacada")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Menu prencipal")
-#define MSG_AUTOSTART _UxGT("Inicio automatico")
-#define MSG_DISABLE_STEPPERS _UxGT("Amortar motors")
-#define MSG_AUTO_HOME _UxGT("Levar a l'orichen")
-#define MSG_AUTO_HOME_X _UxGT("Orichen X")
-#define MSG_AUTO_HOME_Y _UxGT("Orichen Y")
-#define MSG_AUTO_HOME_Z _UxGT("Orichen Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Orichen XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Encetar (pretar)")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Vinient punto")
-#define MSG_LEVEL_BED_DONE _UxGT("Nivelacion feita!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Achustar desfases")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Desfase aplicau")
-#define MSG_SET_ORIGIN _UxGT("Establir orichen")
-#define MSG_PREHEAT_1 _UxGT("Precalentar " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Tot")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Base")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Conf")
-#define MSG_PREHEAT_2 _UxGT("Precalentar " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Tot")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Base")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Conf")
-#define MSG_COOLDOWN _UxGT("Enfriar")
-#define MSG_SWITCH_PS_ON _UxGT("Enchegar Fuent")
-#define MSG_SWITCH_PS_OFF _UxGT("Amortar Fuent")
-#define MSG_EXTRUDE _UxGT("Extruir")
-#define MSG_RETRACT _UxGT("Retraer")
-#define MSG_MOVE_AXIS _UxGT("Mover Eixes")
-#define MSG_BED_LEVELING _UxGT("Nivelar base")
-#define MSG_LEVEL_BED _UxGT("Nivelar base")
-#define MSG_MOVE_X _UxGT("Mover X")
-#define MSG_MOVE_Y _UxGT("Mover Y")
-#define MSG_MOVE_Z _UxGT("Mover Z")
-#define MSG_MOVE_E _UxGT("Extrusor")
-#define MSG_MOVE_Z_DIST _UxGT("Mover %smm")
-#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mover 1mm")
-#define MSG_MOVE_10MM _UxGT("Mover 10mm")
-#define MSG_SPEED _UxGT("Velocidat")
-#define MSG_BED_Z _UxGT("Base Z")
-#define MSG_NOZZLE _UxGT("Boquilla")
-#define MSG_BED _UxGT("Base")
-#define MSG_FAN_SPEED _UxGT("Ixoriador")
-#define MSG_FLOW _UxGT("Fluxo")
-#define MSG_CONTROL _UxGT("Control")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Temperatura Auto.")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Trigar")
-#define MSG_ACC _UxGT("Aceleracion")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT("Vmax")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("Vel. viache min")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Acel. max")
-#define MSG_A_RETRACT _UxGT("Acel. retrac.")
-#define MSG_A_TRAVEL _UxGT("Acel. Viaje")
-#define MSG_STEPS_PER_MM _UxGT("Trangos/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A trangos/mm")
- #define MSG_BSTEPS _UxGT("B trangos/mm")
- #define MSG_CSTEPS _UxGT("C trangos/mm")
-#else
- #define MSG_ASTEPS _UxGT("X trangos/mm")
- #define MSG_BSTEPS _UxGT("Y trangos/mm")
- #define MSG_CSTEPS _UxGT("Z trangos/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E trangos/mm")
-#define MSG_E0_STEPS _UxGT("E1 trangos/mm")
-#define MSG_E1_STEPS _UxGT("E2 trangos/mm")
-#define MSG_E2_STEPS _UxGT("E3 trangos/mm")
-#define MSG_E3_STEPS _UxGT("E4 trangos/mm")
-#define MSG_E4_STEPS _UxGT("E5 trangos/mm")
-#define MSG_E5_STEPS _UxGT("E6 trangos/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movimiento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_CONTRAST _UxGT("Contraste")
-#define MSG_STORE_EEPROM _UxGT("Alzar memoria")
-#define MSG_LOAD_EEPROM _UxGT("Cargar memoria")
-#define MSG_RESTORE_FAILSAFE _UxGT("Restaurar memoria")
-#define MSG_REFRESH _UxGT("Tornar a cargar")
-#define MSG_WATCH _UxGT("Informacion")
-#define MSG_PREPARE _UxGT("Preparar")
-#define MSG_TUNE _UxGT("Achustar")
-#define MSG_PAUSE_PRINT _UxGT("Pausar impresion")
-#define MSG_RESUME_PRINT _UxGT("Contin. impresion")
-#define MSG_STOP_PRINT _UxGT("Detener Impresion")
-#define MSG_MEDIA_MENU _UxGT("Menu de SD")
-#define MSG_NO_MEDIA _UxGT("No i hai tarcheta")
-#define MSG_DWELL _UxGT("Reposo...")
-#define MSG_USERWAIT _UxGT("Aguardand ordines")
-#define MSG_PRINT_ABORTED _UxGT("Impres. cancelada")
-#define MSG_NO_MOVE _UxGT("Sin movimiento")
-#define MSG_KILLED _UxGT("Aturada d'emerch.")
-#define MSG_STOPPED _UxGT("Aturada.")
-#define MSG_CONTROL_RETRACT _UxGT("Retraer mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Retraer mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retraer F")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Devantar mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Swap DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("DesRet F")
-#define MSG_AUTORETRACT _UxGT("Retraccion auto.")
-#define MSG_FILAMENTCHANGE _UxGT("Cambear filamento")
-#define MSG_INIT_MEDIA _UxGT("Encetan. tarcheta")
-#define MSG_CHANGE_MEDIA _UxGT("Cambiar tarcheta")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z fuera")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Auto-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Desfase Z")
-#define MSG_BABYSTEP_X _UxGT("Micropaso X")
-#define MSG_BABYSTEP_Y _UxGT("Micropaso Y")
-#define MSG_BABYSTEP_Z _UxGT("Micropaso Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Cancelado - Endstop")
-#define MSG_HEATING_FAILED_LCD _UxGT("Error: en calentar")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Error: temperatura")
-#define MSG_THERMAL_RUNAWAY _UxGT("Error de temperatura")
-#define MSG_ERR_MAXTEMP _UxGT("Error: Temp Maxima")
-#define MSG_ERR_MINTEMP _UxGT("Error: Temp Menima")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Error: Temp Max base")
-#define MSG_ERR_MINTEMP_BED _UxGT("Error: Temp Min base")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY first")
-#define MSG_HALTED _UxGT("IMPRESORA ATURADA")
-#define MSG_PLEASE_RESET _UxGT("Per favor reinic.")
-#define MSG_SHORT_DAY _UxGT("d")
-#define MSG_SHORT_HOUR _UxGT("h")
-#define MSG_SHORT_MINUTE _UxGT("m")
-#define MSG_HEATING _UxGT("Calentando...")
-#define MSG_BED_HEATING _UxGT("Calentando base...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibracion Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
+namespace Language_an {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_INFO_MENU _UxGT("Inf. Impresora")
-#define MSG_INFO_PRINTER_MENU _UxGT("Inf. Impresora")
-#define MSG_INFO_STATS_MENU _UxGT("Estadisticas Imp.")
-#define MSG_INFO_BOARD_MENU _UxGT("Inf. Controlador")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistors")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrusors")
-#define MSG_INFO_BAUDRATE _UxGT("Baudios")
-#define MSG_INFO_PROTOCOL _UxGT("Protocolo")
-#define MSG_CASE_LIGHT _UxGT("Luz")
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Aragonese");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Conteo de impresion")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Tiempo total d'imp.")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Impresion mas larga")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total d'extrusion")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Impresions")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Mas larga")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrusion")
-#endif
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" parada.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Tarcheta mesa");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Tarcheta sacada");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu prencipal");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Inicio automatico");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Amortar motors");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Levar a l'orichen");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Orichen X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Orichen Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Orichen Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Orichen XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Encetar (pretar)");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Vinient punto");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Nivelacion feita!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Achustar desfases");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicau");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Establir orichen");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Precalentar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Precal. ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Precal. ") PREHEAT_2_LABEL _UxGT(" Boquilla ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Tot");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Base");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Conf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Enfriar");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Enchegar Fuent");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Amortar Fuent");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extruir");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retraer");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mover Eixes");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Nivelar base");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Nivelar base");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mover X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mover Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mover Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mover %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mover 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mover 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mover 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocidat");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Base Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Boquilla");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Boquilla ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Boquilla ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Boquilla ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Boquilla ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Boquilla ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Boquilla ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Base");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ixoriador");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Ixoriador 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Ixoriador 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Ixoriador 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxo");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Fluxo ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Fluxo ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Fluxo ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Fluxo ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Fluxo ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Fluxo ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Temperatura Auto.");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Trigar");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Trigar ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Trigar ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Trigar ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Trigar ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Trigar ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Trigar ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Aceleracion");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vel. viache min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accel");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Acel. max") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Acel. max") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Acel. max") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Acel. max") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Acel. max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Acel. max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Acel. max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Acel. max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Acel. max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Acel. max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Acel. retrac.");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Acel. Viaje");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Trangos/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E trangos/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" trangos/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movimiento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Alzar memoria");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar memoria");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaurar memoria");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Tornar a cargar");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Informacion");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Achustar");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausar impresion");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Contin. impresion");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Detener Impresion");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Menu de SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("No i hai tarcheta");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Reposo...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Aguardand ordines");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impres. cancelada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sin movimiento");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("Aturada d'emerch.");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("Aturada.");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retraer mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retraer mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retraer F");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Devantar mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet F");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Retraccion auto.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Cambear filamento");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Cambear filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Cambear filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Cambear filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Cambear filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Cambear filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Cambear filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Encetan. tarcheta");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Cambiar tarcheta");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Micropaso X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Micropaso Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Micropaso Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Error: en calentar");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Error: temperatura");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Error de temperatura");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Error: Temp Max");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Error: Temp Min");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY first");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("IMPRESORA ATURADA");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Per favor reinic.");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d");
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h");
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Calentando...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Calentando base...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro");
-#define MSG_INFO_MIN_TEMP _UxGT("Temperatura menima")
-#define MSG_INFO_MAX_TEMP _UxGT("Temperatura maxima")
-#define MSG_INFO_PSU _UxGT("Fuente de aliment")
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Inf. Impresora");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Inf. Impresora");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Estadisticas Imp.");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Inf. Controlador");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrusors");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baudios");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocolo");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Luz");
-#define MSG_DRIVE_STRENGTH _UxGT("Fuerza d'o driver")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Escri. DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Conteo de impresion");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tiempo total d'imp.");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Impresion mas larga");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total d'extrusion");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Impresions");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Mas larga");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrusion");
+ #endif
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Aguardand iniciar")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temperatura menima");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temperatura maxima");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Fuente de aliment");
-#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Meta o filamento")
-#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("y prete lo boton")
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Fuerza d'o driver");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Escri. DAC EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Resumir imp.");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("d'o filamento")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("cambear")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("pa continar...")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("d'o fil. cambear")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Meta o filamento")
-#endif // LCD_HEIGHT < 4
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
-#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Aguardando a")
-#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("expulsar filament")
-#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Aguardando a")
-#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("cargar filamento")
-#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Aguardando impre.")
-#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("pa continar")
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar..."));
+ #else // LCD_HEIGHT < 4
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton"));
+ #endif // LCD_HEIGHT < 4
+
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Aguardando a", "expulsar filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Aguardando a", "cargar filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Aguardando impre.", "pa continar"));
+}
diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h
index 8367eb7990..7d1bc74751 100644
--- a/Marlin/src/lcd/language/language_bg.h
+++ b/Marlin/src/lcd/language/language_bg.h
@@ -28,120 +28,178 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
-#define DISPLAY_CHARSET_ISO10646_5
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" Готов.")
-#define MSG_MEDIA_INSERTED _UxGT("Картата е поставена")
-#define MSG_MEDIA_REMOVED _UxGT("Картата е извадена")
-#define MSG_MAIN _UxGT("Меню")
-#define MSG_AUTOSTART _UxGT("Автостарт")
-#define MSG_DISABLE_STEPPERS _UxGT("Изкл. двигатели")
-#define MSG_AUTO_HOME _UxGT("Паркиране")
-#define MSG_SET_HOME_OFFSETS _UxGT("Задай Начало")
-#define MSG_SET_ORIGIN _UxGT("Изходна точка")
-#define MSG_PREHEAT_1 _UxGT("Подгряване " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Подгряване " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_ALL _UxGT("Подгр. " PREHEAT_1_LABEL " Всички")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Подгр. " PREHEAT_1_LABEL " Легло")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Настройки " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_2 _UxGT("Подгряване " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Подгряване " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_ALL _UxGT("Подгр. " PREHEAT_2_LABEL " Всички")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Подгр. " PREHEAT_2_LABEL " Легло")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Настройки " PREHEAT_2_LABEL)
-#define MSG_COOLDOWN _UxGT("Охлаждане")
-#define MSG_SWITCH_PS_ON _UxGT("Вкл. захранване")
-#define MSG_SWITCH_PS_OFF _UxGT("Изкл. захранване")
-#define MSG_EXTRUDE _UxGT("Екструзия")
-#define MSG_RETRACT _UxGT("Откат")
-#define MSG_MOVE_AXIS _UxGT("Движение по ос")
-#define MSG_BED_LEVELING _UxGT("Нивелиране")
-#define MSG_LEVEL_BED _UxGT("Нивелиране")
-#define MSG_MOVE_X _UxGT("Движение по X")
-#define MSG_MOVE_Y _UxGT("Движение по Y")
-#define MSG_MOVE_Z _UxGT("Движение по Z")
-#define MSG_MOVE_E _UxGT("Екструдер")
-#define MSG_MOVE_Z_DIST _UxGT("Премести с %smm")
-#define MSG_MOVE_01MM _UxGT("Премести с 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Премести с 1mm")
-#define MSG_MOVE_10MM _UxGT("Премести с 10mm")
-#define MSG_SPEED _UxGT("Скорост")
-#define MSG_BED_Z _UxGT("Bed Z")
-#define MSG_NOZZLE LCD_STR_THERMOMETER _UxGT(" Дюза")
-#define MSG_BED LCD_STR_THERMOMETER _UxGT(" Легло")
-#define MSG_FAN_SPEED _UxGT("Вентилатор")
-#define MSG_FLOW _UxGT("Поток")
-#define MSG_CONTROL _UxGT("Управление")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Минимум")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Максимум")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Фактор")
-#define MSG_AUTOTEMP _UxGT("Авто-темп.")
-#define MSG_LCD_ON _UxGT("Вкл.")
-#define MSG_LCD_OFF _UxGT("Изкл.")
-#define MSG_A_RETRACT _UxGT("A-откат")
-#define MSG_A_TRAVEL _UxGT("A-travel")
-#define MSG_STEPS_PER_MM _UxGT("Стъпки/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Aстъпки/mm")
- #define MSG_BSTEPS _UxGT("Bстъпки/mm")
- #define MSG_CSTEPS _UxGT("Cстъпки/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xстъпки/mm")
- #define MSG_BSTEPS _UxGT("Yстъпки/mm")
- #define MSG_CSTEPS _UxGT("Zстъпки/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E стъпки/mm")
-#define MSG_E0_STEPS _UxGT("E1 стъпки/mm")
-#define MSG_E1_STEPS _UxGT("E2 стъпки/mm")
-#define MSG_E2_STEPS _UxGT("E3 стъпки/mm")
-#define MSG_E3_STEPS _UxGT("E4 стъпки/mm")
-#define MSG_E4_STEPS _UxGT("E5 стъпки/mm")
-#define MSG_E5_STEPS _UxGT("E6 стъпки/mm")
-#define MSG_TEMPERATURE _UxGT("Температура")
-#define MSG_MOTION _UxGT("Движение")
-#define MSG_FILAMENT _UxGT("Нишка")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Диам. нишка")
-#define MSG_CONTRAST _UxGT("LCD контраст")
-#define MSG_STORE_EEPROM _UxGT("Запази в EPROM")
-#define MSG_LOAD_EEPROM _UxGT("Зареди от EPROM")
-#define MSG_RESTORE_FAILSAFE _UxGT("Фабрични настройки")
-#define MSG_REFRESH LCD_STR_REFRESH _UxGT("Обнови")
-#define MSG_WATCH _UxGT("Преглед")
-#define MSG_PREPARE _UxGT("Действия")
-#define MSG_TUNE _UxGT("Настройка")
-#define MSG_PAUSE_PRINT _UxGT("Пауза")
-#define MSG_RESUME_PRINT _UxGT("Възобнови печата")
-#define MSG_STOP_PRINT _UxGT("Спри печата")
-#define MSG_MEDIA_MENU _UxGT("Меню карта")
-#define MSG_NO_MEDIA _UxGT("Няма карта")
-#define MSG_DWELL _UxGT("Почивка...")
-#define MSG_USERWAIT _UxGT("Изчакване")
-#define MSG_PRINT_ABORTED _UxGT("Печатът е прекъснат")
-#define MSG_NO_MOVE _UxGT("Няма движение")
-#define MSG_KILLED _UxGT("УБИТО.")
-#define MSG_STOPPED _UxGT("СПРЯНО.")
-#define MSG_CONTROL_RETRACT _UxGT("Откат mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Смяна Откат mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Откат V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Скок mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Възврат mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Смяна Възврат mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Възврат V")
-#define MSG_AUTORETRACT _UxGT("Автоoткат")
-#define MSG_FILAMENTCHANGE _UxGT("Смяна нишка")
-#define MSG_INIT_MEDIA _UxGT("Иниц. SD-Карта")
-#define MSG_CHANGE_MEDIA _UxGT("Смяна SD-Карта")
-#define MSG_ZPROBE_OUT _UxGT("Z-сондата е извадена")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Отстояние")
-#define MSG_BABYSTEP_X _UxGT("Министъпка X")
-#define MSG_BABYSTEP_Y _UxGT("Министъпка Y")
-#define MSG_BABYSTEP_Z _UxGT("Министъпка Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Стоп Кр.Изключватели")
-#define MSG_DELTA_CALIBRATE _UxGT("Делта Калибровка")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Калибровка X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Калибровка Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Калибровка Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Калибровка Център")
-#define MSG_EXPECTED_PRINTER _UxGT("Неправилен принтер")
+#define DISPLAY_CHARSET_ISO10646_5
+
+namespace Language_bg {
+ using namespace Language_en; // Inherit undefined strings from English
+
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Bulgarian");
+
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" Готов.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Картата е поставена");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Картата е извадена");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Меню");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Автостарт");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Изкл. двигатели");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Паркиране");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Задай Начало");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Изходна точка");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Подгряване ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Подгряване ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Настройки ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Подгряване ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Подгряване ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Подгряване ") PREHEAT_2_LABEL _UxGT(" Дюза ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Всички");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Подгр. ") PREHEAT_2_LABEL _UxGT(" Легло");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Настройки ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Охлаждане");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Вкл. захранване");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Изкл. захранване");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Екструзия");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Откат");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Движение по ос");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Нивелиране");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Нивелиране");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Движение по X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Движение по Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Движение по Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Екструдер");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Екструдер ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Екструдер ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Екструдер ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Екструдер ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Екструдер ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Екструдер ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Премести с %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Премести с 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Премести с 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Премести с 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Скорост");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Bed Z");
+ PROGMEM Language_Str MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Дюза");
+ PROGMEM Language_Str MSG_NOZZLE_0 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = " " LCD_STR_THERMOMETER _UxGT(" Дюза ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Легло");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Вентилатор");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Вентилатор 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Вентилатор 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Вентилатор 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Поток");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Поток ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Поток ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Поток ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Поток ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Поток ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Поток ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Управление");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Минимум");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Максимум");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Авто-темп.");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Вкл.");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Изкл.");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-откат");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-travel");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Стъпки/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("стъпки/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("стъпки/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("стъпки/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E стъпки/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" стъпки/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Температура");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Движение");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Нишка");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Диам. нишка");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Диам. нишка ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Диам. нишка ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Диам. нишка ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Диам. нишка ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Диам. нишка ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Диам. нишка ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD контраст");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Запази в EPROM");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Зареди от EPROM");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Фабрични настройки");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Обнови");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Преглед");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Действия");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Настройка");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Пауза");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Възобнови печата");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Спри печата");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Меню карта");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Няма карта");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Почивка...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Изчакване");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Печатът е прекъснат");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Няма движение");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("УБИТО.");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("СПРЯНО.");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Откат mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Смяна Откат mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Откат V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Скок mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Възврат mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Смяна Възврат mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Възврат V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Автоoткат");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Смяна нишка");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Смяна нишка ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Смяна нишка ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Смяна нишка ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Смяна нишка ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Смяна нишка ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Смяна нишка ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Иниц. SD-Карта");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Смяна SD-Карта");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z-сондата е извадена");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z Отстояние");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Министъпка X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Министъпка Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Министъпка Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Стоп Кр.Изключватели");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Делта Калибровка");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Калибровка X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровка Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровка Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровка Център");
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Неправилен принтер");
+}
diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h
index 571d12bd1c..21d5329db3 100644
--- a/Marlin/src/lcd/language/language_ca.h
+++ b/Marlin/src/lcd/language/language_ca.h
@@ -28,236 +28,263 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_ca {
+ using namespace Language_en; // Inherit undefined strings from English
-#define CHARSIZE 2
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Catalan");
-#define WELCOME_MSG MACHINE_NAME _UxGT(" preparada.")
-#define MSG_MEDIA_INSERTED _UxGT("Targeta detectada.")
-#define MSG_MEDIA_REMOVED _UxGT("Targeta extreta.")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops")
-#define MSG_MAIN _UxGT("Menú principal")
-#define MSG_AUTOSTART _UxGT("Inici automatic")
-#define MSG_DISABLE_STEPPERS _UxGT("Desactiva motors")
-#define MSG_DEBUG_MENU _UxGT("Menu de depuracio")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Test barra progres")
-#define MSG_AUTO_HOME _UxGT("Ves a l'origen")
-#define MSG_AUTO_HOME_X _UxGT("X a origen")
-#define MSG_AUTO_HOME_Y _UxGT("Y a origen")
-#define MSG_AUTO_HOME_Z _UxGT("Z a origen")
-#define MSG_LEVEL_BED_HOMING _UxGT("Origen XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Premeu per iniciar")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Següent punt")
-#define MSG_LEVEL_BED_DONE _UxGT("Anivellament fet!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Ajusta decalatge")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Decalatge aplicat")
-#define MSG_SET_ORIGIN _UxGT("Estableix origen")
-#define MSG_PREHEAT_1 _UxGT("Preescalfa " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Tot")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Llit")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Conf.")
-#define MSG_PREHEAT_2 _UxGT("Preescalfa " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Tot")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Llit")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Conf.")
-#define MSG_COOLDOWN _UxGT("Refreda")
-#define MSG_SWITCH_PS_ON _UxGT("Switch power on")
-#define MSG_SWITCH_PS_OFF _UxGT("Switch power off")
-#define MSG_EXTRUDE _UxGT("Extrudeix")
-#define MSG_RETRACT _UxGT("Retreu")
-#define MSG_MOVE_AXIS _UxGT("Mou eixos")
-#define MSG_BED_LEVELING _UxGT("Anivella llit")
-#define MSG_LEVEL_BED _UxGT("Anivella llit")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" preparada.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Targeta detectada.");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Targeta extreta.");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menú principal");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Inici automatic");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Desactiva motors");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menu de depuracio");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test barra progres");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Ves a l'origen");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("X a origen");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Y a origen");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Z a origen");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Premeu per iniciar");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Següent punt");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Anivellament fet!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ajusta decalatge");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalatge aplicat");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Estableix origen");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Preescalfa ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Tot");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Llit");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf.");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Preescalfa ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Preescalfa ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Tot");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Llit");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Refreda");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Switch power on");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Switch power off");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrudeix");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retreu");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mou eixos");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Anivella llit");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Anivella llit");
-#define MSG_MOVING _UxGT("Movent..")
-#define MSG_FREE_XY _UxGT("XY lliures")
-#define MSG_MOVE_X _UxGT("Mou X")
-#define MSG_MOVE_Y _UxGT("Mou Y")
-#define MSG_MOVE_Z _UxGT("Mou Z")
-#define MSG_MOVE_E _UxGT("Extrusor")
-#define MSG_MOVE_Z_DIST _UxGT("Mou %smm")
-#define MSG_MOVE_01MM _UxGT("Mou 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mou 1mm")
-#define MSG_MOVE_10MM _UxGT("Mou 10mm")
-#define MSG_SPEED _UxGT("Velocitat")
-#define MSG_BED_Z _UxGT("Llit Z")
-#define MSG_NOZZLE _UxGT("Nozzle")
-#define MSG_BED _UxGT("Llit")
-#define MSG_FAN_SPEED _UxGT("Vel. Ventilador")
-#define MSG_FLOW _UxGT("Flux")
-#define MSG_CONTROL _UxGT("Control")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Autotemp")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Select")
-#define MSG_ACC _UxGT("Accel")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VViatge min")
-#define MSG_AMAX _UxGT("Accel. max ")
-#define MSG_A_RETRACT _UxGT("Accel. retracc")
-#define MSG_A_TRAVEL _UxGT("Accel. Viatge")
-#define MSG_STEPS_PER_MM _UxGT("Passos/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Apassos/mm")
- #define MSG_BSTEPS _UxGT("Bpassos/mm")
- #define MSG_CSTEPS _UxGT("Cpassos/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xpassos/mm")
- #define MSG_BSTEPS _UxGT("Ypassos/mm")
- #define MSG_CSTEPS _UxGT("Zpassos/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Epassos/mm")
-#define MSG_E0_STEPS _UxGT("E1passos/mm")
-#define MSG_E1_STEPS _UxGT("E2passos/mm")
-#define MSG_E2_STEPS _UxGT("E3passos/mm")
-#define MSG_E3_STEPS _UxGT("E4passos/mm")
-#define MSG_E4_STEPS _UxGT("E5passos/mm")
-#define MSG_E5_STEPS _UxGT("E6passos/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Moviment")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E en mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Diam. Fil.")
-#define MSG_CONTRAST _UxGT("Contrast de LCD")
-#define MSG_STORE_EEPROM _UxGT("Desa memoria")
-#define MSG_LOAD_EEPROM _UxGT("Carrega memoria")
-#define MSG_RESTORE_FAILSAFE _UxGT("Restaura valors")
-#define MSG_REFRESH _UxGT("Actualitza")
-#define MSG_WATCH _UxGT("Pantalla Info.")
-#define MSG_PREPARE _UxGT("Prepara")
-#define MSG_TUNE _UxGT("Ajusta")
-#define MSG_PAUSE_PRINT _UxGT("Pausa impressio")
-#define MSG_RESUME_PRINT _UxGT("Repren impressio")
-#define MSG_STOP_PRINT _UxGT("Atura impressio.")
-#define MSG_MEDIA_MENU _UxGT("Imprimeix de SD")
-#define MSG_NO_MEDIA _UxGT("No hi ha targeta")
-#define MSG_DWELL _UxGT("En repos...")
-#define MSG_USERWAIT _UxGT("Esperant usuari..")
-#define MSG_PRINT_ABORTED _UxGT("Imp. cancelada")
-#define MSG_NO_MOVE _UxGT("Sense moviment.")
-#define MSG_KILLED _UxGT("MATAT.")
-#define MSG_STOPPED _UxGT("ATURADA.")
-#define MSG_CONTROL_RETRACT _UxGT("Retreu mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Retreure mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retreu V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Aixeca mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("DesRet +mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Swap DesRet +mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("DesRet V")
-#define MSG_AUTORETRACT _UxGT("Auto retraccio")
-#define MSG_FILAMENTCHANGE _UxGT("Canvia filament")
-#define MSG_INIT_MEDIA _UxGT("Inicialitza SD")
-#define MSG_CHANGE_MEDIA _UxGT("Canvia SD")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z fora")
-#define MSG_BLTOUCH_RESET _UxGT("Reinicia BLTouch")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s primer")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Decalatge Z")
-#define MSG_BABYSTEP_X _UxGT("Micropas X")
-#define MSG_BABYSTEP_Y _UxGT("Micropas Y")
-#define MSG_BABYSTEP_Z _UxGT("Micropas Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Cancel. Endstop")
-#define MSG_HEATING_FAILED_LCD _UxGT("Error al escalfar")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: TEMP REDUNDANT")
-#define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
-#define MSG_ERR_MAXTEMP _UxGT("Err: TEMP MAXIMA")
-#define MSG_ERR_MINTEMP _UxGT("Err: TEMP MINIMA")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err: TEMPMAX LLIT")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err: TEMPMIN LLIT")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY primer")
-#define MSG_HALTED _UxGT("IMPRESSORA PARADA")
-#define MSG_PLEASE_RESET _UxGT("Reinicieu")
-#define MSG_SHORT_DAY _UxGT("d") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Escalfant...")
-#define MSG_BED_HEATING _UxGT("Escalfant llit...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibratge Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibra X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibra Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibra Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibra el centre")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Movent..");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("XY lliures");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mou X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mou Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mou Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mou %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mou 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mou 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mou 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocitat");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Llit Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Nozzle");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Nozzle ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Nozzle ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Nozzle ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Nozzle ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Nozzle ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Nozzle ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Llit");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. Ventilador");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Vel. Ventilador 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Vel. Ventilador 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Vel. Ventilador 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flux");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flux ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flux ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flux ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flux ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flux ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flux ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VViatge min");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Accel. max ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Accel. max ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Accel. max ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Accel. max ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Accel. max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Accel. max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Accel. max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Accel. max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Accel. max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Accel. max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Accel. retracc");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Accel. Viatge");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Passos/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Epassos/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("passos/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Moviment");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Diam. Fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Diam. Fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Diam. Fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Diam. Fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Diam. Fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Diam. Fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Diam. Fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contrast de LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Desa memoria");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carrega memoria");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaura valors");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Pantalla Info.");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Prepara");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Ajusta");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausa impressio");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Repren impressio");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Atura impressio.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Imprimeix de SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("No hi ha targeta");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("En repos...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Esperant usuari..");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Imp. cancelada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sense moviment.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("MATAT.");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ATURADA.");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retreu mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retreure mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retreu V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Aixeca mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet +mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet +mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Auto retraccio");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Canvia filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Canvia filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Canvia filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Canvia filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Canvia filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Canvia filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Canvia filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Inicialitza SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Canvia SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z fora");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reinicia BLTouch");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s primer");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Decalatge Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Micropas X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Micropas Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Micropas Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Cancel. Endstop");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Error al escalfar");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP REDUNDANT");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MAXIMA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY primer");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("IMPRESSORA PARADA");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Reinicieu");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Escalfant...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Escalfant llit...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibratge Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra el centre");
-#define MSG_INFO_MENU _UxGT("Quant a la impr.")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info Impressora")
-#define MSG_INFO_STATS_MENU _UxGT("Estadistiques")
-#define MSG_INFO_BOARD_MENU _UxGT("Info placa")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistors")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrusors")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_PROTOCOL _UxGT("Protocol")
-#define MSG_CASE_LIGHT _UxGT("Llum")
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Quant a la impr.");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info Impressora");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Estadistiques");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info placa");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrusors");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocol");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Llum");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Total impressions")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Acabades")
- #define MSG_INFO_PRINT_TIME _UxGT("Temps imprimint")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Treball mes llarg")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total extrudit")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Impressions")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Acabades")
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Mes llarg")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrudit")
-#endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Total impressions");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Temps imprimint");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Treball mes llarg");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudit");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Impressions");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Mes llarg");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudit");
+ #endif
-#define MSG_INFO_MIN_TEMP _UxGT("Temp. mínima")
-#define MSG_INFO_MAX_TEMP _UxGT("Temp. màxima")
-#define MSG_INFO_PSU _UxGT("Font alimentacio")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temp. mínima");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temp. màxima");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Font alimentacio");
-#define MSG_DRIVE_STRENGTH _UxGT("Força motor")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Repren impressió")
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Força motor");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Repren impressió");
-#define MSG_EXPECTED_PRINTER _UxGT("Impressora incorrecta")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impressora incorrecta");
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperant per")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("iniciar el canvi")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("de filament")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Esperant per")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("treure filament")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Poseu filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("i premeu el boto")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("per continuar...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Premeu boto per")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("escalfar nozzle.")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Escalfant nozzle")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Espereu...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperant carrega")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("de filament")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperant per")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("reprendre")
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Espereu...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Expulsant...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insereix i prem")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Escalfant...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Carregant...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprenent...")
-#endif // LCD_HEIGHT < 4
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperant per", "iniciar el canvi", "de filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperant per", "treure filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Poseu filament", "i premeu el boto", "per continuar..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premeu boto per", "escalfar nozzle."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Escalfant nozzle", "Espereu..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperant carrega", "de filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperant per", "reprendre"));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Espereu..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Expulsant..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insereix i prem"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Escalfant..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregant..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprenent..."));
+ #endif // LCD_HEIGHT < 4
+}
diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h
index 38a4d0f2bc..ebb8186e76 100644
--- a/Marlin/src/lcd/language/language_cz.h
+++ b/Marlin/src/lcd/language/language_cz.h
@@ -35,521 +35,578 @@
*/
#define DISPLAY_CHARSET_ISO10646_CZ
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("áÁčČďĎéÉěĚíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ³")
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" připraven.")
-#define MSG_YES _UxGT("ANO")
-#define MSG_NO _UxGT("NE")
-#define MSG_BACK _UxGT("Zpět")
-#define MSG_MEDIA_INSERTED _UxGT("Karta vložena")
-#define MSG_MEDIA_REMOVED _UxGT("Karta vyjmuta")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstopy") // max 8 znaku
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft Endstopy")
-#define MSG_MAIN _UxGT("Hlavní nabídka")
-#define MSG_ADVANCED_SETTINGS _UxGT("Další nastavení")
-#define MSG_CONFIGURATION _UxGT("Konfigurace")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Uvolnit motory")
-#define MSG_DEBUG_MENU _UxGT("Nabídka ladění")
-#if LCD_WIDTH >= 20
- #define MSG_PROGRESS_BAR_TEST _UxGT("Test ukaz. průběhu")
-#else
- #define MSG_PROGRESS_BAR_TEST _UxGT("Test uk. průběhu")
-#endif
-#define MSG_AUTO_HOME _UxGT("Domovská pozice")
-#define MSG_AUTO_HOME_X _UxGT("Domů osa X")
-#define MSG_AUTO_HOME_Y _UxGT("Domů osa Y")
-#define MSG_AUTO_HOME_Z _UxGT("Domů osa Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Auto srovnání Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Měření podložky")
-#define MSG_LEVEL_BED_WAITING _UxGT("Kliknutím spusťte")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Další bod")
-#define MSG_LEVEL_BED_DONE _UxGT("Měření hotovo!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Výška srovnávání")
-#define MSG_SET_HOME_OFFSETS _UxGT("Nastavit ofsety")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Ofsety nastaveny")
-#define MSG_SET_ORIGIN _UxGT("Nastavit počátek")
-#define MSG_PREHEAT_1 _UxGT("Zahřát " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" vše")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" hotend")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" podlož")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" nast")
-#define MSG_PREHEAT_2 _UxGT("Zahřát " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" vše")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" hotend")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" podlož")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" nast")
-#define MSG_PREHEAT_CUSTOM _UxGT("Zahřát vlastní")
-#define MSG_COOLDOWN _UxGT("Zchladit")
-#define MSG_LASER_MENU _UxGT("Ovládání laseru")
-#define MSG_LASER_OFF _UxGT("Vypnout laser")
-#define MSG_LASER_ON _UxGT("Zapnout laser")
-#define MSG_LASER_POWER _UxGT("Výkon laseru")
-#define MSG_SPINDLE_REVERSE _UxGT("Vřeteno opačně")
-#define MSG_SWITCH_PS_ON _UxGT("Zapnout napájení")
-#define MSG_SWITCH_PS_OFF _UxGT("Vypnout napájení")
-#define MSG_EXTRUDE _UxGT("Vytlačit (extr.)")
-#define MSG_RETRACT _UxGT("Zatlačit (retr.)")
-#define MSG_MOVE_AXIS _UxGT("Posunout osy")
-#define MSG_BED_LEVELING _UxGT("Vyrovnat podložku")
-#define MSG_LEVEL_BED _UxGT("Vyrovnat podložku")
-#define MSG_LEVEL_CORNERS _UxGT("Vyrovnat rohy")
-#define MSG_NEXT_CORNER _UxGT("Další roh")
-#define MSG_EDIT_MESH _UxGT("Upravit síť bodů")
-#define MSG_EDITING_STOPPED _UxGT("Konec úprav sítě")
-#define MSG_MESH_X _UxGT("Index X")
-#define MSG_MESH_Y _UxGT("Index Y")
-#define MSG_MESH_EDIT_Z _UxGT("Hodnota Z")
+namespace Language_cz {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_USER_MENU _UxGT("Vlastní příkazy")
-#define MSG_IDEX_MENU _UxGT("Režim IDEX")
-#define MSG_OFFSETS_MENU _UxGT("Ofsety nástrojů")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplikace")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Zrcadlení")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Plná kontrola")
-#define MSG_X_OFFSET _UxGT("2. tryska X")
-#define MSG_Y_OFFSET _UxGT("2. tryska Y")
-#define MSG_Z_OFFSET _UxGT("2. tryska Z")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Czech");
-#define MSG_UBL_DOING_G29 _UxGT("Provádím G29")
-#define MSG_UBL_TOOLS _UxGT("UBL nástroje")
-#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-#define MSG_UBL_MANUAL_MESH _UxGT("Manuální síť bodů")
-#define MSG_UBL_BC_INSERT _UxGT("Vložte kartu, změřte")
-#define MSG_UBL_BC_INSERT2 _UxGT("Změřte")
-#define MSG_UBL_BC_REMOVE _UxGT("Odstraňte a změřte")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Přesun na další")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Aktivovat UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Deaktivovat UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Teplota podložky")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Teplota hotendu")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Úprava sítě bodů")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Upravit vlastní síť")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Doladit síť bodů")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Konec úprav sítě")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Vlastní síť")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Vytvořit síť")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Síť bodů " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Síť bodů " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Studená síť bodů")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Upravit výšku sítě")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Výška")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Zkontrolovat síť")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Kontrola sítě " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Kontrola sítě " PREHEAT_2_LABEL)
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Kontrola vlast. sítě")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Pokračovat v síťi")
-#define MSG_UBL_MESH_LEVELING _UxGT("Síťové rovnání")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-bodové rovnání")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Mřížkové rovnání")
-#define MSG_UBL_MESH_LEVEL _UxGT("Srovnat podložku")
-#define MSG_UBL_SIDE_POINTS _UxGT("Postranní body")
-#define MSG_UBL_MAP_TYPE _UxGT("Typ sítě bodu")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Exportovat síť")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Exportovat do PC")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Exportovat do CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Záloha do PC")
-#define MSG_UBL_INFO_UBL _UxGT("Info o UBL do PC")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Hustota mřížky")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Ruční hustota")
-#define MSG_UBL_SMART_FILLIN _UxGT("Chytrá hustota")
-#define MSG_UBL_FILLIN_MESH _UxGT("Zaplnit mřížku")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Zrušit všechno")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Zrušit poslední")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Upravit všechny")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Upravit poslední")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Uložiště sítí")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Paměťový slot")
-#define MSG_UBL_LOAD_MESH _UxGT("Načíst síť bodů")
-#define MSG_UBL_SAVE_MESH _UxGT("Uložit síť bodů")
-#define MSG_MESH_LOADED _UxGT("Síť %i načtena")
-#define MSG_MESH_SAVED _UxGT("Síť %i uložena")
-#define MSG_UBL_NO_STORAGE _UxGT("Nedostatek místa")
-#define MSG_UBL_SAVE_ERROR _UxGT("Ch.: Uložit UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Ch.: Obnovit UBL")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Konec Z-Offsetu")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("UBL Postupně")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" připraven.");
+ PROGMEM Language_Str MSG_YES = _UxGT("ANO");
+ PROGMEM Language_Str MSG_NO = _UxGT("NE");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Zpět");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Karta vložena");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Karta vyjmuta");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // max 8 znaku
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstopy");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Hlavní nabídka");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Další nastavení");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Konfigurace");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Uvolnit motory");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Nabídka ladění");
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test ukaz. průběhu");
+ #else
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. průběhu");
+ #endif
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Domovská pozice");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Domů osa X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Domů osa Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Domů osa Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto srovnání Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Měření podložky");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím spusťte");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Další bod");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Měření hotovo!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Výška srovnávání");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Nastavit ofsety");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastaveny");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Nastavit počátek");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Zahřát ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Zahřát ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Zahřát ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Zahřát ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" vše");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" podlož");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Zahřát ") PREHEAT_2_LABEL _UxGT(" nast");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Zahřát vlastní");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Zchladit");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Ovládání laseru");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Vypnout laser");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Zapnout laser");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Výkon laseru");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Vřeteno opačně");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Zapnout napájení");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Vypnout napájení");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Vytlačit (extr.)");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Zatlačit (retr.)");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Posunout osy");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Vyrovnat podložku");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Vyrovnat podložku");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Vyrovnat rohy");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Další roh");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Upravit síť bodů");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Konec úprav sítě");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Index X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Index Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Hodnota Z");
-#define MSG_LED_CONTROL _UxGT("Nastavení LED")
-#define MSG_LEDS _UxGT("Světla")
-#define MSG_LED_PRESETS _UxGT("Světla Předvolby")
-#define MSG_SET_LEDS_RED _UxGT("Červená")
-#define MSG_SET_LEDS_ORANGE _UxGT("Oranžová")
-#define MSG_SET_LEDS_YELLOW _UxGT("Žlutá")
-#define MSG_SET_LEDS_GREEN _UxGT("Zelená")
-#define MSG_SET_LEDS_BLUE _UxGT("Modrá")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Fialová")
-#define MSG_SET_LEDS_WHITE _UxGT("Bílá")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Výchozí")
-#define MSG_CUSTOM_LEDS _UxGT("Vlastní světla")
-#define MSG_INTENSITY_R _UxGT("Červená intenzita")
-#define MSG_INTENSITY_G _UxGT("Zelená intezita")
-#define MSG_INTENSITY_B _UxGT("Modrá intenzita")
-#define MSG_INTENSITY_W _UxGT("Bílá intenzita")
-#define MSG_LED_BRIGHTNESS _UxGT("Jas")
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Vlastní příkazy");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Režim IDEX");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Ofsety nástrojů");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikace");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrcadlení");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2. tryska X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2. tryska Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2. tryska Z");
-#define MSG_MOVING _UxGT("Posouvání...")
-#define MSG_FREE_XY _UxGT("Uvolnit XY")
-#define MSG_MOVE_X _UxGT("Posunout X")
-#define MSG_MOVE_Y _UxGT("Posunout Y")
-#define MSG_MOVE_Z _UxGT("Posunout Z")
-#define MSG_MOVE_E _UxGT("Extrudér")
-#define MSG_HOTEND_TOO_COLD _UxGT("Hotend je studený")
-#define MSG_MOVE_Z_DIST _UxGT("Posunout o %smm")
-#define MSG_MOVE_01MM _UxGT("Posunout o 0,1mm")
-#define MSG_MOVE_1MM _UxGT("Posunout o 1mm")
-#define MSG_MOVE_10MM _UxGT("Posunout o 10mm")
-#define MSG_SPEED _UxGT("Rychlost")
-#define MSG_BED_Z _UxGT("Výška podl.")
-#define MSG_NOZZLE _UxGT("Tryska")
-#define MSG_BED _UxGT("Podložka")
-#define MSG_CHAMBER _UxGT("Komora")
-#define MSG_FAN_SPEED _UxGT("Rychlost vent.")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Rychlost ex. vent.")
-#define MSG_FLOW _UxGT("Průtok")
-#define MSG_CONTROL _UxGT("Ovládaní")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
-#define MSG_AUTOTEMP _UxGT("Autoteplota")
-#define MSG_LCD_ON _UxGT("Zap")
-#define MSG_LCD_OFF _UxGT("Vyp")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Vybrat")
-#define MSG_ACC _UxGT("Zrychl")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_JUNCTION_DEVIATION _UxGT("Odchylka spoje")
-#define MSG_VELOCITY _UxGT("Rychlost")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_ACCELERATION _UxGT("Akcelerace")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retrakt")
-#define MSG_A_TRAVEL _UxGT("A-přejezd")
-#define MSG_STEPS_PER_MM _UxGT("Kroků/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Akroků/mm")
- #define MSG_BSTEPS _UxGT("Bkroků/mm")
- #define MSG_CSTEPS _UxGT("Ckroků/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xkroků/mm")
- #define MSG_BSTEPS _UxGT("Ykroků/mm")
- #define MSG_CSTEPS _UxGT("Zkroků/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Ekroků/mm")
-#define MSG_E0_STEPS _UxGT("E1kroků/mm")
-#define MSG_E1_STEPS _UxGT("E2kroků/mm")
-#define MSG_E2_STEPS _UxGT("E3kroků/mm")
-#define MSG_E3_STEPS _UxGT("E4kroků/mm")
-#define MSG_E4_STEPS _UxGT("E5kroků/mm")
-#define MSG_E5_STEPS _UxGT("E6kroků/mm")
-#define MSG_TEMPERATURE _UxGT("Teplota")
-#define MSG_MOTION _UxGT("Pohyb")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E na mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Prum.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Vysunout mm")
-#define MSG_FILAMENT_LOAD _UxGT("Zavést mm")
-#define MSG_ADVANCE_K _UxGT("K pro posun")
-#define MSG_CONTRAST _UxGT("Kontrast LCD")
-#define MSG_STORE_EEPROM _UxGT("Uložit nastavení")
-#define MSG_LOAD_EEPROM _UxGT("Načíst nastavení")
-#define MSG_RESTORE_FAILSAFE _UxGT("Obnovit výchozí")
-#define MSG_INIT_EEPROM _UxGT("Inic. EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Aktualizace z SD")
-#define MSG_RESET_PRINTER _UxGT("Reset tiskárny")
-#define MSG_REFRESH _UxGT("Obnovit")
-#define MSG_WATCH _UxGT("Info obrazovka")
-#define MSG_PREPARE _UxGT("Připrava tisku")
-#define MSG_TUNE _UxGT("Doladění tisku")
-#define MSG_START_PRINT _UxGT("Spustit tisk")
-#define MSG_BUTTON_PRINT _UxGT("Tisk")
-#define MSG_BUTTON_CANCEL _UxGT("Zrušit")
-#define MSG_PAUSE_PRINT _UxGT("Pozastavit tisk")
-#define MSG_RESUME_PRINT _UxGT("Obnovit tisk")
-#define MSG_STOP_PRINT _UxGT("Zastavit tisk")
-#define MSG_OUTAGE_RECOVERY _UxGT("Obnova výpadku")
-#define MSG_MEDIA_MENU _UxGT("Tisknout z SD")
-#define MSG_NO_MEDIA _UxGT("Žádná SD karta")
-#define MSG_DWELL _UxGT("Uspáno...")
-#define MSG_USERWAIT _UxGT("Čekání na uživ...")
-#define MSG_PRINT_PAUSED _UxGT("Tisk pozastaven")
-#define MSG_PRINTING _UxGT("Tisknu...")
-#define MSG_PRINT_ABORTED _UxGT("Tisk zrušen")
-#define MSG_NO_MOVE _UxGT("Žádný pohyb.")
-#define MSG_KILLED _UxGT("PŘERUSENO. ")
-#define MSG_STOPPED _UxGT("ZASTAVENO. ")
-#define MSG_CONTROL_RETRACT _UxGT("Retrakt mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Výměna Re.mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retraktovat V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Zvednuti Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Délka retrakce")
-#define MSG_TOOL_CHANGE _UxGT("Výměna nástroje")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Zdvih Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Rychlost primár.")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Rychlost retrak.")
-#define MSG_NOZZLE_STANDBY _UxGT("Tryska standby")
-#define MSG_FILAMENTCHANGE _UxGT("Vyměnit filament")
-#define MSG_FILAMENTLOAD _UxGT("Zavést filament")
-#define MSG_FILAMENTUNLOAD _UxGT("Vysunout filament")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Vysunout vše")
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Provádím G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL nástroje");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Manuální síť bodů");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Vložte kartu, změřte");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Změřte");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Odstraňte a změřte");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Přesun na další");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Aktivovat UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Deaktivovat UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Úprava sítě bodů");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upravit vlastní síť");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladit síť bodů");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Konec úprav sítě");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastní síť");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvořit síť");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Síť bodů ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Síť bodů ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená síť bodů");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upravit výšku sítě");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Zkontrolovat síť");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Kontrola sítě ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Kontrola sítě ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast. sítě");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovat v síťi");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Síťové rovnání");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnání");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mřížkové rovnání");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Srovnat podložku");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Postranní body");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Typ sítě bodu");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Exportovat síť");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Exportovat do PC");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Exportovat do CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Záloha do PC");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Info o UBL do PC");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mřížky");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Ruční hustota");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Chytrá hustota");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Zaplnit mřížku");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušit všechno");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušit poslední");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Upravit všechny");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upravit poslední");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Uložiště sítí");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Paměťový slot");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Načíst síť bodů");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Uložit síť bodů");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Síť %i načtena");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Síť %i uložena");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Nedostatek místa");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Ch.: Uložit UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Ch.: Obnovit UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Konec Z-Offsetu");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Postupně");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Studená síť bodů");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2. Chytrá hustota");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Zkontrolovat síť");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Upravit všechny");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Zkontrolovat síť");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Upravit všechny");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7. Uložit síť bodů");
-#define MSG_INIT_MEDIA _UxGT("Načíst SD kartu")
-#define MSG_CHANGE_MEDIA _UxGT("Vyměnit SD kartu")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z mimo podl")
-#define MSG_SKEW_FACTOR _UxGT("Faktor zkosení")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch self-test")
-#define MSG_BLTOUCH_RESET _UxGT("BLTouch reset")
-#define MSG_BLTOUCH_DEPLOY _UxGT("BLTouch vysunout")
-#define MSG_BLTOUCH_SW_MODE _UxGT("SW výsun BLTouch")
-#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch 5V režim")
-#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch OD režim")
-#define MSG_BLTOUCH_STOW _UxGT("BLTouch zasunout")
-#define MSG_MANUAL_DEPLOY _UxGT("Vysunout Z-sondu")
-#define MSG_MANUAL_STOW _UxGT("Zasunout Z-sondu")
-#define MSG_HOME_FIRST _UxGT("Domů %s%s%s první")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z ofset")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Celkem")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
-#define MSG_HEATING_FAILED_LCD _UxGT("Chyba zahřívání")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Chyba zahř.podl.")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("REDUND. TEPLOTA")
-#define MSG_THERMAL_RUNAWAY _UxGT("TEPLOTNÍ ÚNIK")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("TEPL. ÚNIK PODL.")
-#define MSG_ERR_MAXTEMP _UxGT("VYSOKÁ TEPLOTA")
-#define MSG_ERR_MINTEMP _UxGT("NÍZKA TEPLOTA")
-#define MSG_ERR_MAXTEMP_BED _UxGT("VYS. TEPL. PODL.")
-#define MSG_ERR_MINTEMP_BED _UxGT("NÍZ. TEPL. PODL.")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err: MAXTEMP KOMORA")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err: MINTEMP KOMORA")
-#define MSG_ERR_Z_HOMING _UxGT("Domů XY první")
-#define MSG_HALTED _UxGT("TISK. ZASTAVENA")
-#define MSG_PLEASE_RESET _UxGT("Proveďte reset")
-#define MSG_SHORT_DAY _UxGT("d")
-#define MSG_SHORT_HOUR _UxGT("h")
-#define MSG_SHORT_MINUTE _UxGT("m")
-#define MSG_HEATING _UxGT("Zahřívání...")
-#define MSG_COOLING _UxGT("Chlazení...")
-#if LCD_WIDTH >= 20
- #define MSG_BED_HEATING _UxGT("Zahřívání podložky")
-#else
- #define MSG_BED_HEATING _UxGT("Zahřívání podl.")
-#endif
-#if LCD_WIDTH >= 20
- #define MSG_BED_COOLING _UxGT("Chlazení podložky")
-#else
- #define MSG_BED_COOLING _UxGT("Chlazení podl.")
-#endif
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibrace")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibrovat X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibrovat Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibrovat Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibrovat Střed")
-#define MSG_DELTA_SETTINGS _UxGT("Delta nastavení")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Autokalibrace")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Nast.výšku delty")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Nast. Z-ofset")
-#define MSG_DELTA_DIAG_ROD _UxGT("Diag rameno")
-#define MSG_DELTA_HEIGHT _UxGT("Výška")
-#define MSG_DELTA_RADIUS _UxGT("Poloměr")
-#define MSG_INFO_MENU _UxGT("O tiskárně")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info o tiskárně")
-#define MSG_3POINT_LEVELING _UxGT("3-bodové rovnání")
-#define MSG_LINEAR_LEVELING _UxGT("Lineárni rovnání")
-#define MSG_BILINEAR_LEVELING _UxGT("Bilineární rovnání")
-#define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling")
-#define MSG_MESH_LEVELING _UxGT("Mřížkové rovnání")
-#define MSG_INFO_STATS_MENU _UxGT("Statistika")
-#define MSG_INFO_BOARD_MENU _UxGT("Info o desce")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistory")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrudéry")
-#define MSG_INFO_BAUDRATE _UxGT("Rychlost")
-#define MSG_INFO_PROTOCOL _UxGT("Protokol")
-#define MSG_CASE_LIGHT _UxGT("Osvětlení")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Jas světla")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Nastavení LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Světla");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Světla Předvolby");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Červená");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Oranžová");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Žlutá");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Zelená");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Modrá");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Fialová");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Bílá");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Výchozí");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Vlastní světla");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Červená intenzita");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Zelená intezita");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Modrá intenzita");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Bílá intenzita");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Jas");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Počet tisků")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Dokončeno")
- #define MSG_INFO_PRINT_TIME _UxGT("Celkový čas")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Nejdelší tisk")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Celkem vytlačeno")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Tisky")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Hotovo")
- #define MSG_INFO_PRINT_TIME _UxGT("Čas")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Nejdelší")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Vytlačeno")
-#endif
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Posouvání...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Uvolnit XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Posunout X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Posunout Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Posunout Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrudér");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrudér ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrudér ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrudér ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrudér ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrudér ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrudér ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Posunout o %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Posunout o 0,1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Posunout o 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Posunout o 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Rychlost");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Výška podl.");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Tryska");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Tryska ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Tryska ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Tryska ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Tryska ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Tryska ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Tryska ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Podložka");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Komora");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Rychlost vent.");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Rychlost vent. 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Rychlost vent. 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Rychlost vent. 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Rychlost ex. vent.");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Rychlost ex. vent. 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Rychlost ex. vent. 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Rychlost ex. vent. 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Průtok");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Průtok ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Průtok ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Průtok ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Průtok ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Průtok ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Průtok ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Ovládaní");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autoteplota");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Zap");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Vyp");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Vybrat");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Vybrat ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Vybrat ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Vybrat ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Vybrat ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Vybrat ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Vybrat ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Zrychl");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Odchylka spoje");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Rychlost");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Akcelerace");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-retrakt");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-přejezd");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Kroků/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Ekroků/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("kroků/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Teplota");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Pohyb");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E na mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Prum.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Prum. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Prum. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Prum. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Prum. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Prum. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Prum. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Vysunout mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Zavést mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K pro posun");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K pro posun ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K pro posun ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K pro posun ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K pro posun ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K pro posun ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K pro posun ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Uložit nastavení");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Načíst nastavení");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Obnovit výchozí");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inic. EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aktualizace z SD");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reset tiskárny");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnovit");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info obrazovka");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Připrava tisku");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Doladění tisku");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Spustit tisk");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Tisk");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Zrušit");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pozastavit tisk");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Obnovit tisk");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Zastavit tisk");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Obnova výpadku");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Tisknout z SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Žádná SD karta");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Uspáno...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Čekání na uživ...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Tisk pozastaven");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Tisknu...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Tisk zrušen");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Žádný pohyb.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("PŘERUSENO. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ZASTAVENO. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retrakt mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Výměna Re.mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retraktovat V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zvednuti Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Délka retrakce");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Výměna nástroje");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvih Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Rychlost primár.");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Rychlost retrak.");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Tryska standby");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Vyměnit filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Vyměnit filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Vyměnit filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Vyměnit filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Vyměnit filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Vyměnit filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Vyměnit filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Zavést filament");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Zavést filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Zavést filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Zavést filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Zavést filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Zavést filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Zavést filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Vysunout filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Vysunout filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Vysunout filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Vysunout filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Vysunout filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Vysunout filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunout vše");
-#define MSG_INFO_MIN_TEMP _UxGT("Teplota min")
-#define MSG_INFO_MAX_TEMP _UxGT("Teplota max")
-#define MSG_INFO_PSU _UxGT("Nap. zdroj")
-#define MSG_DRIVE_STRENGTH _UxGT("Buzení motorů")
-#define MSG_DAC_PERCENT _UxGT("Motor %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Uložit do EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("TISK POZASTAVEN")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("ZAVEDENÍ FILAMENTU")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("VYSUNUTÍ FILAMENTU")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("MOŽNOSTI OBNOVENÍ:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Vytlačit víc")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Senzor filamentu")
-#define MSG_ERR_HOMING_FAILED _UxGT("Parkování selhalo")
-#define MSG_ERR_PROBING_FAILED _UxGT("Kalibrace selhala")
-#define MSG_M600_TOO_COLD _UxGT("M600: Moc studený")
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Načíst SD kartu");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Vyměnit SD kartu");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Faktor zkosení");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch self-test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("BLTouch reset");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch vysunout");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("SW výsun BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch 5V režim");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch OD režim");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("BLTouch zasunout");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Vysunout Z-sondu");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Zasunout Z-sondu");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Domů %s%s%s první");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Celkem");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Endstop abort");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Chyba zahřívání");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Chyba zahř.podl.");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEPLOTA");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("TEPLOTNÍ ÚNIK");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("TEPL. ÚNIK PODL.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("VYSOKÁ TEPLOTA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("NÍZKA TEPLOTA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("VYS. TEPL. PODL.");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("NÍZ. TEPL. PODL.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Err: MAXTEMP KOMORA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Err: MINTEMP KOMORA");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Domů XY první");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("TISK. ZASTAVENA");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Proveďte reset");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d");
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h");
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Zahřívání...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Chlazení...");
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Zahřívání podložky");
+ #else
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Zahřívání podl.");
+ #endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Chlazení podložky");
+ #else
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Chlazení podl.");
+ #endif
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrace");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovat X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovat Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovat Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovat Střed");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta nastavení");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autokalibrace");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Nast.výšku delty");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Nast. Z-ofset");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Diag rameno");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Výška");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Poloměr");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("O tiskárně");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info o tiskárně");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3-bodové rovnání");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Lineárni rovnání");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Bilineární rovnání");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Mřížkové rovnání");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statistika");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info o desce");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrudéry");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Rychlost");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokol");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Osvětlení");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas světla");
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("VÝMĚNA FILAMENTU")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("VYBERTE FILAMENT")
-#define MSG_MMU2_MENU _UxGT("MMU")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("Aktual. MMU firmware!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU potř. pozornost.")
-#define MSG_MMU2_RESUME _UxGT("Obnovit tisk")
-#define MSG_MMU2_RESUMING _UxGT("Obnovování...")
-#define MSG_MMU2_LOAD_FILAMENT _UxGT("Zavést filament")
-#define MSG_MMU2_LOAD_ALL _UxGT("Zavést všechny")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Zavést do trysky")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Vysunout filament")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Vysun. filament 1")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Vysun. filament 2")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Vysun. filament 3")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Vysun. filament 4")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Vysun. filament 5")
-#define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Vytáhnout filament")
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Zavádění fil. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Vytahování fil. ...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Vysouvání fil....")
-#define MSG_MMU2_ALL _UxGT("Všechny")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filament 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filament 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filament 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filament 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filament 5")
-#define MSG_MMU2_RESET _UxGT("Resetovat MMU")
-#define MSG_MMU2_RESETTING _UxGT("Resetování MMU...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Vytáhněte, klikněte")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Počet tisků");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončeno");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Celkový čas");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší tisk");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Celkem vytlačeno");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Tisky");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Čas");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačeno");
+ #endif
-#define MSG_MIX _UxGT("Mix")
-#define MSG_MIX_COMPONENT _UxGT("Komponenta")
-#define MSG_MIXER _UxGT("Mixér")
-#define MSG_GRADIENT _UxGT("Přechod")
-#define MSG_FULL_GRADIENT _UxGT("Celý přechod")
-#define MSG_TOGGLE_MIX _UxGT("Přepnout mix")
-#define MSG_CYCLE_MIX _UxGT("Střídat mix")
-#define MSG_GRADIENT_MIX _UxGT("Přechod mix")
-#define MSG_REVERSE_GRADIENT _UxGT("Opačný přechod")
-#if LCD_WIDTH >= 20
- #define MSG_ACTIVE_VTOOL _UxGT("Aktivní V-nástroj")
- #define MSG_START_VTOOL _UxGT("Spustit V-nástroj")
- #define MSG_END_VTOOL _UxGT("Ukončit V-nástroj")
- #define MSG_GRADIENT_ALIAS _UxGT("Alias V-nástroje")
- #define MSG_RESET_VTOOLS _UxGT("Resetovat V-nástroj")
- #define MSG_COMMIT_VTOOL _UxGT("Uložit V-nástroj mix")
- #define MSG_VTOOLS_RESET _UxGT("V-nástroj resetovat")
-#else
- #define MSG_ACTIVE_VTOOL _UxGT("Aktivní V-nástr.")
- #define MSG_START_VTOOL _UxGT("Spustit V-nástr.")
- #define MSG_END_VTOOL _UxGT("Ukončit V-nástr.")
- #define MSG_GRADIENT_ALIAS _UxGT("Alias V-nástr.")
- #define MSG_RESET_VTOOLS _UxGT("Reset. V-nástr.")
- #define MSG_COMMIT_VTOOL _UxGT("Uložit V-nás. mix")
- #define MSG_VTOOLS_RESET _UxGT("V-nástr. reset.")
-#endif
-#define MSG_START_Z _UxGT("Počáteční Z")
-#define MSG_END_Z _UxGT(" Koncové Z")
-#define MSG_BRICKOUT _UxGT("Brickout")
-#define MSG_INVADERS _UxGT("Invaders")
-#define MSG_SNAKE _UxGT("Sn4k3")
-#define MSG_MAZE _UxGT("Bludiště")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Teplota min");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Teplota max");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Nap. zdroj");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Buzení motorů");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Motor %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Uložit do EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMĚNA FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("TISK POZASTAVEN");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENÍ FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTÍ FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI OBNOVENÍ:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačit víc");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnovit tisk");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Parkování selhalo");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Kalibrace selhala");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Moc studený");
-#define MSG_EXPECTED_PRINTER _UxGT("Nesprávná tiskárna")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("Aktual. MMU firmware!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potř. pozornost.");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Obnovit tisk");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Obnovování...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Zavést filament");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Zavést všechny");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zavést do trysky");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunout filament");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Vysun. filament 1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Vysun. filament 2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Vysun. filament 3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Vysun. filament 4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Vysun. filament 5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vytáhnout filament");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádění fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vytahování fil. ...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysouvání fil....");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Všechny");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filament 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filament 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filament 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filament 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filament 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Resetovat MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Resetování MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Vytáhněte, klikněte");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Stikněte tlačítko")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("pro obnovení tisku")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parkování...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("na zahájení")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("výměny filamentu")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("a stiskněte")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("tlačítko...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klikněte pro")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("nahřátí trysky")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("na nahřátí tr.")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("na vysunuti")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedení")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Vyčkejte na")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("vytlačení")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Klikněte pro")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("ukončení")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_3 _UxGT("vytlačování")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("na pokračování")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("tisku")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Stikněte tlač.")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("pro obnovení")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parkování...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Čekejte...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte, klikněte")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klikněte pro")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("nahřátí")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nahřívání...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Vysouvání...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavádění...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Vytlačování...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Klikněte pro")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("ukončení")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokračování...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_MIX = _UxGT("Mix");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Komponenta 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Komponenta 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Komponenta 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Komponenta 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Komponenta 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Komponenta 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Mixér");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Přechod");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Celý přechod");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Přepnout mix");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Střídat mix");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Přechod mix");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Opačný přechod");
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástroj");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Spustit V-nástroj");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT("Ukončit V-nástroj");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástroje");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Resetovat V-nástroj");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Uložit V-nástroj mix");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-nástroj resetovat");
+ #else
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástr.");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Spustit V-nástr.");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT("Ukončit V-nástr.");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástr.");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Reset. V-nástr.");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Uložit V-nás. mix");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-nástr. reset.");
+ #endif
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Počáteční Z:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT(" Koncové Z:");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Bludiště");
-#define MSG_TMC_DRIVERS _UxGT("TMC budiče")
-#define MSG_TMC_CURRENT _UxGT("Proud budičů")
-#define MSG_TMC_HYBRID_THRS _UxGT("Hybridní práh")
-#define MSG_TMC_HOMING_THRS _UxGT("Domů bez senzorů")
-#define MSG_TMC_STEPPING_MODE _UxGT("Režim kroků")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop povolen")
-#define MSG_SERVICE_RESET _UxGT("Reset")
-#define MSG_SERVICE_IN _UxGT(" za:")
-#define MSG_BACKLASH _UxGT("Vůle")
-#define MSG_BACKLASH_CORRECTION _UxGT("Korekce")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Vyhlazení")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Nesprávná tiskárna");
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlačítko", "pro obnovení tisku"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parkování..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekejte prosím", "na zahájení", "výměny filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stiskněte", "tlačítko..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí trysky"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Čekejte prosím", "na nahřátí tr."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na vysunuti", "filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na zavedení", "filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Vyčkejte na", "vytlačení"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klikněte pro", "ukončení", "vytlačování"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Čekejte prosím", "na pokračování", "tisku"));
+ #else // LCD_HEIGHT < 4
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlač.", "pro obnovení"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parkování..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čekejte..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte, klikněte"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nahřívání..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysouvání..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádění..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačování..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klikněte pro", "ukončení"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračování..."));
+ #endif // LCD_HEIGHT < 4
+
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("TMC budiče");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Proud budičů");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Hybridní práh");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Domů bez senzorů");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Režim kroků");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop povolen");
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Reset");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" za:");
+ PROGMEM Language_Str MSG_BACKLASH = _UxGT("Vůle");
+ PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
+ PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
+ PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Korekce");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Vyhlazení");
+}
diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h
index 98ed4a0bd1..98b47d7511 100644
--- a/Marlin/src/lcd/language/language_da.h
+++ b/Marlin/src/lcd/language/language_da.h
@@ -30,223 +30,212 @@
*/
#define DISPLAY_CHARSET_ISO10646_1
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" er klar")
-#define MSG_MEDIA_INSERTED _UxGT("Kort isat")
-#define MSG_MEDIA_REMOVED _UxGT("Kort fjernet")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Menu")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Slå alle steppere fra")
-#define MSG_AUTO_HOME _UxGT("Auto Home") // G28
-#define MSG_AUTO_HOME_X _UxGT("Home X")
-#define MSG_AUTO_HOME_Y _UxGT("Home Y")
-#define MSG_AUTO_HOME_Z _UxGT("Home Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Homing XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Klik når du er klar")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Næste punkt")
-#define MSG_LEVEL_BED_DONE _UxGT("Bed level er færdig!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Sæt forsk. af home")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Forsk. er nu aktiv")
-#define MSG_SET_ORIGIN _UxGT("Sæt origin")
-#define MSG_PREHEAT_1 _UxGT("Forvarm " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Forvarm " PREHEAT_1_LABEL " ")
-#define MSG_PREHEAT_1_ALL _UxGT("Forvarm " PREHEAT_1_LABEL " Alle")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Forvarm " PREHEAT_1_LABEL " Bed")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Forvarm " PREHEAT_1_LABEL " conf")
-#define MSG_PREHEAT_2 _UxGT("Forvarm " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Forvarm " PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL _UxGT("Forvarm " PREHEAT_2_LABEL " Alle")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Forvarm " PREHEAT_2_LABEL " Bed")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Forvarm " PREHEAT_2_LABEL " conf")
-#define MSG_COOLDOWN _UxGT("Afkøl")
-#define MSG_SWITCH_PS_ON _UxGT("Slå strøm til")
-#define MSG_SWITCH_PS_OFF _UxGT("Slå strøm fra")
-#define MSG_EXTRUDE _UxGT("Extruder")
-#define MSG_RETRACT _UxGT("Retract")
-#define MSG_MOVE_AXIS _UxGT("Flyt akser")
-#define MSG_BED_LEVELING _UxGT("Juster bed")
-#define MSG_LEVEL_BED _UxGT("Juster bed")
-#define MSG_MOVE_X _UxGT("Flyt X")
-#define MSG_MOVE_Y _UxGT("Flyt Y")
-#define MSG_MOVE_Z _UxGT("Flyt Z")
-#define MSG_MOVE_E _UxGT("Extruder")
-#define MSG_MOVE_Z_DIST _UxGT("Flyt %smm")
-#define MSG_MOVE_01MM _UxGT("Flyt 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Flyt 1mm")
-#define MSG_MOVE_10MM _UxGT("Flyt 10mm")
-#define MSG_SPEED _UxGT("Hastighed")
-#define MSG_BED_Z _UxGT("Plade Z")
-#define MSG_NOZZLE _UxGT("Dyse")
+namespace Language_da {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_BED _UxGT("Plade")
-#define MSG_FAN_SPEED _UxGT("Blæser hastighed")
-#define MSG_FLOW _UxGT("Flow")
-#define MSG_CONTROL _UxGT("Kontrol")
-#define MSG_MIN _UxGT(" \002 Min")
-#define MSG_MAX _UxGT(" \002 Max")
-#define MSG_FACTOR _UxGT(" \002 Fact")
-#define MSG_AUTOTEMP _UxGT("Autotemp")
-#define MSG_LCD_ON _UxGT("Til")
-#define MSG_LCD_OFF _UxGT("Fra")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Vælg")
-#define MSG_ACC _UxGT("Accel")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retract")
-#define MSG_A_TRAVEL _UxGT("A-rejse")
-#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Asteps/mm")
- #define MSG_BSTEPS _UxGT("Bsteps/mm")
- #define MSG_CSTEPS _UxGT("Csteps/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xsteps/mm")
- #define MSG_BSTEPS _UxGT("Ysteps/mm")
- #define MSG_CSTEPS _UxGT("Zsteps/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Esteps/mm")
-#define MSG_E0_STEPS _UxGT("E1steps/mm")
-#define MSG_E1_STEPS _UxGT("E2steps/mm")
-#define MSG_E2_STEPS _UxGT("E3steps/mm")
-#define MSG_E3_STEPS _UxGT("E4steps/mm")
-#define MSG_E4_STEPS _UxGT("E5steps/mm")
-#define MSG_E5_STEPS _UxGT("E6steps/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatur")
-#define MSG_MOTION _UxGT("Bevægelse")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E i mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_CONTRAST _UxGT("LCD kontrast")
-#define MSG_STORE_EEPROM _UxGT("Gem i EEPROM")
-#define MSG_LOAD_EEPROM _UxGT("Hent fra EEPROM")
-#define MSG_RESTORE_FAILSAFE _UxGT("Gendan failsafe")
-#define MSG_REFRESH _UxGT("Genopfrisk")
-#define MSG_WATCH _UxGT("Info skærm")
-#define MSG_PREPARE _UxGT("Forbered")
-#define MSG_TUNE _UxGT("Tune")
-#define MSG_PAUSE_PRINT _UxGT("Pause printet")
-#define MSG_RESUME_PRINT _UxGT("Forsæt printet")
-#define MSG_STOP_PRINT _UxGT("Stop printet")
-#define MSG_MEDIA_MENU _UxGT("Print fra SD")
-#define MSG_NO_MEDIA _UxGT("Intet SD kort")
-#define MSG_DWELL _UxGT("Dvale...")
-#define MSG_USERWAIT _UxGT("Venter på bruger...")
-#define MSG_PRINT_ABORTED _UxGT("Print annulleret")
-#define MSG_NO_MOVE _UxGT("Ingen bevægelse.")
-#define MSG_KILLED _UxGT("DRÆBT. ")
-#define MSG_STOPPED _UxGT("STOPPET. ")
-#define MSG_CONTROL_RETRACT _UxGT("Tilbagetræk mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Skift Re.mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Tilbagetræk V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Skift UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#define MSG_FILAMENTCHANGE _UxGT("Skift filament")
-#define MSG_INIT_MEDIA _UxGT("Init. SD card")
-#define MSG_CHANGE_MEDIA _UxGT("Skift SD kort")
-#define MSG_ZPROBE_OUT _UxGT("Probe udenfor plade")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Selv-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s først")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
-#define MSG_HEATING_FAILED_LCD _UxGT("Opvarmning fejlet")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Fejl: reserve temp")
-#define MSG_THERMAL_RUNAWAY _UxGT("Temp løber løbsk")
-#define MSG_ERR_MAXTEMP _UxGT("Fejl: Maks temp")
-#define MSG_ERR_MINTEMP _UxGT("Fejl: Min temp")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Fejl: Maks Plade temp")
-#define MSG_ERR_MINTEMP_BED _UxGT("Fejl: Min Plade temp")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY først")
-#define MSG_HALTED _UxGT("PRINTER STOPPET")
-#define MSG_PLEASE_RESET _UxGT("Reset Venligst")
-#define MSG_SHORT_DAY _UxGT("d") // Kun et bogstav
-#define MSG_SHORT_HOUR _UxGT("h") // Kun et bogstav
-#define MSG_SHORT_MINUTE _UxGT("m") // Kun et bogstav
-#define MSG_HEATING _UxGT("Opvarmer...")
-#define MSG_BED_HEATING _UxGT("Opvarmer plade...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibrering")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibrer X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibrer Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibrer Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibrerings Center")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Danish");
-#define MSG_INFO_MENU _UxGT("Om Printer")
-#define MSG_INFO_PRINTER_MENU _UxGT("Printer Info")
-#define MSG_INFO_STATS_MENU _UxGT("Printer Stats")
-#define MSG_INFO_BOARD_MENU _UxGT("Kort Info")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
-#define MSG_INFO_EXTRUDERS _UxGT("Extruders")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_PROTOCOL _UxGT("Protocol")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" er klar");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Kort isat");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Kort fjernet");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Slå alle steppere fra");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Auto Home"); // G28
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Klik når du er klar");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Næste punkt");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Bed level er færdig!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Sæt forsk. af home");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Forsk. er nu aktiv");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Sæt origin");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Forvarm ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Forvarm ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end")
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Forvarm ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Forvarm ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end")
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" end ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Alle");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Forvarm ") PREHEAT_2_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Afkøl");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Slå strøm til");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Slå strøm fra");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extruder");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Flyt akser");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Juster bed");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Juster bed");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Flyt X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Flyt Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Flyt Z");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Flyt %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Flyt 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Flyt 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Flyt 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Hastighed");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Plade Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Dyse");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Dyse ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Dyse ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Dyse ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Dyse ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Dyse ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Dyse ") LCD_STR_N5;
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Ant. Prints")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Færdige")
- #define MSG_INFO_PRINT_TIME _UxGT("Total print tid")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Længste print")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total Extruderet")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Prints")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Færdige")
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Længste")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extruderet")
-#endif
+ PROGMEM Language_Str MSG_BED = _UxGT("Plade");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Blæser hastighed");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Blæser hastighed 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Blæser hastighed 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Blæser hastighed 3");
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrol");
+ PROGMEM Language_Str MSG_MIN = _UxGT(" \002 Min");
+ PROGMEM Language_Str MSG_MAX = _UxGT(" \002 Max");
+ PROGMEM Language_Str MSG_FACTOR = _UxGT(" \002 Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autotemp");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Til");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Fra");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Vælg");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Vælg ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Vælg ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Vælg ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Vælg ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Vælg ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Vælg ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-retract");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-rejse");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatur");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Bevægelse");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E i mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrast");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gem i EEPROM");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Hent fra EEPROM");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Gendan failsafe");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info skærm");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Forbered");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pause printet");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Forsæt printet");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Stop printet");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Print fra SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Intet SD kort");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Dvale...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Venter på bruger...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Print annulleret");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Ingen bevægelse.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("DRÆBT. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("STOPPET. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Tilbagetræk mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Skift Re.mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Tilbagetræk V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Skift UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Skift filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Skift filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Skift filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Skift filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Skift filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Skift filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Skift filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Skift SD kort");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Probe udenfor plade");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Selv-Test");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s først");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Opvarmning fejlet");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Fejl: reserve temp");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Temp løber løbsk");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Fejl: Maks temp");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Fejl: Min temp");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Fejl: Maks Plade temp");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Fejl: Min Plade temp");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY først");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("PRINTER STOPPET");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Reset Venligst");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // Kun et bogstav
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // Kun et bogstav
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // Kun et bogstav
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Opvarmer...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Opvarmer plade...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrering");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrer X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrer Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrer Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrerings Center");
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("Strømfors.")
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Om Printer");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Kort Info");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors");
-#define MSG_DRIVE_STRENGTH _UxGT("Driv Styrke")
-#define MSG_DAC_PERCENT _UxGT("Driv %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Ant. Prints");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total print tid");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Længste print");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruderet");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Prints");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Længste");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderet");
+ #endif
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Strømfors.");
-#define MSG_EXPECTED_PRINTER _UxGT("Forkert printer")
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Driv Styrke");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driv %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Skriv");
-#if LCD_HEIGHT >= 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Vent på start")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("af filament")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("skift")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Vent på")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament udskyd.")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Indsæt filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("og tryk på knap")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("for at fortsætte...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Vent på")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament indtag")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Vent på at print")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("fortsætter")
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Vent venligst...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Udskyder...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Indsæt og klik")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Indtager...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsætter...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Forsæt print");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Forkert printer");
+
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vent på start", "af filament", "skift"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Vent på", "filament udskyd."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Indsæt filament", "og tryk på knap", "for at fortsætte..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Vent på", "filament indtag"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Vent på at print", "fortsætter"));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vent venligst..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Udskyder..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Indsæt og klik"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Indtager..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsætter..."));
+ #endif // LCD_HEIGHT < 4
+}
diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h
index 55c5749524..9fa894bb96 100644
--- a/Marlin/src/lcd/language/language_de.h
+++ b/Marlin/src/lcd/language/language_de.h
@@ -29,545 +29,652 @@
*
*/
-#define CHARSIZE 2
+namespace Language_de {
+ using namespace Language_en; // Inherit undefined strings from English
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("ÄäÖöÜüß²³")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Deutsche");
-#define WELCOME_MSG MACHINE_NAME _UxGT(" bereit")
-#define MSG_YES _UxGT("JA")
-#define MSG_NO _UxGT("NEIN")
-#define MSG_BACK _UxGT("Zurück")
-#define MSG_MEDIA_ABORTING _UxGT("Abbruch...")
-#define MSG_MEDIA_INSERTED _UxGT("Medium erkannt")
-#define MSG_MEDIA_REMOVED _UxGT("Medium entfernt")
-#define MSG_MEDIA_RELEASED _UxGT("Medium freigegeben")
-#define MSG_MEDIA_WAITING _UxGT("Warten auf Medium")
-#define MSG_MEDIA_READ_ERROR _UxGT("Medium Lesefehler")
-#define MSG_MEDIA_USB_REMOVED _UxGT("USB Gerät entfernt")
-#define MSG_MEDIA_USB_FAILED _UxGT("USB Start fehlge.")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstopp") // Max length 8 characters
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Software-Endstopp")
-#define MSG_MAIN _UxGT("Hauptmenü")
-#define MSG_ADVANCED_SETTINGS _UxGT("Erw. Einstellungen")
-#define MSG_CONFIGURATION _UxGT("Konfiguration")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Motoren deaktivieren") // M84 :: Max length 19 characters
-#define MSG_DEBUG_MENU _UxGT("Debug-Menü")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Statusbalken-Test")
-#define MSG_AUTO_HOME _UxGT("Home XYZ") // G28
-#define MSG_AUTO_HOME_X _UxGT("Home X")
-#define MSG_AUTO_HOME_Y _UxGT("Home Y")
-#define MSG_AUTO_HOME_Z _UxGT("Home Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Z-Achsen ausgleichen")
-#define MSG_LEVEL_BED_HOMING _UxGT("Home XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Klick zum Starten")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Nächste Koordinate")
-#define MSG_LEVEL_BED_DONE _UxGT("Nivellieren fertig!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Ausblendhöhe")
-#define MSG_SET_HOME_OFFSETS _UxGT("Setze Homeversatz")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Homeversatz aktiv")
-#define MSG_SET_ORIGIN _UxGT("Setze Nullpunkte") //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
-#define MSG_PREHEAT_1 _UxGT(PREHEAT_1_LABEL " Vorwärmen")
-#define MSG_PREHEAT_1_N _UxGT(PREHEAT_1_LABEL " Vorwärmen ")
-#define MSG_PREHEAT_1_ALL _UxGT(PREHEAT_1_LABEL " Alles Vorwärmen")
-#define MSG_PREHEAT_1_END _UxGT(PREHEAT_1_LABEL " Extr. Vorwärmen")
-#define MSG_PREHEAT_1_BEDONLY _UxGT(PREHEAT_1_LABEL " Bett Vorwärmen")
-#define MSG_PREHEAT_1_SETTINGS _UxGT(PREHEAT_1_LABEL " Einstellungen")
-#define MSG_PREHEAT_2 _UxGT(PREHEAT_2_LABEL " Vorwärmen")
-#define MSG_PREHEAT_2_N _UxGT(PREHEAT_2_LABEL " Vorwärmen ")
-#define MSG_PREHEAT_2_ALL _UxGT(PREHEAT_2_LABEL " Alles Vorwärmen")
-#define MSG_PREHEAT_2_END _UxGT(PREHEAT_2_LABEL " Extr. Vorwärmen")
-#define MSG_PREHEAT_2_BEDONLY _UxGT(PREHEAT_2_LABEL " Bett Vorwärmen")
-#define MSG_PREHEAT_2_SETTINGS _UxGT(PREHEAT_2_LABEL " Einstellungen")
-#define MSG_PREHEAT_CUSTOM _UxGT("benutzerdef. Heizen")
-#define MSG_COOLDOWN _UxGT("Abkühlen")
-#define MSG_LASER_MENU _UxGT("Laser")
-#define MSG_LASER_OFF _UxGT("Laser aus")
-#define MSG_LASER_ON _UxGT("Laser an")
-#define MSG_LASER_POWER _UxGT("Laserleistung")
-#define MSG_SPINDLE_MENU _UxGT("Spindel-Steuerung")
-#define MSG_SPINDLE_OFF _UxGT("Spindel aus")
-#define MSG_SPINDLE_ON _UxGT("Spindel an")
-#define MSG_SPINDLE_POWER _UxGT("Spindelleistung")
-#define MSG_SPINDLE_REVERSE _UxGT("Spindelrichtung")
-#define MSG_SWITCH_PS_ON _UxGT("Netzteil ein")
-#define MSG_SWITCH_PS_OFF _UxGT("Netzteil aus")
-#define MSG_EXTRUDE _UxGT("Extrudieren")
-#define MSG_RETRACT _UxGT("Einzug")
-#define MSG_MOVE_AXIS _UxGT("Achsen bewegen")
-#define MSG_BED_LEVELING _UxGT("Bett-Nivellierung")
-#define MSG_LEVEL_BED _UxGT("Bett nivellieren")
-#define MSG_LEVEL_CORNERS _UxGT("Ecken nivellieren")
-#define MSG_NEXT_CORNER _UxGT("Nächste Ecke")
-#define MSG_MESH_EDITOR _UxGT("Netz Editor")
-#define MSG_EDIT_MESH _UxGT("Netz bearbeiten")
-#define MSG_EDITING_STOPPED _UxGT("Netzbearb. angeh.")
-#define MSG_PROBING_MESH _UxGT("Messpunkt")
-#define MSG_MESH_X _UxGT("Index X")
-#define MSG_MESH_Y _UxGT("Index Y")
-#define MSG_MESH_EDIT_Z _UxGT("Z-Wert")
-#define MSG_USER_MENU _UxGT("Benutzer-Menü")
-#define MSG_LCD_TILTING_MESH _UxGT("Berührungspunkt")
-#define MSG_M48_TEST _UxGT("M48 Sondentest")
-#define MSG_M48_POINT _UxGT("M48 Punkt")
-#define MSG_M48_DEVIATION _UxGT("Abweichung")
-#define MSG_IDEX_MENU _UxGT("IDEX-Modus")
-#define MSG_OFFSETS_MENU _UxGT("Werkzeugversätze")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Autom. parken")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplizieren")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Spiegelkopie")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("vollstä. Kontrolle")
-#define MSG_X_OFFSET _UxGT("2. Düse X")
-#define MSG_Y_OFFSET _UxGT("2. Düse Y")
-#define MSG_Z_OFFSET _UxGT("2. Düse Z")
-#define MSG_UBL_DOING_G29 _UxGT("G29 ausführen")
-#define MSG_UBL_TOOLS _UxGT("UBL-Werkzeuge")
-#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-#define MSG_UBL_MANUAL_MESH _UxGT("Netz manuell erst.")
-#define MSG_UBL_BC_INSERT _UxGT("Unterlegen & messen")
-#define MSG_UBL_BC_INSERT2 _UxGT("Messen")
-#define MSG_UBL_BC_REMOVE _UxGT("Entfernen & messen")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Nächster Punkt...")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("UBL aktivieren")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("UBL deaktivieren")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Betttemperatur")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Hotend-Temp.")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Netz bearbeiten")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Eigenes Netz bearb.")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Feineinstellung...")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Bearbeitung beendet")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Eigenes Netz erst.")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Netz erstellen")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT(PREHEAT_1_LABEL " Netz erstellen")
-#define MSG_UBL_BUILD_MESH_M2 _UxGT(PREHEAT_2_LABEL " Netz erstellen")
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Netz erstellen kalt")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Netzhöhe einst.")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Höhe")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Netz validieren")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT(PREHEAT_1_LABEL " Netz validieren")
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT(PREHEAT_2_LABEL " Netz validieren")
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Eig. Netz validieren")
-#define MSG_G26_HEATING_NOZZLE _UxGT("G26 Heating Nozzle")
-#define MSG_G26_HEATING_BED _UxGT("G26 heizt Bett")
-#define MSG_G26_FIXED_LENGTH _UxGT("Feste Länge Prime")
-#define MSG_G26_PRIME_DONE _UxGT("Priming fertig")
-#define MSG_G26_CANCELED _UxGT("G26 abgebrochen")
-#define MSG_G26_LEAVING _UxGT("G26 verlassen")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Netzerst. forts.")
-#define MSG_UBL_MESH_LEVELING _UxGT("Netz-Nivellierung")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Punkt-Nivell.")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Gitternetz-Nivell.")
-#define MSG_UBL_MESH_LEVEL _UxGT("Netz nivellieren")
-#define MSG_UBL_SIDE_POINTS _UxGT("Eckpunkte")
-#define MSG_UBL_MAP_TYPE _UxGT("Kartentyp")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Karte ausgeben")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Ausgabe für Host")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Ausgabe für CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Externe Sicherung")
-#define MSG_UBL_INFO_UBL _UxGT("UBL-Info ausgeben")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Menge an Füllung")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Manuelles Füllen")
-#define MSG_UBL_SMART_FILLIN _UxGT("Cleveres Füllen")
-#define MSG_UBL_FILLIN_MESH _UxGT("Netz Füllen")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Alles annullieren")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Nächstlieg. ann.")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Feineinst. Alles")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Feineinst. Nächstl.")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Netz-Speicherplatz")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Speicherort")
-#define MSG_UBL_LOAD_MESH _UxGT("Bettnetz laden")
-#define MSG_UBL_SAVE_MESH _UxGT("Bettnetz speichern")
-#define MSG_MESH_LOADED _UxGT("Netz %i geladen")
-#define MSG_MESH_SAVED _UxGT("Netz %i gespeichert")
-#define MSG_UBL_NO_STORAGE _UxGT("Kein Speicher")
-#define MSG_UBL_SAVE_ERROR _UxGT("Err:UBL speichern")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Err:UBL wiederherst.")
-#define MSG_UBL_Z_OFFSET _UxGT("Z-Versatz: ")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Versatz angehalten")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Schrittweises UBL")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" bereit");
-#define MSG_LED_CONTROL _UxGT("Licht-Steuerung")
-#define MSG_LEDS _UxGT("Licht")
-#define MSG_LED_PRESETS _UxGT("Licht-Einstellung")
-#define MSG_SET_LEDS_RED _UxGT("Rot")
-#define MSG_SET_LEDS_ORANGE _UxGT("Orange")
-#define MSG_SET_LEDS_YELLOW _UxGT("Gelb")
-#define MSG_SET_LEDS_GREEN _UxGT("Grün")
-#define MSG_SET_LEDS_BLUE _UxGT("Blau")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Violett")
-#define MSG_SET_LEDS_WHITE _UxGT("Weiß")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Standard")
-#define MSG_CUSTOM_LEDS _UxGT("Benutzerdefiniert")
-#define MSG_INTENSITY_R _UxGT("Intensität Rot")
-#define MSG_INTENSITY_G _UxGT("Intensität Grün")
-#define MSG_INTENSITY_B _UxGT("Intensität Blau")
-#define MSG_INTENSITY_W _UxGT("Intensität Weiß")
-#define MSG_LED_BRIGHTNESS _UxGT("Helligkeit")
+ PROGMEM Language_Str MSG_YES = _UxGT("JA");
+ PROGMEM Language_Str MSG_NO = _UxGT("NEIN");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Zurück");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Abbruch...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Medium erkannt");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Medium entfernt");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("Medium freigegeben");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Warten auf Medium");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Medium Lesefehler");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("USB Gerät entfernt");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("USB Start fehlge.");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstopp"); // Max length 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Software-Endstopp");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Hauptmenü");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Erw. Einstellungen");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Konfiguration");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Motoren deaktivieren"); // M84 :: Max length 19 characters
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Debug-Menü");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Statusbalken-Test");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Z-Achsen ausgleichen");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Klick zum Starten");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Nächste Koordinate");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Nivellieren fertig!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Ausblendhöhe");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Setze Homeversatz");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Homeversatz aktiv");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Setze Nullpunkte"); //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
+ PROGMEM Language_Str MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = PREHEAT_1_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" Einstellungen");
+ PROGMEM Language_Str MSG_PREHEAT_2 = PREHEAT_2_LABEL _UxGT(" Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = PREHEAT_2_LABEL _UxGT(" Vorwärmen") " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = PREHEAT_2_LABEL _UxGT(" Extr. Vorwärm. ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = PREHEAT_2_LABEL _UxGT(" Alles Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = PREHEAT_2_LABEL _UxGT(" Bett Vorwärmen");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = PREHEAT_2_LABEL _UxGT(" Einstellungen");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("benutzerdef. Heizen");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Abkühlen");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Laser");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Laser aus");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Laser an");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Laserleistung");
+ PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Spindel-Steuerung");
+ PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Spindel aus");
+ PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Spindel an");
+ PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Spindelleistung");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Spindelrichtung");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Netzteil ein");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Netzteil aus");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrudieren");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Einzug");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Achsen bewegen");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Bett-Nivellierung");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Bett nivellieren");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Ecken nivellieren");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Nächste Ecke");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Netz Editor");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Netz bearbeiten");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Netzbearb. angeh.");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Messpunkt");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Index X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Index Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Z-Wert");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Benutzer-Menü");
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Berührungspunkt");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Sondentest");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Punkt");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Abweichung");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("IDEX-Modus");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Werkzeugversätze");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Autom. parken");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplizieren");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Spiegelkopie");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("vollstä. Kontrolle");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2. Düse X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2. Düse Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2. Düse Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("G29 ausführen");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL-Werkzeuge");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Netz manuell erst.");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Unterlegen & messen");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Messen");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Entfernen & messen");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Nächster Punkt...");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("UBL aktivieren");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL deaktivieren");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Betttemperatur");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Betttemperatur");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend-Temp.");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend-Temp.");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Netz bearbeiten");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Eigenes Netz bearb.");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Feineinstellung...");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Bearbeitung beendet");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Eigenes Netz erst.");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Netz erstellen");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = PREHEAT_1_LABEL _UxGT(" Netz erstellen");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = PREHEAT_2_LABEL _UxGT(" Netz erstellen");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Netz erstellen kalt");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Netzhöhe einst.");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Höhe");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Netz validieren");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = PREHEAT_1_LABEL _UxGT(" Netz validieren");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = PREHEAT_2_LABEL _UxGT(" Netz validieren");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Eig. Netz validieren");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Heating Nozzle");
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 heizt Bett");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Feste Länge Prime");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Priming fertig");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 abgebrochen");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("G26 verlassen");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Netzerst. forts.");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Netz-Nivellierung");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Punkt-Nivell.");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Gitternetz-Nivell.");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Netz nivellieren");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Eckpunkte");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Kartentyp");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Karte ausgeben");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Ausgabe für Host");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Ausgabe für CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externe Sicherung");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("UBL-Info ausgeben");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Menge an Füllung");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Manuelles Füllen");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Cleveres Füllen");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Netz Füllen");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Alles annullieren");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Nächstlieg. ann.");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Feineinst. Alles");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Feineinst. Nächstl.");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Netz-Speicherplatz");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Speicherort");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Bettnetz laden");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Bettnetz speichern");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Netz %i geladen");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Netz %i gespeichert");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Kein Speicher");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Err:UBL speichern");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Err:UBL wiederherst.");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Z-Versatz: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Versatz angehalten");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Schrittweises UBL");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Netz erstellen kalt");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Cleveres Füllen");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Netz validieren");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Feineinst. Alles");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Netz validieren");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Feineinst. Alles");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Bettnetz speichern");
-#define MSG_MOVING _UxGT("In Bewegung...")
-#define MSG_FREE_XY _UxGT("Abstand XY")
-#define MSG_MOVE_X _UxGT("Bewege X")
-#define MSG_MOVE_Y _UxGT("Bewege Y")
-#define MSG_MOVE_Z _UxGT("Bewege Z")
-#define MSG_MOVE_E _UxGT("Bewege Extruder")
-#define MSG_HOTEND_TOO_COLD _UxGT("Hotend zu kalt")
-#define MSG_MOVE_Z_DIST _UxGT(" %s mm")
-#define MSG_MOVE_01MM _UxGT(" 0,1 mm")
-#define MSG_MOVE_1MM _UxGT(" 1,0 mm")
-#define MSG_MOVE_10MM _UxGT("10,0 mm")
-#define MSG_SPEED _UxGT("Geschw.")
-#define MSG_BED_Z _UxGT("Bett Z")
-#define MSG_NOZZLE _UxGT("Düse")
-#define MSG_BED _UxGT("Bett")
-#define MSG_CHAMBER _UxGT("Gehäuse")
-#define MSG_FAN_SPEED _UxGT("Lüfter")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Geschw. Extralüfter")
-#define MSG_FLOW _UxGT("Flussrate")
-#define MSG_CONTROL _UxGT("Einstellungen")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Faktor")
-#define MSG_AUTOTEMP _UxGT("Auto Temperatur")
-#define MSG_LCD_ON _UxGT("an")
-#define MSG_LCD_OFF _UxGT("aus")
-#define MSG_PID_P _UxGT("PID P")
-#define MSG_PID_I _UxGT("PID I")
-#define MSG_PID_D _UxGT("PID D")
-#define MSG_PID_C _UxGT("PID C")
-#define MSG_SELECT _UxGT("Auswählen")
-#define MSG_ACC _UxGT("Beschleunigung")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("V A Jerk")
- #define MSG_VB_JERK _UxGT("V B Jerk")
- #define MSG_VC_JERK _UxGT("V C Jerk")
-#else
- #define MSG_VA_JERK _UxGT("V X Jerk")
- #define MSG_VB_JERK _UxGT("V Y Jerk")
- #define MSG_VC_JERK _UxGT("V Z Jerk")
-#endif
-#define MSG_VE_JERK _UxGT("V E Jerk")
-#define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev")
-#define MSG_VELOCITY _UxGT("Geschwindigkeit")
-#define MSG_VMAX _UxGT("V max ") // space intentional
-#define MSG_VMIN _UxGT("V min ")
-#define MSG_VTRAV_MIN _UxGT("V min Leerfahrt")
-#define MSG_ACCELERATION _UxGT("Beschleunigung")
-#define MSG_AMAX _UxGT("A max ") // space intentional
-#define MSG_A_RETRACT _UxGT("A Einzug")
-#define MSG_A_TRAVEL _UxGT("A Leerfahrt")
-#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A Steps/mm")
- #define MSG_BSTEPS _UxGT("B Steps/mm")
- #define MSG_CSTEPS _UxGT("C Steps/mm")
-#else
- #define MSG_ASTEPS _UxGT("X Steps/mm")
- #define MSG_BSTEPS _UxGT("Y Steps/mm")
- #define MSG_CSTEPS _UxGT("Z Steps/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E Steps/mm")
-#define MSG_E0_STEPS _UxGT("E1 Steps/mm")
-#define MSG_E1_STEPS _UxGT("E2 Steps/mm")
-#define MSG_E2_STEPS _UxGT("E3 Steps/mm")
-#define MSG_E3_STEPS _UxGT("E4 Steps/mm")
-#define MSG_E4_STEPS _UxGT("E5 Steps/mm")
-#define MSG_E5_STEPS _UxGT("E6 Steps/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatur")
-#define MSG_MOTION _UxGT("Bewegung")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm³")
-#define MSG_FILAMENT_DIAM _UxGT("Filamentdurchmesser")
-#define MSG_FILAMENT_UNLOAD _UxGT("Entladen mm")
-#define MSG_FILAMENT_LOAD _UxGT("Laden mm")
-#define MSG_ADVANCE_K _UxGT("Vorschubfaktor")
-#define MSG_CONTRAST _UxGT("LCD-Kontrast")
-#define MSG_STORE_EEPROM _UxGT("Konfig. speichern")
-#define MSG_LOAD_EEPROM _UxGT("Konfig. laden")
-#define MSG_RESTORE_FAILSAFE _UxGT("Standardwerte laden")
-#define MSG_INIT_EEPROM _UxGT("Werkseinstellungen")
-#define MSG_MEDIA_UPDATE _UxGT("FW Update vom Medium")
-#define MSG_RESET_PRINTER _UxGT("Drucker neustarten")
-#define MSG_REFRESH _UxGT("Aktualisieren")
-#define MSG_WATCH _UxGT("Info")
-#define MSG_PREPARE _UxGT("Vorbereitung")
-#define MSG_TUNE _UxGT("Justierung")
-#define MSG_START_PRINT _UxGT("Starte Druck")
-#define MSG_BUTTON_NEXT _UxGT("Weiter")
-#define MSG_BUTTON_INIT _UxGT("Bestätigen")
-#define MSG_BUTTON_STOP _UxGT("Stop")
-#define MSG_BUTTON_PRINT _UxGT("Drucken")
-#define MSG_BUTTON_RESET _UxGT("Reseten")
-#define MSG_BUTTON_CANCEL _UxGT("Abbrechen")
-#define MSG_BUTTON_DONE _UxGT("Fertig")
-#define MSG_PAUSE_PRINT _UxGT("SD-Druck pausieren")
-#define MSG_RESUME_PRINT _UxGT("SD-Druck fortsetzen")
-#define MSG_STOP_PRINT _UxGT("SD-Druck abbrechen")
-#define MSG_OUTAGE_RECOVERY _UxGT("Wiederh. n. Stroma.")
-#define MSG_MEDIA_MENU _UxGT("Druck vom Medium")
-#define MSG_NO_MEDIA _UxGT("Kein Medium")
-#define MSG_DWELL _UxGT("Warten...")
-#define MSG_USERWAIT _UxGT("Klick zum Fortsetzen")
-#define MSG_PRINT_PAUSED _UxGT("Druck pausiert...")
-#define MSG_PRINTING _UxGT("Druckt...")
-#define MSG_PRINT_ABORTED _UxGT("Druck abgebrochen")
-#define MSG_NO_MOVE _UxGT("Motoren angeschaltet")
-#define MSG_KILLED _UxGT("ABGEBROCHEN")
-#define MSG_STOPPED _UxGT("ANGEHALTEN")
-#define MSG_CONTROL_RETRACT _UxGT("Einzug mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Wechs. Einzug mm")
-#define MSG_CONTROL_RETRACTF _UxGT("V Einzug")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Z-Sprung mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Wechs. UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("Autom. Einzug")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Einzugslänge")
-#define MSG_FILAMENT_PURGE_LENGTH _UxGT("Entladelänge")
-#define MSG_TOOL_CHANGE _UxGT("Werkzeugwechsel")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Z anheben")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Prime-Geschwin.")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Einzug-Geschwin.")
-#define MSG_NOZZLE_STANDBY _UxGT("Düsen-Standby")
-#define MSG_FILAMENTCHANGE _UxGT("Filament wechseln")
-#define MSG_FILAMENTLOAD _UxGT("Filament laden")
-#define MSG_FILAMENTUNLOAD _UxGT("Filament entladen")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Alles entladen")
-#define MSG_INIT_MEDIA _UxGT("Medium initial.") // Manually initialize the SD-card via user interface
-#define MSG_CHANGE_MEDIA _UxGT("Medium getauscht") // SD-card changed by user. For machines with no autocarddetect. Both send "M21"
-#define MSG_RELEASE_MEDIA _UxGT("Medium freigeben") // if Marlin gets confused - M22
-#define MSG_ZPROBE_OUT _UxGT("Z-Sonde außerhalb")
-#define MSG_SKEW_FACTOR _UxGT("Korrekturfaktor")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Selbsttest")
-#define MSG_BLTOUCH_RESET _UxGT("BLTouch zurücks.")
-#define MSG_BLTOUCH_DEPLOY _UxGT("BLTouch ausfahren")
-#define MSG_BLTOUCH_SW_MODE _UxGT("BLTouch SW-Modus")
-#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch 5V-Modus")
-#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch OD-Modus")
-#define MSG_BLTOUCH_MODE_STORE _UxGT("BLTouch Mode Store")
-#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("BLTouch auf 5V")
-#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("BLTouch auf OD")
-#define MSG_BLTOUCH_STOW _UxGT("BLTouch einfahren")
-#define MSG_BLTOUCH_MODE_ECHO _UxGT("BLTouch Modus: ")
-#define MSG_BLTOUCH_MODE_CHANGE _UxGT("ACHTUNG: Falsche Einstellung - kann zu Beschädigung führen! Fortfahren?")
-#define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#define MSG_TOUCHMI_INIT _UxGT("TouchMI initial.")
-#define MSG_TOUCHMI_ZTEST _UxGT("Test Z-Versatz")
-#define MSG_TOUCHMI_SAVE _UxGT("Speichern")
-#define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("TouchMI ausfahren")
-#define MSG_MANUAL_DEPLOY _UxGT("Z-Sonde ausfahren")
-#define MSG_MANUAL_STOW _UxGT("Z-Sonde einfahren")
-#define MSG_HOME_FIRST _UxGT("Vorher %s%s%s homen")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Sondenversatz Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Total")
-#define MSG_ENDSTOP_ABORT _UxGT("Abbr. mit Endstopp")
-#define MSG_HEATING_FAILED_LCD _UxGT("HEIZEN ERFOLGLOS")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Bett heizen fehlge.")
-#define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Geh. heizen fehlge.")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("REDUND. TEMP-ABWEI.")
-#define MSG_THERMAL_RUNAWAY LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("BETT") MSG_THERMAL_RUNAWAY
-#define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("GEH.") MSG_THERMAL_RUNAWAY
-#define MSG_ERR_MAXTEMP LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN")
-#define MSG_ERR_MINTEMP LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN")
-#define MSG_ERR_MAXTEMP_BED _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN")
-#define MSG_ERR_MINTEMP_BED _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err:Gehäuse max Temp")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err:Gehäuse min Temp")
-#define MSG_ERR_Z_HOMING _UxGT("Vorher XY homen")
-#define MSG_HALTED _UxGT("DRUCKER GESTOPPT")
-#define MSG_PLEASE_RESET _UxGT("Bitte neustarten")
-#define MSG_SHORT_DAY _UxGT("t") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("heizt...")
-#define MSG_COOLING _UxGT("kühlt...")
-#define MSG_BED_HEATING _UxGT("Bett heizt...")
-#define MSG_BED_COOLING _UxGT("Bett kühlt...")
-#define MSG_CHAMBER_HEATING _UxGT("Gehäuse heizt...")
-#define MSG_CHAMBER_COOLING _UxGT("Gehäuse kühlt...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta kalibrieren")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibriere X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibriere Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibriere Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibriere Mitte")
-#define MSG_DELTA_SETTINGS _UxGT("Delta Einst. anzeig.")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Autom. Kalibrierung")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Delta Höhe setzen")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Sondenversatz Z")
-#define MSG_DELTA_DIAG_ROD _UxGT("Diag Rod")
-#define MSG_DELTA_HEIGHT _UxGT("Höhe")
-#define MSG_DELTA_RADIUS _UxGT("Radius")
-#define MSG_INFO_MENU _UxGT("Über den Drucker")
-#define MSG_INFO_PRINTER_MENU _UxGT("Drucker-Info")
-#define MSG_3POINT_LEVELING _UxGT("3-Punkt-Nivellierung")
-#define MSG_LINEAR_LEVELING _UxGT("Lineare Nivellierung")
-#define MSG_BILINEAR_LEVELING _UxGT("Bilineare Nivell.")
-#define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling")
-#define MSG_MESH_LEVELING _UxGT("Netz-Nivellierung")
-#define MSG_INFO_STATS_MENU _UxGT("Drucker-Statistik")
-#define MSG_INFO_BOARD_MENU _UxGT("Board-Info")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistoren")
-#define MSG_INFO_EXTRUDERS _UxGT("Extruder")
-#define MSG_INFO_BAUDRATE _UxGT("Baudrate")
-#define MSG_INFO_PROTOCOL _UxGT("Protokoll")
-#define MSG_CASE_LIGHT _UxGT("Beleuchtung")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Helligkeit")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Licht-Steuerung");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Licht");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Licht-Einstellung");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Rot");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Orange");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Gelb");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Grün");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Blau");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Violett");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Weiß");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Standard");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Benutzerdefiniert");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intensität Rot");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intensität Grün");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intensität Blau");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intensität Weiß");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Helligkeit");
-#define MSG_EXPECTED_PRINTER _UxGT("Falscher Drucker")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("In Bewegung...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Abstand XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Bewege X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Bewege Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Bewege Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Bewege Extruder");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Bewege Extruder ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Bewege Extruder ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Bewege Extruder ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Bewege Extruder ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Bewege Extruder ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Bewege Extruder ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Hotend zu kalt");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT(" %s mm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT(" 0,1 mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT(" 1,0 mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("10,0 mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Geschw.");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Bett Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Düse");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Düse ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Düse ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Düse ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Düse ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Düse ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Düse ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Bett");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Gehäuse");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Lüfter");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Lüfter 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Lüfter 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Lüfter 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Geschw. Extralüfter");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Geschw. Extralüfter 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Geschw. Extralüfter 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Geschw. Extralüfter 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flussrate");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flussrate ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flussrate ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flussrate ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flussrate ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flussrate ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flussrate ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Einstellungen");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Faktor");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto Temperatur");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("an");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("aus");
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Auswählen");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Auswählen ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Auswählen ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Auswählen ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Auswählen ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Auswählen ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Auswählen ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Beschleunigung");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Jerk");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V ") LCD_STR_A _UxGT(" Jerk");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V ") LCD_STR_B _UxGT(" Jerk");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V ") LCD_STR_C _UxGT(" Jerk");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("V E Jerk");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Geschwindigkeit");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("V max ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("V max ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("V max ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("V max ") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("V max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("V max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("V max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("V max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("V max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("V max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("V min ");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("V min Leerfahrt");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Beschleunigung");
+ PROGMEM Language_Str MSG_AMAX = _UxGT("A max "); // space intentional
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("A max ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("A max ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("A max ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("A max ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("A max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("A max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("A max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("A max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("A max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("A max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A Einzug");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A Leerfahrt");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Steps/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E_STEPS = LCD_STR_E _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" Steps/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatur");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Bewegung");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Filamentdurchmesser");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Filamentdurchmesser ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Filamentdurchmesser ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Filamentdurchmesser ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Filamentdurchmesser ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Filamentdurchmesser ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Filamentdurchmesser ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Entladen mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Laden mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Vorschubfaktor");
+ PROGMEM Language_Str MSG_ADVANCE_E0 = _UxGT("Vorschubfaktor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_E1 = _UxGT("Vorschubfaktor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_E2 = _UxGT("Vorschubfaktor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_E3 = _UxGT("Vorschubfaktor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_E4 = _UxGT("Vorschubfaktor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_E5 = _UxGT("Vorschubfaktor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD-Kontrast");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Konfig. speichern");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Konfig. laden");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Standardwerte laden");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Werkseinstellungen");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("FW Update vom Medium");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Drucker neustarten");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aktualisieren");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Vorbereitung");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Justierung");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Starte Druck");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Weiter");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Bestätigen");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Drucken");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Reseten");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Abbrechen");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Fertig");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("SD-Druck pausieren");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("SD-Druck fortsetzen");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("SD-Druck abbrechen");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Wiederh. n. Stroma.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Druck vom Medium");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Kein Medium");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Warten...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Klick zum Fortsetzen");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Druck pausiert...");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Druckt...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Druck abgebrochen");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Motoren angeschaltet");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ABGEBROCHEN");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ANGEHALTEN");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Einzug mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Wechs. Einzug mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("V Einzug");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z-Sprung mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Wechs. UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Autom. Einzug");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Einzugslänge");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Entladelänge");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Werkzeugwechsel");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z anheben");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Prime-Geschwin.");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Einzug-Geschwin.");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Düsen-Standby");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Filament wechseln");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Filament wechseln ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Filament wechseln ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Filament wechseln ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Filament wechseln ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Filament wechseln ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Filament wechseln ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Filament laden");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Filament laden ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Filament laden ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Filament laden ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Filament laden ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Filament laden ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Filament laden ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Filament entladen ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Filament entladen ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Filament entladen ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Filament entladen ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Filament entladen ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Filament entladen ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Alles entladen");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Medium initial."); // Manually initialize the SD-card via user interface
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Medium getauscht"); // SD-card changed by user. For machines with no autocarddetect. Both send "M21"
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Medium freigeben"); // if Marlin gets confused - M22
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z-Sonde außerhalb");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Korrekturfaktor");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Selbsttest");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("BLTouch zurücks.");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch ausfahren");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("BLTouch SW-Modus");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch 5V-Modus");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch OD-Modus");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("BLTouch Mode Store");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch auf 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch auf OD");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("BLTouch einfahren");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("BLTouch Modus: ");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("ACHTUNG: Falsche Einstellung - kann zu Beschädigung führen! Fortfahren?");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("TouchMI initial.");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Test Z-Versatz");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Speichern");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI ausfahren");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Z-Sonde ausfahren");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Z-Sonde einfahren");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Vorher %s%s%s homen");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Sondenversatz Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Total");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Abbr. mit Endstopp");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("HEIZEN ERFOLGLOS");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Bett heizen fehlge.");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_CHAMBER = _UxGT("Geh. heizen fehlge.");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEMP-ABWEI.");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = " " LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("BETT") " " LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("GEH.") " " LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = " " LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = " " LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Err:Gehäuse max Temp");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Err:Gehäuse min Temp");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Vorher XY homen");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("DRUCKER GESTOPPT");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Bitte neustarten");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("t"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("heizt...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("kühlt...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Bett heizt...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Bett kühlt...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Gehäuse heizt...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Gehäuse kühlt...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrieren");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriere X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriere Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriere Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriere Mitte");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta Einst. anzeig.");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autom. Kalibrierung");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Delta Höhe setzen");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Sondenversatz Z");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Höhe");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Radius");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Über den Drucker");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Drucker-Info");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3-Punkt-Nivellierung");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Lineare Nivellierung");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Bilineare Nivell.");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Netz-Nivellierung");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Drucker-Statistik");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Board-Info");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistoren");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extruder");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baudrate");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokoll");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Beleuchtung");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Helligkeit");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Gesamte Drucke")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Komplette Drucke")
- #define MSG_INFO_PRINT_TIME _UxGT("Gesamte Druckzeit")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Längste Druckzeit")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Gesamt Extrudiert")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Drucke")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Komplette")
- #define MSG_INFO_PRINT_TIME _UxGT("Gesamte")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Längste")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrud.")
-#endif
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Falscher Drucker");
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("Netzteil")
-#define MSG_DRIVE_STRENGTH _UxGT("Motorleistung")
-#define MSG_DAC_PERCENT _UxGT("Treiber %")
-#define MSG_ERROR_TMC _UxGT("TMC Verbindungsfehler")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("DRUCK PAUSIERT")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("FILAMENT LADEN")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("FILAMENT ENTLADEN")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("FORTS. OPTIONEN:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Mehr entladen")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Druck weiter")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Düse: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Runout-Sensor")
-#define MSG_RUNOUT_DISTANCE_MM _UxGT("Runout-Weg mm")
-#define MSG_ERR_HOMING_FAILED _UxGT("Homing gescheitert")
-#define MSG_ERR_PROBING_FAILED _UxGT("Probing gescheitert")
-#define MSG_M600_TOO_COLD _UxGT("M600: zu kalt")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Gesamte Drucke");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette Drucke");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Gesamte Druckzeit");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Längste Druckzeit");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Gesamt Extrudiert");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Drucke");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Gesamte");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Längste");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud.");
+ #endif
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("FILAMENT WECHSEL")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("FILAMENT WÄHLEN")
-#define MSG_MMU2_MENU _UxGT("MMU")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("Update MMU Firmware!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU handeln erfor.")
-#define MSG_MMU2_RESUME _UxGT("Druck fortsetzen")
-#define MSG_MMU2_RESUMING _UxGT("Fortfahren...")
-#define MSG_MMU2_LOAD_FILAMENT MSG_FILAMENTLOAD
-#define MSG_MMU2_LOAD_ALL _UxGT("Lade alle")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Düse laden")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Filament auswerfen")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Filament 1 auswerfen")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Filament 2 auswerfen")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Filament 3 auswerfen")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Filament 4 auswerfen")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Filament 5 auswerfen")
-#define MSG_MMU2_UNLOAD_FILAMENT MSG_FILAMENTUNLOAD
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Lade Fila. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Fila. auswerfen...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Fila. entladen...")
-#define MSG_MMU2_ALL _UxGT("Alle")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filament 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filament 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filament 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filament 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filament 5")
-#define MSG_MMU2_RESET _UxGT("setze MMU zurück")
-#define MSG_MMU2_RESETTING _UxGT("MMU zurücksetzen...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Entfernen, klicken")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Netzteil");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Motorleistung");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Treiber %");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("TMC Verbindungsfehler");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Werte speichern");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT WECHSEL");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("DRUCK PAUSIERT");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMENT LADEN");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMENT ENTLADEN");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FORTS. OPTIONEN:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Mehr entladen");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Druck weiter");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Düse: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Runout-Sensor");
+ PROGMEM Language_Str MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout-Weg mm");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Homing gescheitert");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Probing gescheitert");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: zu kalt");
-#define MSG_MIX _UxGT("Mix")
-#define MSG_MIX_COMPONENT _UxGT("Komponente")
-#define MSG_MIXER _UxGT("Mixer")
-#define MSG_GRADIENT _UxGT("Gradient") // equal Farbverlauf
-#define MSG_FULL_GRADIENT _UxGT("Volle Gradient")
-#define MSG_TOGGLE_MIX _UxGT("Mix umschalten")
-#define MSG_CYCLE_MIX _UxGT("Zyklus Mix")
-#define MSG_GRADIENT_MIX _UxGT("Gradient Mix")
-#define MSG_REVERSE_GRADIENT _UxGT("Umgekehrte Gradient")
-#define MSG_ACTIVE_VTOOL _UxGT("Aktives V-Tool")
-#define MSG_START_VTOOL _UxGT("V-Tool Start")
-#define MSG_END_VTOOL _UxGT("V-Tool Ende")
-#define MSG_GRADIENT_ALIAS _UxGT("V-Tool Alias")
-#define MSG_RESET_VTOOLS _UxGT("V-Tools Reseten")
-#define MSG_COMMIT_VTOOL _UxGT("V-Tool Mix sichern")
-#define MSG_VTOOLS_RESET _UxGT("V-Tools ist resetet")
-#define MSG_START_Z _UxGT("Z Start")
-#define MSG_END_Z _UxGT("Z Ende")
-#define MSG_GAMES _UxGT("Spiele")
-#define MSG_BRICKOUT _UxGT("Brickout")
-#define MSG_INVADERS _UxGT("Invaders")
-#define MSG_SNAKE _UxGT("Sn4k3")
-#define MSG_MAZE _UxGT("Maze")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("FILAMENT WÄHLEN");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("Update MMU Firmware!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU handeln erfor.");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Druck fortsetzen");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Fortfahren...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Filament laden");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Lade alle");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Düse laden");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Filament auswerfen");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Filament 1 auswerfen");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Filament 2 auswerfen");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Filament 3 auswerfen");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Filament 4 auswerfen");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Filament 5 auswerfen");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Filament entladen ");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Lade Fila. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Fila. auswerfen...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Fila. entladen...");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Alle");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filament 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filament 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filament 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filament 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filament 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("setze MMU zurück");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("MMU zurücksetzen...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Entfernen, klicken");
-//
-// Die Filament-Change-Bildschirme können bis zu 3 Zeilen auf einem 4-Zeilen-Display anzeigen
-// ...oder 2 Zeilen auf einem 3-Zeilen-Display.
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Knopf drücken um")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("Druck fortzusetzen")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Druck ist")
- #define MSG_PAUSE_PRINT_INIT_2 _UxGT("pausiert...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Warte auf den")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("Start des")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("Filamentwechsels...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Filament einlegen")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("und Knopf drücken")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("um fortzusetzen")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Knopf drücken um")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("Düse aufzuheizen")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Düse heizt auf")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("bitte warten...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Warte auf")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("Herausnahme")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("des Filaments...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Warte auf")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Laden des")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("Filaments...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Warte auf")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("Entladen des")
- #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("Filaments...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Klicke um")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("die Fila-Entladung")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_3 _UxGT("zu beenden")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Warte auf")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("Fortsetzen des")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("Drucks...")
-#else // LCD_HEIGHT < 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 MSG_USERWAIT
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Pausiert...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Bitte warten...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laden und Klick")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klick zum Heizen")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heizen...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Entladen...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Laden...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Entladen...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Klick zum beenden")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("der Fila-Entladung")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsetzen...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_MIX = _UxGT("Mix");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Komponente 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Komponente 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Komponente 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Komponente 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Komponente 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Komponente 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Mixer");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradient"); // equal Farbverlauf
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Volle Gradient");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Mix umschalten");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Zyklus Mix");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Gradient Mix");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Umgekehrte Gradient");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Aktives V-Tool");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("V-Tool Start");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT("V-Tool Ende");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("V-Tool Alias");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("V-Tools Reseten");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("V-Tool Mix sichern");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-Tools ist resetet");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Z Start:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT("Z Ende:");
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Spiele");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Maze");
-#define MSG_TMC_DRIVERS _UxGT("TMC Treiber") // Max length 18 characters
-#define MSG_TMC_CURRENT _UxGT("Treiber Strom")
-#define MSG_TMC_HYBRID_THRS _UxGT("Hybrid threshold")
-#define MSG_TMC_HOMING_THRS _UxGT("Sensorloses Homing")
-#define MSG_TMC_STEPPING_MODE _UxGT("Schrittmodus")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop einsch.")
-#define MSG_SERVICE_RESET _UxGT("Reset")
-#define MSG_SERVICE_IN _UxGT(" im:")
-#define MSG_BACKLASH _UxGT("Spiel")
-#define MSG_BACKLASH_CORRECTION _UxGT("Korrektur")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Glätten")
+ //
+ // Die Filament-Change-Bildschirme können bis zu 3 Zeilen auf einem 4-Zeilen-Display anzeigen
+ // ...oder 2 Zeilen auf einem 3-Zeilen-Display.
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Knopf drücken um", "Druck fortzusetzen"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_2_LINE("Druck ist", "pausiert..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Warte auf den", "Start des", "Filamentwechsels..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filament einlegen", "und Knopf drücken", "um fortzusetzen"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Knopf drücken um", "Düse aufzuheizen"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Düse heizt auf", "bitte warten..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Warte auf", "Herausnahme", "des Filaments..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Warte auf", "Laden des", "Filaments..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Warte auf", "Entladen des", "Filaments..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klicke um", "die Fila-Entladung", "zu beenden"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Warte auf", "Fortsetzen des", "Drucks..."));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick zum Fortsetzen"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Pausiert..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Bitte warten..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Laden und Klick"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klick zum Heizen"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heizen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Entladen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laden..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Entladen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klick zum beenden", "der Fila-Entladung"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsetzen..."));
+ #endif // LCD_HEIGHT < 4
+
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("TMC Treiber"); // Max length 18 characters
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Treiber Strom");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Hybrid threshold");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Sensorloses Homing");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Schrittmodus");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop einsch.");
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Reset");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" im:");
+ PROGMEM Language_Str MSG_BACKLASH = _UxGT("Spiel");
+ PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
+ PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
+ PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Korrektur");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Glätten");
+}
diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h
index 75bdfa3ed5..a74c8da12f 100644
--- a/Marlin/src/lcd/language/language_el.h
+++ b/Marlin/src/lcd/language/language_el.h
@@ -30,162 +30,225 @@
*/
#define DISPLAY_CHARSET_ISO10646_GREEK
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" έτοιμο.")
-#define MSG_MEDIA_INSERTED _UxGT("Εισαγωγή κάρτας")
-#define MSG_MEDIA_REMOVED _UxGT("Αφαίρεση κάρτας")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Βασική Οθόνη")
-#define MSG_AUTOSTART _UxGT("Αυτόματη εκκίνηση")
-#define MSG_DISABLE_STEPPERS _UxGT("Απενεργοποίηση Μοτέρ")
-#define MSG_AUTO_HOME _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο") //SHORTEN
-#define MSG_AUTO_HOME_X _UxGT("Αρχικό σημείο X")
-#define MSG_AUTO_HOME_Y _UxGT("Αρχικό σημείο Y")
-#define MSG_AUTO_HOME_Z _UxGT("Αρχικό σημείο Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Επαναφορά Επ. Εκτύπωσης") //SHORTEN
-#define MSG_LEVEL_BED_WAITING _UxGT("Επιπεδοποίηση επ. Εκτύπωσης περιμενει") //SHORTEN
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Επόμενο σημείο")
-#define MSG_LEVEL_BED_DONE _UxGT("Ολοκλήρωση επιπεδοποίησης!") //SHORTEN
-#define MSG_SET_HOME_OFFSETS _UxGT("Ορισμός βασικών μετατοπίσεων") //SHORTEN
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Εφαρμόστηκαν οι μετατοπίσεις") //SHORTEN
-#define MSG_SET_ORIGIN _UxGT("Ορισμός προέλευσης")
-#define MSG_PREHEAT_1 _UxGT("Προθέρμανση " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" όλα")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" bed") //SHORTEN
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" επιβεβαίωση") //SHORTEN
-#define MSG_PREHEAT_2 _UxGT("Προθέρμανση " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" όλα")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" bed") //SHORTEN
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" επιβεβαίωση") //SHORTEN
-#define MSG_COOLDOWN _UxGT("Μειωση θερμοκρασιας")
-#define MSG_SWITCH_PS_ON _UxGT("Ενεργοποίηση")
-#define MSG_SWITCH_PS_OFF _UxGT("Απενεργοποίηση")
-#define MSG_EXTRUDE _UxGT("Εξώθηση")
-#define MSG_RETRACT _UxGT("Ανάσυρση")
-#define MSG_MOVE_AXIS _UxGT("Μετακίνηση άξονα")
-#define MSG_BED_LEVELING _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης") //SHORTEN
-#define MSG_LEVEL_BED _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης") //SHORTEN
-#define MSG_MOVE_X _UxGT("Μετακίνηση X")
-#define MSG_MOVE_Y _UxGT("Μετακίνηση Y")
-#define MSG_MOVE_Z _UxGT("Μετακίνηση Z")
-#define MSG_MOVE_E _UxGT("Εξωθητήρας")
-#define MSG_MOVE_Z_DIST _UxGT("Μετακίνηση %s μμ")
-#define MSG_MOVE_01MM _UxGT("Μετακίνηση 0,1 μμ")
-#define MSG_MOVE_1MM _UxGT("Μετακίνηση 1 μμ")
-#define MSG_MOVE_10MM _UxGT("Μετακίνηση 10 μμ")
-#define MSG_SPEED _UxGT("Ταχύτητα")
-#define MSG_BED_Z _UxGT("Επ. Εκτύπωσης Z")
-#define MSG_NOZZLE _UxGT("Ακροφύσιο")
-#define MSG_BED _UxGT("Κλίνη")
-#define MSG_FAN_SPEED _UxGT("Ταχύτητα ανεμιστήρα")
-#define MSG_FLOW _UxGT("Ροή")
-#define MSG_CONTROL _UxGT("Έλεγχος")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Αυτομ ρύθμιση θερ/σίας") //SHORTEN
-#define MSG_LCD_ON _UxGT("Ενεργοποιημένο")
-#define MSG_LCD_OFF _UxGT("Απενεργοποιημένο")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_ACC _UxGT("Επιτάχυνση")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Vαντίδραση A")
- #define MSG_VB_JERK _UxGT("Vαντίδραση B")
- #define MSG_VC_JERK _UxGT("Vαντίδραση C")
-#else
- #define MSG_VA_JERK _UxGT("Vαντίδραση X")
- #define MSG_VB_JERK _UxGT("Vαντίδραση Y")
- #define MSG_VC_JERK _UxGT("Vαντίδραση Z")
-#endif
-#define MSG_VE_JERK _UxGT("Vαντίδραση E")
-#define MSG_VMAX _UxGT("V Μέγιστο")
-#define MSG_VMIN _UxGT("V Ελάχιστο")
-#define MSG_VTRAV_MIN _UxGT("Vελάχ. μετατόπιση")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Aμεγ ")
-#define MSG_A_RETRACT _UxGT("Α-ανάσυρση")
-#define MSG_A_TRAVEL _UxGT("Α-μετατόπιση")
-#define MSG_STEPS_PER_MM _UxGT("Bήματα ανά μμ")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Bήματα A ανά μμ")
- #define MSG_BSTEPS _UxGT("Bήματα B ανά μμ")
- #define MSG_CSTEPS _UxGT("Bήματα C ανά μμ")
-#else
- #define MSG_ASTEPS _UxGT("Bήματα X ανά μμ")
- #define MSG_BSTEPS _UxGT("Bήματα Y ανά μμ")
- #define MSG_CSTEPS _UxGT("Bήματα Z ανά μμ")
-#endif
-#define MSG_ESTEPS _UxGT("Bήματα Ε ανά μμ")
-#define MSG_E0_STEPS _UxGT("Bήματα Ε1 ανά μμ")
-#define MSG_E1_STEPS _UxGT("Bήματα Ε2 ανά μμ")
-#define MSG_E2_STEPS _UxGT("Bήματα Ε3 ανά μμ")
-#define MSG_E3_STEPS _UxGT("Bήματα Ε4 ανά μμ")
-#define MSG_E4_STEPS _UxGT("Bήματα Ε5 ανά μμ")
-#define MSG_E5_STEPS _UxGT("Bήματα Ε6 ανά μμ")
-#define MSG_TEMPERATURE _UxGT("Θερμοκρασία")
-#define MSG_MOTION _UxGT("Κίνηση")
-#define MSG_FILAMENT _UxGT("Νήμα")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("Ε σε μμ3")
-#define MSG_FILAMENT_DIAM _UxGT("Διάμετρος νήματος")
-#define MSG_CONTRAST _UxGT("Κοντράστ LCD")
-#define MSG_STORE_EEPROM _UxGT("Αποθήκευση")
-#define MSG_LOAD_EEPROM _UxGT("Φόρτωση")
-#define MSG_RESTORE_FAILSAFE _UxGT("Επαναφορά ασφαλούς αντιγράφου") //SHORTEN
-#define MSG_REFRESH _UxGT("Ανανέωση")
-#define MSG_WATCH _UxGT("Οθόνη πληροφόρησης")
-#define MSG_PREPARE _UxGT("Προετοιμασία")
-#define MSG_TUNE _UxGT("Συντονισμός")
-#define MSG_PAUSE_PRINT _UxGT("Παύση εκτύπωσης")
-#define MSG_RESUME_PRINT _UxGT("Συνέχιση εκτύπωσης")
-#define MSG_STOP_PRINT _UxGT("Διακοπή εκτύπωσης")
-#define MSG_MEDIA_MENU _UxGT("Εκτύπωση από SD")
-#define MSG_NO_MEDIA _UxGT("Δεν βρέθηκε SD")
-#define MSG_DWELL _UxGT("Αναστολή λειτουργίας")
-#define MSG_USERWAIT _UxGT("Αναμονή για χρήστη")
-#define MSG_PRINT_ABORTED _UxGT("Διακόπτεται η εκτύπωση") //SHORTEN
-#define MSG_NO_MOVE _UxGT("Καμία κίνηση.")
-#define MSG_KILLED _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ")
-#define MSG_STOPPED _UxGT("ΔΙΑΚΟΠΗ. ")
-#define MSG_CONTROL_RETRACT _UxGT("Ανάσυρση μμ")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Εναλλαγή ανάσυρσης μμ") //SHORTEN
-#define MSG_CONTROL_RETRACTF _UxGT("Ανάσυρση V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Μεταπήδηση μμ")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_AUTORETRACT _UxGT("Αυτόματη ανάσυρση")
-#define MSG_FILAMENTCHANGE _UxGT("Αλλαγή νήματος")
-#define MSG_INIT_MEDIA _UxGT("Προετοιμασία κάρτας SD") //SHORTEN
-#define MSG_CHANGE_MEDIA _UxGT("Αλλαγή κάρτας SD")
-#define MSG_ZPROBE_OUT _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης") //SHORTEN
-#define MSG_YX_UNHOMED _UxGT("Επαναφορά Χ/Υ πριν από Ζ") //SHORTEN
-#define MSG_XYZ_UNHOMED _UxGT("Επαναφορά ΧΥΖ πρώτα")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Μετατόπιση Ζ")
-#define MSG_BABYSTEP_X _UxGT("Μικρό βήμα Χ")
-#define MSG_BABYSTEP_Y _UxGT("Μικρό βήμα Υ")
-#define MSG_BABYSTEP_Z _UxGT("Μικρό βήμα Ζ")
-#define MSG_ENDSTOP_ABORT _UxGT("Ακύρωση endstop ")
-#define MSG_HEATING_FAILED_LCD _UxGT("Ανεπιτυχής θέρμανση")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ")
-#define MSG_THERMAL_RUNAWAY _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ")
-#define MSG_ERR_MAXTEMP _UxGT("ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ")
-#define MSG_ERR_MINTEMP _UxGT("ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ") //SHORTEN
-#define MSG_ERR_MAXTEMP_BED _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
-#define MSG_ERR_MINTEMP_BED _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
-#define MSG_HALTED _UxGT("H εκτύπωση διακόπηκε")
-#define MSG_HEATING _UxGT("Θερμαίνεται…")
-#define MSG_BED_HEATING _UxGT("Θέρμανση ΕΠ. Εκτύπωσης") //SHORTEN
-#define MSG_DELTA_CALIBRATE _UxGT("Βαθμονόμηση Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Βαθμονόμηση X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Βαθμονόμηση Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Βαθμονόμηση Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Βαθμονόμηση κέντρου")
+namespace Language_el {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_EXPECTED_PRINTER _UxGT("Εσφαλμένος εκτυπωτής")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Greek");
+
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" έτοιμο.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Εισαγωγή κάρτας");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Αφαίρεση κάρτας");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Βασική Οθόνη");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Αυτόματη εκκίνηση");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση Μοτέρ");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο"); //SHORTEN
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Αρχικό σημείο X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Αρχικό σημείο Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Αρχικό σημείο Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά Επ. Εκτύπωσης"); //SHORTEN
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Επιπεδοποίηση επ. Εκτύπωσης περιμενει"); //SHORTEN
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); //SHORTEN
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός βασικών μετατοπίσεων"); //SHORTEN
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); //SHORTEN
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ορισμός προέλευσης");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); //SHORTEN
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" bed"); //SHORTEN
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση"); //SHORTEN
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Μειωση θερμοκρασιας");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Εξώθηση");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Ανάσυρση");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης"); //SHORTEN
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση Επ. Εκτύπωσης"); //SHORTEN
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Μετακίνηση X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Μετακίνηση Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Μετακίνηση Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Εξωθητήρας");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Εξωθητήρας ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Εξωθητήρας ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Εξωθητήρας ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Εξωθητήρας ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Εξωθητήρας ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Εξωθητήρας ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Μετακίνηση %s μμ");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Μετακίνηση 0,1 μμ");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Μετακίνηση 1 μμ");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Μετακίνηση 10 μμ");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Ταχύτητα");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Επ. Εκτύπωσης Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Ακροφύσιο");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Ακροφύσιο ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Ακροφύσιο ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Ακροφύσιο ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Ακροφύσιο ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Ακροφύσιο ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Ακροφύσιο ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Κλίνη");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Ταχύτητα ανεμιστήρα 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Ταχύτητα ανεμιστήρα 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Ταχύτητα ανεμιστήρα 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Ροή");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Ροή ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Ροή ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Ροή ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Ροή ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Ροή ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Ροή ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Έλεγχος");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Αυτομ ρύθμιση θερ/σίας"); //SHORTEN
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Ενεργοποιημένο");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Απενεργοποιημένο");
+ PROGMEM Language_Str MSG_ACC = _UxGT("Επιτάχυνση");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("Vαντίδραση ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("Vαντίδραση ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("Vαντίδραση ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Vαντίδραση E");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("V Μέγιστο") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("V Μέγιστο") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("V Μέγιστο") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("V Μέγιστο") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("V Μέγιστο ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("V Μέγιστο ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("V Μέγιστο ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("V Μέγιστο ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("V Μέγιστο ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("V Μέγιστο ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("V Ελάχιστο");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accel");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Aμεγ ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Aμεγ ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Aμεγ ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Aμεγ ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Aμεγ ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Aμεγ ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Aμεγ ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Aμεγ ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Aμεγ ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Aμεγ ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Α-ανάσυρση");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Α-μετατόπιση");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ");
+ PROGMEM Language_Str MSG_A_STEPS = _UxGT("Bήματα ") LCD_STR_A _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_B_STEPS = _UxGT("Bήματα ") LCD_STR_B _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_C_STEPS = _UxGT("Bήματα ") LCD_STR_C _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ");
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("Bήματα ") LCD_STR_E0 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("Bήματα ") LCD_STR_E1 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("Bήματα ") LCD_STR_E2 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("Bήματα ") LCD_STR_E3 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("Bήματα ") LCD_STR_E4 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("Bήματα ") LCD_STR_E5 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Θερμοκρασία");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Κίνηση");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Νήμα");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε μμ3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Διάμετρος νήματος ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Διάμετρος νήματος ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Διάμετρος νήματος ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Διάμετρος νήματος ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Διάμετρος νήματος ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Διάμετρος νήματος ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Κοντράστ LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Αποθήκευση");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Φόρτωση");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); //SHORTEN
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Οθόνη πληροφόρησης");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Προετοιμασία");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Συντονισμός");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Αναστολή λειτουργίας");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Αναμονή για χρήστη");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Διακόπτεται η εκτύπωση"); //SHORTEN
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Καμία κίνηση.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης μμ"); //SHORTEN
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση μμ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Αλλαγή νήματος ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Αλλαγή νήματος ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Αλλαγή νήματος ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Αλλαγή νήματος ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Αλλαγή νήματος ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Αλλαγή νήματος ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Προετοιμασία κάρτας SD"); //SHORTEN
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); //SHORTEN
+ PROGMEM Language_Str MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πριν από Ζ"); //SHORTEN
+ PROGMEM Language_Str MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥΖ πρώτα");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Ζ");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Ζ");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Ακύρωση endstop ");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Ανεπιτυχής θέρμανση");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ"); //SHORTEN
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ"); //SHORTEN
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ"); //SHORTEN
+ PROGMEM Language_Str MSG_HALTED = _UxGT("H εκτύπωση διακόπηκε");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Θερμαίνεται…");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Θέρμανση ΕΠ. Εκτύπωσης"); //SHORTEN
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής");
+}
diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h
index 83754591d0..e78a229008 100644
--- a/Marlin/src/lcd/language/language_el_gr.h
+++ b/Marlin/src/lcd/language/language_el_gr.h
@@ -30,161 +30,254 @@
*/
#define DISPLAY_CHARSET_ISO10646_GREEK
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" έτοιμο.")
-#define MSG_MEDIA_INSERTED _UxGT("Εισαγωγή κάρτας")
-#define MSG_MEDIA_REMOVED _UxGT("Αφαίρεση κάρτας")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Βασική Οθόνη")
-#define MSG_AUTOSTART _UxGT("Αυτόματη εκκίνηση")
-#define MSG_DISABLE_STEPPERS _UxGT("Απενεργοποίηση βηματιστή")
-#define MSG_AUTO_HOME _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο")
-#define MSG_AUTO_HOME_X _UxGT("Αρχικό σημείο X")
-#define MSG_AUTO_HOME_Y _UxGT("Αρχικό σημείο Y")
-#define MSG_AUTO_HOME_Z _UxGT("Αρχικό σημείο Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Επαναφορά στο αρχικό σημείο ΧΥΖ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Κάντε κλικ για να ξεκινήσετε")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Επόμενο σημείο")
-#define MSG_LEVEL_BED_DONE _UxGT("Ολοκλήρωση επιπεδοποίησης!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Ορισμός βασικών μετατοπίσεων")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Εφαρμόστηκαν οι μετατοπίσεις")
-#define MSG_SET_ORIGIN _UxGT("Ορισμός προέλευσης")
-#define MSG_PREHEAT_1 _UxGT("Προθέρμανση " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" όλα")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" κλίνη")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" επιβεβαίωση")
-#define MSG_PREHEAT_2 _UxGT("Προθέρμανση " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" όλα")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Bed")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" επιβεβαίωση")
-#define MSG_COOLDOWN _UxGT("Μειωση θερμοκρασιας")
-#define MSG_SWITCH_PS_ON _UxGT("Ενεργοποίηση")
-#define MSG_SWITCH_PS_OFF _UxGT("Απενεργοποίηση")
-#define MSG_EXTRUDE _UxGT("Εξώθηση")
-#define MSG_RETRACT _UxGT("Ανάσυρση")
-#define MSG_MOVE_AXIS _UxGT("Μετακίνηση άξονα")
-#define MSG_BED_LEVELING _UxGT("Επιπεδοποίηση κλίνης")
-#define MSG_LEVEL_BED _UxGT("Επιπεδοποίηση κλίνης")
-#define MSG_MOVE_X _UxGT("Μετακίνηση X")
-#define MSG_MOVE_Y _UxGT("Μετακίνηση Y")
-#define MSG_MOVE_Z _UxGT("Μετακίνηση Z")
-#define MSG_MOVE_E _UxGT("Εξωθητήρας")
-#define MSG_MOVE_Z_DIST _UxGT("Μετακίνηση %s μμ")
-#define MSG_MOVE_01MM _UxGT("Μετακίνηση 0,1 μμ")
-#define MSG_MOVE_1MM _UxGT("Μετακίνηση 1 μμ")
-#define MSG_MOVE_10MM _UxGT("Μετακίνηση 10 μμ")
-#define MSG_SPEED _UxGT("Ταχύτητα")
-#define MSG_BED_Z _UxGT("Κλίνη Z")
-#define MSG_NOZZLE _UxGT("Ακροφύσιο")
-#define MSG_BED _UxGT("Κλίνη")
-#define MSG_FAN_SPEED _UxGT("Ταχύτητα ανεμιστήρα")
-#define MSG_FLOW _UxGT("Ροή")
-#define MSG_CONTROL _UxGT("Έλεγχος")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Αυτομ. ρύθμιση θερμοκρασίας")
-#define MSG_LCD_ON _UxGT("Ενεργοποιημένο")
-#define MSG_LCD_OFF _UxGT("Απενεργοποιημένο")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_ACC _UxGT("Επιτάχυνση")
-#define MSG_JERK _UxGT("Vαντίδραση")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Vαντίδραση A")
- #define MSG_VB_JERK _UxGT("Vαντίδραση B")
- #define MSG_VC_JERK _UxGT("Vαντίδραση C")
-#else
- #define MSG_VA_JERK _UxGT("Vαντίδραση X")
- #define MSG_VB_JERK _UxGT("Vαντίδραση Y")
- #define MSG_VC_JERK _UxGT("Vαντίδραση Z")
-#endif
-#define MSG_VE_JERK _UxGT("Vαντίδραση E")
-#define MSG_VMAX _UxGT("Vμεγ ")
-#define MSG_VMIN _UxGT("Vελαχ")
-#define MSG_VTRAV_MIN _UxGT("Vελάχ. μετατόπιση")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Aμεγ ")
-#define MSG_A_RETRACT _UxGT("Α-ανάσυρση")
-#define MSG_A_TRAVEL _UxGT("Α-μετατόπιση")
-#define MSG_STEPS_PER_MM _UxGT("Bήματα ανά μμ")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Bήματα A ανά μμ")
- #define MSG_BSTEPS _UxGT("Bήματα B ανά μμ")
- #define MSG_CSTEPS _UxGT("Bήματα C ανά μμ")
-#else
- #define MSG_ASTEPS _UxGT("Bήματα X ανά μμ")
- #define MSG_BSTEPS _UxGT("Bήματα Y ανά μμ")
- #define MSG_CSTEPS _UxGT("Bήματα Z ανά μμ")
-#endif
-#define MSG_ESTEPS _UxGT("Bήματα Ε ανά μμ")
-#define MSG_E0_STEPS _UxGT("Bήματα Ε1 ανά μμ")
-#define MSG_E1_STEPS _UxGT("Bήματα Ε2 ανά μμ")
-#define MSG_E2_STEPS _UxGT("Bήματα Ε3 ανά μμ")
-#define MSG_E3_STEPS _UxGT("Bήματα Ε4 ανά μμ")
-#define MSG_E4_STEPS _UxGT("Bήματα Ε5 ανά μμ")
-#define MSG_E5_STEPS _UxGT("Bήματα Ε6 ανά μμ")
-#define MSG_TEMPERATURE _UxGT("Θερμοκρασία")
-#define MSG_MOTION _UxGT("Κίνηση")
-#define MSG_FILAMENT _UxGT("Νήμα")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("Ε σε μμ3")
-#define MSG_FILAMENT_DIAM _UxGT("Διάμετρος νήματος")
-#define MSG_CONTRAST _UxGT("Κοντράστ LCD")
-#define MSG_STORE_EEPROM _UxGT("Αποθήκευση")
-#define MSG_LOAD_EEPROM _UxGT("Φόρτωση")
-#define MSG_RESTORE_FAILSAFE _UxGT("Επαναφορά ασφαλούς αντιγράφου")
-#define MSG_REFRESH _UxGT("Ανανέωση")
-#define MSG_WATCH _UxGT("Οθόνη πληροφόρησης")
-#define MSG_PREPARE _UxGT("Προετοιμασία")
-#define MSG_TUNE _UxGT("Συντονισμός")
-#define MSG_PAUSE_PRINT _UxGT("Παύση εκτύπωσης")
-#define MSG_RESUME_PRINT _UxGT("Συνέχιση εκτύπωσης")
-#define MSG_STOP_PRINT _UxGT("Διακοπή εκτύπωσης")
-#define MSG_MEDIA_MENU _UxGT("Εκτύπωση από SD")
-#define MSG_NO_MEDIA _UxGT("Δεν βρέθηκε SD")
-#define MSG_DWELL _UxGT("Αναστολή λειτουργίας…")
-#define MSG_USERWAIT _UxGT("Αναμονή για χρήστη…")
-#define MSG_PRINT_ABORTED _UxGT("Διακόπτεται η εκτύπωση")
-#define MSG_NO_MOVE _UxGT("Καμία κίνηση.")
-#define MSG_KILLED _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ")
-#define MSG_STOPPED _UxGT("ΔΙΑΚΟΠΗ. ")
-#define MSG_CONTROL_RETRACT _UxGT("Ανάσυρση μμ")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Εναλλαγή ανάσυρσης μμ")
-#define MSG_CONTROL_RETRACTF _UxGT("Ανάσυρση V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Μεταπήδηση μμ")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_AUTORETRACT _UxGT("Αυτόματη ανάσυρση")
-#define MSG_FILAMENTCHANGE _UxGT("Αλλαγή νήματος")
-#define MSG_INIT_MEDIA _UxGT("Προετοιμασία κάρτας SD")
-#define MSG_CHANGE_MEDIA _UxGT("Αλλαγή κάρτας SD")
-#define MSG_ZPROBE_OUT _UxGT("Διερεύνηση Z εκτός κλίνης")
-#define MSG_YX_UNHOMED _UxGT("Επαναφορά Χ/Υ πριν από Ζ")
-#define MSG_XYZ_UNHOMED _UxGT("Επαναφορά ΧΥΖ πρώτα")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Μετατόπιση Ζ")
-#define MSG_BABYSTEP_X _UxGT("Μικρό βήμα Χ")
-#define MSG_BABYSTEP_Y _UxGT("Μικρό βήμα Υ")
-#define MSG_BABYSTEP_Z _UxGT("Μικρό βήμα Ζ")
-#define MSG_ENDSTOP_ABORT _UxGT("Ματαίωση endstop ")
-#define MSG_HEATING_FAILED_LCD _UxGT("Ανεπιτυχής θέρμανση")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ")
-#define MSG_THERMAL_RUNAWAY _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ")
-#define MSG_ERR_MAXTEMP _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ")
-#define MSG_ERR_MINTEMP _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ")
-#define MSG_ERR_MINTEMP_BED _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ")
-#define MSG_HEATING _UxGT("Θερμαίνεται…")
-#define MSG_BED_HEATING _UxGT("Θέρμανση κλίνης…")
-#define MSG_DELTA_CALIBRATE _UxGT("Βαθμονόμηση Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Βαθμονόμηση X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Βαθμονόμηση Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Βαθμονόμηση Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Βαθμονόμηση κέντρου")
+namespace Language_el_gr {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_EXPECTED_PRINTER _UxGT("Εσφαλμένος εκτυπωτής")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Greek (Greece)");
+
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" έτοιμο.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Εισαγωγή κάρτας");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Αφαίρεση κάρτας");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Βασική Οθόνη");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Αυτόματη εκκίνηση");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση βηματιστή");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Αρχικό σημείο X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Αρχικό σημείο Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Αρχικό σημείο Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥΖ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Κάντε κλικ για να ξεκινήσετε");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός βασικών μετατοπίσεων");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ορισμός προέλευσης");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" όλα");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" κλίνη");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_2_LABEL _UxGT(" επιβεβαίωση");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Μειωση θερμοκρασιας");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Εξώθηση");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Ανάσυρση");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση κλίνης");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση κλίνης");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Μετακίνηση X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Μετακίνηση Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Μετακίνηση Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Εξωθητήρας");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Εξωθητήρας ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Εξωθητήρας ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Εξωθητήρας ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Εξωθητήρας ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Εξωθητήρας ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Εξωθητήρας ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Μετακίνηση %s μμ");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Μετακίνηση 0,1 μμ");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Μετακίνηση 1 μμ");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Μετακίνηση 10 μμ");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Ταχύτητα");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Κλίνη Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Ακροφύσιο");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Ακροφύσιο ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Ακροφύσιο ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Ακροφύσιο ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Ακροφύσιο ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Ακροφύσιο ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Ακροφύσιο ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Κλίνη");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Ταχύτητα ανεμιστήρα 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Ταχύτητα ανεμιστήρα 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Ταχύτητα ανεμιστήρα 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Ροή");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Ροή ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Ροή ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Ροή ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Ροή ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Ροή ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Ροή ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Έλεγχος");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Αυτομ. ρύθμιση θερμοκρασίας");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Ενεργοποιημένο");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Απενεργοποιημένο");
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Επιτάχυνση");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Vαντίδραση");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("Vαντίδραση ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("Vαντίδραση ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("Vαντίδραση ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Vαντίδραση E");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vμεγ ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vμεγ ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vμεγ ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vμεγ ") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("Vμεγ ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("Vμεγ ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("Vμεγ ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("Vμεγ ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("Vμεγ ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("Vμεγ ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vελαχ");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accel");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Aμεγ ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Aμεγ ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Aμεγ ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Aμεγ ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Aμεγ ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Aμεγ ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Aμεγ ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Aμεγ ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Aμεγ ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Aμεγ ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Α-ανάσυρση");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Α-μετατόπιση");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ");
+ PROGMEM Language_Str MSG_A_STEPS = _UxGT("Bήματα ") LCD_STR_A _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_B_STEPS = _UxGT("Bήματα ") LCD_STR_B _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_C_STEPS = _UxGT("Bήματα ") LCD_STR_C _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ");
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("Bήματα ") LCD_STR_E0 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("Bήματα ") LCD_STR_E1 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("Bήματα ") LCD_STR_E2 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("Bήματα ") LCD_STR_E3 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("Bήματα ") LCD_STR_E4 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("Bήματα ") LCD_STR_E5 _UxGT(" ανά μμ");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Θερμοκρασία");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Κίνηση");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Νήμα");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε μμ3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Διάμετρος νήματος ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Διάμετρος νήματος ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Διάμετρος νήματος ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Διάμετρος νήματος ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Διάμετρος νήματος ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Διάμετρος νήματος ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Κοντράστ LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Αποθήκευση");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Φόρτωση");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Επαναφορά ασφαλούς αντιγράφου");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Οθόνη πληροφόρησης");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Προετοιμασία");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Συντονισμός");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Αναστολή λειτουργίας…");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Αναμονή για χρήστη…");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Διακόπτεται η εκτύπωση");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Καμία κίνηση.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης μμ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση μμ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Αλλαγή νήματος ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Αλλαγή νήματος ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Αλλαγή νήματος ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Αλλαγή νήματος ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Αλλαγή νήματος ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Αλλαγή νήματος ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Προετοιμασία κάρτας SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός κλίνης");
+ PROGMEM Language_Str MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πριν από Ζ");
+ PROGMEM Language_Str MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥΖ πρώτα");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Ζ");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Ζ");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Ματαίωση endstop ");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Ανεπιτυχής θέρμανση");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Θερμαίνεται…");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Θέρμανση κλίνης…");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής");
+}
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index 5bd20ec541..2b813cea2a 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -35,1554 +35,675 @@
#endif
#undef en
-#ifndef THIS_LANGUAGES_SPECIAL_SYMBOLS
- #define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("³")
-#endif
+namespace Language_en {
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("English");
-#ifdef NOT_EXTENDED_ISO10646_1_5X7
- #define MSG_CUBED _UxGT("^3")
-#else
- #define MSG_CUBED _UxGT("³")
-#endif
+ #ifdef NOT_EXTENDED_ISO10646_1_5X7
+ PROGMEM Language_Str MSG_CUBED = _UxGT("^3");
+ #else
+ PROGMEM Language_Str MSG_CUBED = _UxGT("³");
+ #endif
-#ifndef CHARSIZE
- #define CHARSIZE 1
-#endif
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" Ready.");
+ PROGMEM Language_Str MSG_YES = _UxGT("YES");
+ PROGMEM Language_Str MSG_NO = _UxGT("NO");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Back");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Aborting...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Media Inserted");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Media Removed");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("Media Released");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Waiting for media");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Media read error");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("USB device removed");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("USB start failed");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Main");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Advanced Settings");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Configuration");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Disable Steppers");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Debug Menu");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Progress Bar Test");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Auto Home");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Home X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Click to Begin");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Next Point");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Leveling Done!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Fade Height");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Set Home Offsets");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Set Origin");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Preheat ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Preheat ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Preheat ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" End ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" All");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Preheat ") PREHEAT_2_LABEL _UxGT(" Conf");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Preheat Custom");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Cooldown");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Laser Control");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Laser Off");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Laser On");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Laser Power");
+ PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Spindle Control");
+ PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Spindle Off");
+ PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Spindle On");
+ PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Spindle Power");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Spindle Reverse");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Switch Power On");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Switch Power Off");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrude");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retract");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Move Axis");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Bed Leveling");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Level Bed");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Level Corners");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Next Corner");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Mesh Editor");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Edit Mesh");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Mesh Editing Stopped");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Probing Point");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Index X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Index Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Z Value");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Custom Commands");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Probe Test");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Point");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Deviation");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("IDEX Mode");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Tool Offsets");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2nd Nozzle X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2nd Nozzle Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2nd Nozzle Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Doing G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL Tools");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Tilting Point");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Manually Build Mesh");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Place Shim & Measure");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Measure");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Remove & Measure Bed");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Moving to next");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Activate UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Deactivate UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Mesh Edit");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit Custom Mesh");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Fine Tuning Mesh");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Done Editing Mesh");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Build Custom Mesh");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Build Mesh");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Build Mesh (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Build Mesh (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Build Cold Mesh");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Adjust Mesh Height");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Height Amount");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validate Mesh");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Validate Mesh (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Validate Mesh (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validate Custom Mesh");
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 Heating Bed");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Heating Nozzle");
+ PROGMEM Language_Str MSG_G26_MANUAL_PRIME = _UxGT("Manual priming...");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Fixed Length Prime");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Done Priming");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 Canceled");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("Leaving G26");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Continue Bed Mesh");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Mesh Leveling");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Point Leveling");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Grid Mesh Leveling");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Level Mesh");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Side Points");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Map Type");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Output Mesh Map");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Output for Host");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Output for CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Off Printer Backup");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Output UBL Info");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Fill-in Amount");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Manual Fill-in");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Smart Fill-in");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Fill-in Mesh");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidate All");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidate Closest");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Fine Tune All");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Fine Tune Closest");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Storage");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Memory Slot");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Load Bed Mesh");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Save Bed Mesh");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Mesh %i Loaded");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Mesh %i Saved");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("No Storage");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Err: UBL Save");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Err: UBL Restore");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset Stopped");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Step-By-Step UBL");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Build Cold Mesh");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2. Smart Fill-in");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validate Mesh");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Fine Tune All");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validate Mesh");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Fine Tune All");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh");
-#ifndef WELCOME_MSG
- #define WELCOME_MSG MACHINE_NAME _UxGT(" Ready.")
-#endif
-#ifndef MSG_YES
- #define MSG_YES _UxGT("YES")
-#endif
-#ifndef MSG_NO
- #define MSG_NO _UxGT("NO")
-#endif
-#ifndef MSG_BACK
- #define MSG_BACK _UxGT("Back")
-#endif
-#ifndef MSG_MEDIA_ABORTING
- #define MSG_MEDIA_ABORTING _UxGT("Aborting...")
-#endif
-#ifndef MSG_MEDIA_INSERTED
- #define MSG_MEDIA_INSERTED _UxGT("Media Inserted")
-#endif
-#ifndef MSG_MEDIA_REMOVED
- #define MSG_MEDIA_REMOVED _UxGT("Media Removed")
-#endif
-#ifndef MSG_MEDIA_RELEASED
- #define MSG_MEDIA_RELEASED _UxGT("Media Released")
-#endif
-#ifndef MSG_MEDIA_WAITING
- #define MSG_MEDIA_WAITING _UxGT("Waiting for media")
-#endif
-#ifndef MSG_MEDIA_READ_ERROR
- #define MSG_MEDIA_READ_ERROR _UxGT("Media read error")
-#endif
-#ifndef MSG_MEDIA_USB_REMOVED
- #define MSG_MEDIA_USB_REMOVED _UxGT("USB device removed")
-#endif
-#ifndef MSG_MEDIA_USB_FAILED
- #define MSG_MEDIA_USB_FAILED _UxGT("USB start failed")
-#endif
-#ifndef MSG_LCD_ENDSTOPS
- #define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#endif
-#ifndef MSG_LCD_SOFT_ENDSTOPS
- #define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft Endstops")
-#endif
-#ifndef MSG_MAIN
- #define MSG_MAIN _UxGT("Main")
-#endif
-#ifndef MSG_ADVANCED_SETTINGS
- #define MSG_ADVANCED_SETTINGS _UxGT("Advanced Settings")
-#endif
-#ifndef MSG_CONFIGURATION
- #define MSG_CONFIGURATION _UxGT("Configuration")
-#endif
-#ifndef MSG_AUTOSTART
- #define MSG_AUTOSTART _UxGT("Autostart")
-#endif
-#ifndef MSG_DISABLE_STEPPERS
- #define MSG_DISABLE_STEPPERS _UxGT("Disable Steppers")
-#endif
-#ifndef MSG_DEBUG_MENU
- #define MSG_DEBUG_MENU _UxGT("Debug Menu")
-#endif
-#ifndef MSG_PROGRESS_BAR_TEST
- #define MSG_PROGRESS_BAR_TEST _UxGT("Progress Bar Test")
-#endif
-#ifndef MSG_AUTO_HOME
- #define MSG_AUTO_HOME _UxGT("Auto Home")
-#endif
-#ifndef MSG_AUTO_HOME_X
- #define MSG_AUTO_HOME_X _UxGT("Home X")
-#endif
-#ifndef MSG_AUTO_HOME_Y
- #define MSG_AUTO_HOME_Y _UxGT("Home Y")
-#endif
-#ifndef MSG_AUTO_HOME_Z
- #define MSG_AUTO_HOME_Z _UxGT("Home Z")
-#endif
-#ifndef MSG_AUTO_Z_ALIGN
- #define MSG_AUTO_Z_ALIGN _UxGT("Auto Z-Align")
-#endif
-#ifndef MSG_LEVEL_BED_HOMING
- #define MSG_LEVEL_BED_HOMING _UxGT("Homing XYZ")
-#endif
-#ifndef MSG_LEVEL_BED_WAITING
- #define MSG_LEVEL_BED_WAITING _UxGT("Click to Begin")
-#endif
-#ifndef MSG_LEVEL_BED_NEXT_POINT
- #define MSG_LEVEL_BED_NEXT_POINT _UxGT("Next Point")
-#endif
-#ifndef MSG_LEVEL_BED_DONE
- #define MSG_LEVEL_BED_DONE _UxGT("Leveling Done!")
-#endif
-#ifndef MSG_Z_FADE_HEIGHT
- #define MSG_Z_FADE_HEIGHT _UxGT("Fade Height")
-#endif
-#ifndef MSG_SET_HOME_OFFSETS
- #define MSG_SET_HOME_OFFSETS _UxGT("Set Home Offsets")
-#endif
-#ifndef MSG_HOME_OFFSETS_APPLIED
- #define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets Applied")
-#endif
-#ifndef MSG_SET_ORIGIN
- #define MSG_SET_ORIGIN _UxGT("Set Origin")
-#endif
-#ifndef MSG_PREHEAT_1
- #define MSG_PREHEAT_1 _UxGT("Preheat " PREHEAT_1_LABEL)
-#endif
-#ifndef MSG_PREHEAT_1_N
- #define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#endif
-#ifndef MSG_PREHEAT_1_ALL
- #define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" All")
-#endif
-#ifndef MSG_PREHEAT_1_END
- #define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" End")
-#endif
-#ifndef MSG_PREHEAT_1_BEDONLY
- #define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Bed")
-#endif
-#ifndef MSG_PREHEAT_1_SETTINGS
- #define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Conf")
-#endif
-#ifndef MSG_PREHEAT_2
- #define MSG_PREHEAT_2 _UxGT("Preheat " PREHEAT_2_LABEL)
-#endif
-#ifndef MSG_PREHEAT_2_N
- #define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#endif
-#ifndef MSG_PREHEAT_2_ALL
- #define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" All")
-#endif
-#ifndef MSG_PREHEAT_2_END
- #define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" End")
-#endif
-#ifndef MSG_PREHEAT_2_BEDONLY
- #define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Bed")
-#endif
-#ifndef MSG_PREHEAT_2_SETTINGS
- #define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Conf")
-#endif
-#ifndef MSG_PREHEAT_CUSTOM
- #define MSG_PREHEAT_CUSTOM _UxGT("Preheat Custom")
-#endif
-#ifndef MSG_COOLDOWN
- #define MSG_COOLDOWN _UxGT("Cooldown")
-#endif
-#ifndef MSG_LASER_MENU
- #define MSG_LASER_MENU _UxGT("Laser Control")
-#endif
-#ifndef MSG_LASER_OFF
- #define MSG_LASER_OFF _UxGT("Laser Off")
-#endif
-#ifndef MSG_LASER_ON
- #define MSG_LASER_ON _UxGT("Laser On")
-#endif
-#ifndef MSG_LASER_POWER
- #define MSG_LASER_POWER _UxGT("Laser Power")
-#endif
-#ifndef MSG_SPINDLE_MENU
- #define MSG_SPINDLE_MENU _UxGT("Spindle Control")
-#endif
-#ifndef MSG_SPINDLE_OFF
- #define MSG_SPINDLE_OFF _UxGT("Spindle Off")
-#endif
-#ifndef MSG_SPINDLE_ON
- #define MSG_SPINDLE_ON _UxGT("Spindle On")
-#endif
-#ifndef MSG_SPINDLE_POWER
- #define MSG_SPINDLE_POWER _UxGT("Spindle Power")
-#endif
-#ifndef MSG_SPINDLE_REVERSE
- #define MSG_SPINDLE_REVERSE _UxGT("Spindle Reverse")
-#endif
-#ifndef MSG_SWITCH_PS_ON
- #define MSG_SWITCH_PS_ON _UxGT("Switch Power On")
-#endif
-#ifndef MSG_SWITCH_PS_OFF
- #define MSG_SWITCH_PS_OFF _UxGT("Switch Power Off")
-#endif
-#ifndef MSG_EXTRUDE
- #define MSG_EXTRUDE _UxGT("Extrude")
-#endif
-#ifndef MSG_RETRACT
- #define MSG_RETRACT _UxGT("Retract")
-#endif
-#ifndef MSG_MOVE_AXIS
- #define MSG_MOVE_AXIS _UxGT("Move Axis")
-#endif
-#ifndef MSG_BED_LEVELING
- #define MSG_BED_LEVELING _UxGT("Bed Leveling")
-#endif
-#ifndef MSG_LEVEL_BED
- #define MSG_LEVEL_BED _UxGT("Level Bed")
-#endif
-#ifndef MSG_LEVEL_CORNERS
- #define MSG_LEVEL_CORNERS _UxGT("Level Corners")
-#endif
-#ifndef MSG_NEXT_CORNER
- #define MSG_NEXT_CORNER _UxGT("Next Corner")
-#endif
-#ifndef MSG_MESH_EDITOR
- #define MSG_MESH_EDITOR _UxGT("Mesh Editor")
-#endif
-#ifndef MSG_EDIT_MESH
- #define MSG_EDIT_MESH _UxGT("Edit Mesh")
-#endif
-#ifndef MSG_EDITING_STOPPED
- #define MSG_EDITING_STOPPED _UxGT("Mesh Editing Stopped")
-#endif
-#ifndef MSG_PROBING_MESH
- #define MSG_PROBING_MESH _UxGT("Probing Point")
-#endif
-#ifndef MSG_MESH_X
- #define MSG_MESH_X _UxGT("Index X")
-#endif
-#ifndef MSG_MESH_Y
- #define MSG_MESH_Y _UxGT("Index Y")
-#endif
-#ifndef MSG_MESH_EDIT_Z
- #define MSG_MESH_EDIT_Z _UxGT("Z Value")
-#endif
-#ifndef MSG_USER_MENU
- #define MSG_USER_MENU _UxGT("Custom Commands")
-#endif
-#ifndef MSG_M48_TEST
- #define MSG_M48_TEST _UxGT("M48 Probe Test")
-#endif
-#ifndef MSG_M48_POINT
- #define MSG_M48_POINT _UxGT("M48 Point")
-#endif
-#ifndef MSG_M48_DEVIATION
- #define MSG_M48_DEVIATION _UxGT("Deviation")
-#endif
-#ifndef MSG_IDEX_MENU
- #define MSG_IDEX_MENU _UxGT("IDEX Mode")
-#endif
-#ifndef MSG_OFFSETS_MENU
- #define MSG_OFFSETS_MENU _UxGT("Tool Offsets")
-#endif
-#ifndef MSG_IDEX_MODE_AUTOPARK
- #define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
-#endif
-#ifndef MSG_IDEX_MODE_DUPLICATE
- #define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplication")
-#endif
-#ifndef MSG_IDEX_MODE_MIRRORED_COPY
- #define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Mirrored Copy")
-#endif
-#ifndef MSG_IDEX_MODE_FULL_CTRL
- #define MSG_IDEX_MODE_FULL_CTRL _UxGT("Full Control")
-#endif
-#ifndef MSG_X_OFFSET
- #define MSG_X_OFFSET _UxGT("2nd Nozzle X")
-#endif
-#ifndef MSG_Y_OFFSET
- #define MSG_Y_OFFSET _UxGT("2nd Nozzle Y")
-#endif
-#ifndef MSG_Z_OFFSET
- #define MSG_Z_OFFSET _UxGT("2nd nNozzle Z")
-#endif
-#ifndef MSG_UBL_DOING_G29
- #define MSG_UBL_DOING_G29 _UxGT("Doing G29")
-#endif
-#ifndef MSG_UBL_TOOLS
- #define MSG_UBL_TOOLS _UxGT("UBL Tools")
-#endif
-#ifndef MSG_UBL_LEVEL_BED
- #define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-#endif
-#ifndef MSG_LCD_TILTING_MESH
- #define MSG_LCD_TILTING_MESH _UxGT("Tilting Point")
-#endif
-#ifndef MSG_UBL_MANUAL_MESH
- #define MSG_UBL_MANUAL_MESH _UxGT("Manually Build Mesh")
-#endif
-#ifndef MSG_UBL_BC_INSERT
- #define MSG_UBL_BC_INSERT _UxGT("Place Shim & Measure")
-#endif
-#ifndef MSG_UBL_BC_INSERT2
- #define MSG_UBL_BC_INSERT2 _UxGT("Measure")
-#endif
-#ifndef MSG_UBL_BC_REMOVE
- #define MSG_UBL_BC_REMOVE _UxGT("Remove & Measure Bed")
-#endif
-#ifndef MSG_UBL_MOVING_TO_NEXT
- #define MSG_UBL_MOVING_TO_NEXT _UxGT("Moving to next")
-#endif
-#ifndef MSG_UBL_ACTIVATE_MESH
- #define MSG_UBL_ACTIVATE_MESH _UxGT("Activate UBL")
-#endif
-#ifndef MSG_UBL_DEACTIVATE_MESH
- #define MSG_UBL_DEACTIVATE_MESH _UxGT("Deactivate UBL")
-#endif
-#ifndef MSG_UBL_SET_TEMP_BED
- #define MSG_UBL_SET_TEMP_BED _UxGT("Bed Temp")
-#endif
-#ifndef MSG_UBL_BED_TEMP_CUSTOM
- #define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#endif
-#ifndef MSG_UBL_SET_TEMP_HOTEND
- #define MSG_UBL_SET_TEMP_HOTEND _UxGT("Hotend Temp")
-#endif
-#ifndef MSG_UBL_HOTEND_TEMP_CUSTOM
- #define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#endif
-#ifndef MSG_UBL_MESH_EDIT
- #define MSG_UBL_MESH_EDIT _UxGT("Mesh Edit")
-#endif
-#ifndef MSG_UBL_EDIT_CUSTOM_MESH
- #define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Edit Custom Mesh")
-#endif
-#ifndef MSG_UBL_FINE_TUNE_MESH
- #define MSG_UBL_FINE_TUNE_MESH _UxGT("Fine Tuning Mesh")
-#endif
-#ifndef MSG_UBL_DONE_EDITING_MESH
- #define MSG_UBL_DONE_EDITING_MESH _UxGT("Done Editing Mesh")
-#endif
-#ifndef MSG_UBL_BUILD_CUSTOM_MESH
- #define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Build Custom Mesh")
-#endif
-#ifndef MSG_UBL_BUILD_MESH_MENU
- #define MSG_UBL_BUILD_MESH_MENU _UxGT("Build Mesh")
-#endif
-#ifndef MSG_UBL_BUILD_MESH_M1
- #define MSG_UBL_BUILD_MESH_M1 _UxGT("Build Mesh (" PREHEAT_1_LABEL ")")
-#endif
-#ifndef MSG_UBL_BUILD_MESH_M2
- #define MSG_UBL_BUILD_MESH_M2 _UxGT("Build Mesh (" PREHEAT_2_LABEL ")")
-#endif
-#ifndef MSG_UBL_BUILD_COLD_MESH
- #define MSG_UBL_BUILD_COLD_MESH _UxGT("Build Cold Mesh")
-#endif
-#ifndef MSG_UBL_MESH_HEIGHT_ADJUST
- #define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Adjust Mesh Height")
-#endif
-#ifndef MSG_UBL_MESH_HEIGHT_AMOUNT
- #define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Height Amount")
-#endif
-#ifndef MSG_UBL_VALIDATE_MESH_MENU
- #define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Validate Mesh")
-#endif
-#ifndef MSG_UBL_VALIDATE_MESH_M1
- #define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Validate Mesh (" PREHEAT_1_LABEL ")")
-#endif
-#ifndef MSG_UBL_VALIDATE_MESH_M2
- #define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Validate Mesh (" PREHEAT_2_LABEL ")")
-#endif
-#ifndef MSG_UBL_VALIDATE_CUSTOM_MESH
- #define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Validate Custom Mesh")
-#endif
-#ifndef MSG_G26_HEATING_BED
- #define MSG_G26_HEATING_BED _UxGT("G26 Heating Bed")
-#endif
-#ifndef MSG_G26_HEATING_NOZZLE
- #define MSG_G26_HEATING_NOZZLE _UxGT("G26 Heating Nozzle")
-#endif
-#ifndef MSG_G26_MANUAL_PRIME
- #define MSG_G26_MANUAL_PRIME _UxGT("Manual priming...")
-#endif
-#ifndef MSG_G26_FIXED_LENGTH
- #define MSG_G26_FIXED_LENGTH _UxGT("Fixed Length Prime")
-#endif
-#ifndef MSG_G26_PRIME_DONE
- #define MSG_G26_PRIME_DONE _UxGT("Done Priming")
-#endif
-#ifndef MSG_G26_CANCELED
- #define MSG_G26_CANCELED _UxGT("G26 Canceled")
-#endif
-#ifndef MSG_G26_LEAVING
- #define MSG_G26_LEAVING _UxGT("Leaving G26")
-#endif
-#ifndef MSG_UBL_CONTINUE_MESH
- #define MSG_UBL_CONTINUE_MESH _UxGT("Continue Bed Mesh")
-#endif
-#ifndef MSG_UBL_MESH_LEVELING
- #define MSG_UBL_MESH_LEVELING _UxGT("Mesh Leveling")
-#endif
-#ifndef MSG_UBL_3POINT_MESH_LEVELING
- #define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Point Leveling")
-#endif
-#ifndef MSG_UBL_GRID_MESH_LEVELING
- #define MSG_UBL_GRID_MESH_LEVELING _UxGT("Grid Mesh Leveling")
-#endif
-#ifndef MSG_UBL_MESH_LEVEL
- #define MSG_UBL_MESH_LEVEL _UxGT("Level Mesh")
-#endif
-#ifndef MSG_UBL_SIDE_POINTS
- #define MSG_UBL_SIDE_POINTS _UxGT("Side Points")
-#endif
-#ifndef MSG_UBL_MAP_TYPE
- #define MSG_UBL_MAP_TYPE _UxGT("Map Type")
-#endif
-#ifndef MSG_UBL_OUTPUT_MAP
- #define MSG_UBL_OUTPUT_MAP _UxGT("Output Mesh Map")
-#endif
-#ifndef MSG_UBL_OUTPUT_MAP_HOST
- #define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Output for Host")
-#endif
-#ifndef MSG_UBL_OUTPUT_MAP_CSV
- #define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Output for CSV")
-#endif
-#ifndef MSG_UBL_OUTPUT_MAP_BACKUP
- #define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Off Printer Backup")
-#endif
-#ifndef MSG_UBL_INFO_UBL
- #define MSG_UBL_INFO_UBL _UxGT("Output UBL Info")
-#endif
-#ifndef MSG_UBL_FILLIN_AMOUNT
- #define MSG_UBL_FILLIN_AMOUNT _UxGT("Fill-in Amount")
-#endif
-#ifndef MSG_UBL_MANUAL_FILLIN
- #define MSG_UBL_MANUAL_FILLIN _UxGT("Manual Fill-in")
-#endif
-#ifndef MSG_UBL_SMART_FILLIN
- #define MSG_UBL_SMART_FILLIN _UxGT("Smart Fill-in")
-#endif
-#ifndef MSG_UBL_FILLIN_MESH
- #define MSG_UBL_FILLIN_MESH _UxGT("Fill-in Mesh")
-#endif
-#ifndef MSG_UBL_INVALIDATE_ALL
- #define MSG_UBL_INVALIDATE_ALL _UxGT("Invalidate All")
-#endif
-#ifndef MSG_UBL_INVALIDATE_CLOSEST
- #define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalidate Closest")
-#endif
-#ifndef MSG_UBL_FINE_TUNE_ALL
- #define MSG_UBL_FINE_TUNE_ALL _UxGT("Fine Tune All")
-#endif
-#ifndef MSG_UBL_FINE_TUNE_CLOSEST
- #define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Fine Tune Closest")
-#endif
-#ifndef MSG_UBL_STORAGE_MESH_MENU
- #define MSG_UBL_STORAGE_MESH_MENU _UxGT("Mesh Storage")
-#endif
-#ifndef MSG_UBL_STORAGE_SLOT
- #define MSG_UBL_STORAGE_SLOT _UxGT("Memory Slot")
-#endif
-#ifndef MSG_UBL_LOAD_MESH
- #define MSG_UBL_LOAD_MESH _UxGT("Load Bed Mesh")
-#endif
-#ifndef MSG_UBL_SAVE_MESH
- #define MSG_UBL_SAVE_MESH _UxGT("Save Bed Mesh")
-#endif
-#ifndef MSG_MESH_LOADED
- #define MSG_MESH_LOADED _UxGT("Mesh %i Loaded")
-#endif
-#ifndef MSG_MESH_SAVED
- #define MSG_MESH_SAVED _UxGT("Mesh %i Saved")
-#endif
-#ifndef MSG_UBL_NO_STORAGE
- #define MSG_UBL_NO_STORAGE _UxGT("No Storage")
-#endif
-#ifndef MSG_UBL_SAVE_ERROR
- #define MSG_UBL_SAVE_ERROR _UxGT("Err: UBL Save")
-#endif
-#ifndef MSG_UBL_RESTORE_ERROR
- #define MSG_UBL_RESTORE_ERROR _UxGT("Err: UBL Restore")
-#endif
-#ifndef MSG_UBL_Z_OFFSET
- #define MSG_UBL_Z_OFFSET _UxGT("Z-Offset: ")
-#endif
-#ifndef MSG_UBL_Z_OFFSET_STOPPED
- #define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Offset Stopped")
-#endif
-#ifndef MSG_UBL_STEP_BY_STEP_MENU
- #define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Step-By-Step UBL")
-#endif
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("LED Control");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Lights");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Light Presets");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Red");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Orange");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Yellow");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Green");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Blue");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Violet");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("White");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Default");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Custom Lights");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Red Intensity");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Green Intensity");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Blue Intensity");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("White Intensity");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Brightness");
-#ifndef MSG_LED_CONTROL
- #define MSG_LED_CONTROL _UxGT("LED Control")
-#endif
-#ifndef MSG_LEDS
- #define MSG_LEDS _UxGT("Lights")
-#endif
-#ifndef MSG_LED_PRESETS
- #define MSG_LED_PRESETS _UxGT("Light Presets")
-#endif
-#ifndef MSG_SET_LEDS_RED
- #define MSG_SET_LEDS_RED _UxGT("Red")
-#endif
-#ifndef MSG_SET_LEDS_ORANGE
- #define MSG_SET_LEDS_ORANGE _UxGT("Orange")
-#endif
-#ifndef MSG_SET_LEDS_YELLOW
- #define MSG_SET_LEDS_YELLOW _UxGT("Yellow")
-#endif
-#ifndef MSG_SET_LEDS_GREEN
- #define MSG_SET_LEDS_GREEN _UxGT("Green")
-#endif
-#ifndef MSG_SET_LEDS_BLUE
- #define MSG_SET_LEDS_BLUE _UxGT("Blue")
-#endif
-#ifndef MSG_SET_LEDS_INDIGO
- #define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#endif
-#ifndef MSG_SET_LEDS_VIOLET
- #define MSG_SET_LEDS_VIOLET _UxGT("Violet")
-#endif
-#ifndef MSG_SET_LEDS_WHITE
- #define MSG_SET_LEDS_WHITE _UxGT("White")
-#endif
-#ifndef MSG_SET_LEDS_DEFAULT
- #define MSG_SET_LEDS_DEFAULT _UxGT("Default")
-#endif
-#ifndef MSG_CUSTOM_LEDS
- #define MSG_CUSTOM_LEDS _UxGT("Custom Lights")
-#endif
-#ifndef MSG_INTENSITY_R
- #define MSG_INTENSITY_R _UxGT("Red Intensity")
-#endif
-#ifndef MSG_INTENSITY_G
- #define MSG_INTENSITY_G _UxGT("Green Intensity")
-#endif
-#ifndef MSG_INTENSITY_B
- #define MSG_INTENSITY_B _UxGT("Blue Intensity")
-#endif
-#ifndef MSG_INTENSITY_W
- #define MSG_INTENSITY_W _UxGT("White Intensity")
-#endif
-#ifndef MSG_LED_BRIGHTNESS
- #define MSG_LED_BRIGHTNESS _UxGT("Brightness")
-#endif
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Moving...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Free XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Move X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Move Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Move Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extruder");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extruder ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extruder ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extruder ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extruder ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extruder ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extruder ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Hotend too cold");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Move %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Move 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Move 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Move 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Speed");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Bed Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Nozzle");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Nozzle ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Nozzle ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Nozzle ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Nozzle ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Nozzle ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Nozzle ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Bed");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Enclosure");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan Speed");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Fan Speed 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Fan Speed 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Fan Speed 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra Fan Speed");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Extra Fan Speed 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Extra Fan Speed 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Extra Fan Speed 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flow");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flow ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flow ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flow ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flow ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flow ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flow ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autotemp");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("On");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Off");
+ PROGMEM Language_Str MSG_AUTOTUNE_PID = _UxGT("PID Autotune");
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E0 = _UxGT("PID Autotune ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E1 = _UxGT("PID Autotune ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E2 = _UxGT("PID Autotune ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E3 = _UxGT("PID Autotune ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E4 = _UxGT("PID Autotune ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AUTOTUNE_PID_E5 = _UxGT("PID Autotune ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Select");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Select ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Select ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Select ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Select ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Select ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Select ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Accel");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Jerk");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-Jerk");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-Jerk");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-Jerk");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-Jerk");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Velocity");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vmax ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vmax ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vmax ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vmax ") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("Vmax ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("Vmax ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("Vmax ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("Vmax ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("Vmax ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("Vmax ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vmin");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VTrav Min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Acceleration");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Amax ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Amax ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Amax ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Amax ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Amax ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Amax ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Amax ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Amax ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Amax ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Amax ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-Retract");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-Travel");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Steps/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Esteps/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("steps/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperature");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Motion");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Unload mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Load mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Advance K");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("Advance K ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("Advance K ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("Advance K ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("Advance K ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("Advance K ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("Advance K ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD Contrast");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Store Settings");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Load Settings");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restore failsafe");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initialize EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Media Update");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reset Printer");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info Screen");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Prepare");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Tune");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Start Print");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Next");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Init");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Print");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Reset");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Cancel");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Done");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pause Print");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Resume Print");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Stop Print");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Outage Recovery");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Print from Media");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("No Media");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Sleep...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Click to Resume...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Print Paused");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Printing...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Print Aborted");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("No Move.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("KILLED. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("STOPPED. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retract mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retract V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Swap Length");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purge Length");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Tool Change");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Raise");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Prime Speed");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Retract Speed");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Nozzle Standby");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Change Filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Change Filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Change Filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Change Filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Change Filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Change Filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Change Filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Load Filament");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Load Filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Load Filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Load Filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Load Filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Load Filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Load Filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD = _UxGT("Unload Filament");
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Unload Filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Unload Filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Unload Filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Unload Filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Unload Filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Unload Filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Unload All");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Init. Media");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Change Media");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Release Media");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Skew Factor");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Cmd: Self-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Cmd: Reset");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Cmd: Stow");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Cmd: Deploy");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("Cmd: SW-Mode");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("Cmd: 5V-Mode");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("Cmd: OD-Mode");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Cmd: Mode-Store");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Set BLTouch to 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Set BLTouch to OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Report Drain");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("DANGER: Bad settings can cause damage! Proceed anyway?");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Init TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Z Offset Test");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Save");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Stow Z-Probe");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s First");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Total");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Heating Failed");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Bed Heating Failed");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_CHAMBER = _UxGT("Chamber Heating Fail");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: REDUNDANT TEMP");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("BED THERMAL RUNAWAY");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("CHAMBER T. RUNAWAY");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: MAXTEMP");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: MINTEMP");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err: MAXTEMP BED");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err: MINTEMP BED");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Err: MAXTEMP CHAMBER");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Err: MINTEMP CHAMBER");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY First");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("PRINTER HALTED");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Please Reset");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Heating...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Cooling...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Bed Heating...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Bed Cooling...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Chamber Heating...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Chamber Cooling...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrate Center");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta Settings");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibration");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Set Delta Height");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Probe Z-offset");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Height");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Radius");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("About Printer");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Printer Info");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3-Point Leveling");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Linear Leveling");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Bilinear Leveling");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Mesh Leveling");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Printer Stats");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Board Info");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extruders");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocol");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON");
-#ifndef MSG_MOVING
- #define MSG_MOVING _UxGT("Moving...")
-#endif
-#ifndef MSG_FREE_XY
- #define MSG_FREE_XY _UxGT("Free XY")
-#endif
-#ifndef MSG_MOVE_X
- #define MSG_MOVE_X _UxGT("Move X")
-#endif
-#ifndef MSG_MOVE_Y
- #define MSG_MOVE_Y _UxGT("Move Y")
-#endif
-#ifndef MSG_MOVE_Z
- #define MSG_MOVE_Z _UxGT("Move Z")
-#endif
-#ifndef MSG_MOVE_E
- #define MSG_MOVE_E _UxGT("Extruder")
-#endif
-#ifndef MSG_HOTEND_TOO_COLD
- #define MSG_HOTEND_TOO_COLD _UxGT("Hotend too cold")
-#endif
-#ifndef MSG_MOVE_Z_DIST
- #define MSG_MOVE_Z_DIST _UxGT("Move %smm")
-#endif
-#ifndef MSG_MOVE_01MM
- #define MSG_MOVE_01MM _UxGT("Move 0.1mm")
-#endif
-#ifndef MSG_MOVE_1MM
- #define MSG_MOVE_1MM _UxGT("Move 1mm")
-#endif
-#ifndef MSG_MOVE_10MM
- #define MSG_MOVE_10MM _UxGT("Move 10mm")
-#endif
-#ifndef MSG_SPEED
- #define MSG_SPEED _UxGT("Speed")
-#endif
-#ifndef MSG_BED_Z
- #define MSG_BED_Z _UxGT("Bed Z")
-#endif
-#ifndef MSG_NOZZLE
- #define MSG_NOZZLE _UxGT("Nozzle")
-#endif
-#ifndef MSG_BED
- #define MSG_BED _UxGT("Bed")
-#endif
-#ifndef MSG_CHAMBER
- #define MSG_CHAMBER _UxGT("Enclosure")
-#endif
-#ifndef MSG_FAN_SPEED
- #define MSG_FAN_SPEED _UxGT("Fan Speed")
-#endif
-#ifndef MSG_EXTRA_FAN_SPEED
- #define MSG_EXTRA_FAN_SPEED _UxGT("Extra Fan Speed")
-#endif
-#ifndef MSG_FLOW
- #define MSG_FLOW _UxGT("Flow")
-#endif
-#ifndef MSG_CONTROL
- #define MSG_CONTROL _UxGT("Control")
-#endif
-#ifndef MSG_MIN
- #define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#endif
-#ifndef MSG_MAX
- #define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#endif
-#ifndef MSG_FACTOR
- #define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#endif
-#ifndef MSG_AUTOTEMP
- #define MSG_AUTOTEMP _UxGT("Autotemp")
-#endif
-#ifndef MSG_LCD_ON
- #define MSG_LCD_ON _UxGT("On")
-#endif
-#ifndef MSG_LCD_OFF
- #define MSG_LCD_OFF _UxGT("Off")
-#endif
-#ifndef MSG_PID_P
- #define MSG_PID_P _UxGT("PID-P")
-#endif
-#ifndef MSG_PID_I
- #define MSG_PID_I _UxGT("PID-I")
-#endif
-#ifndef MSG_PID_D
- #define MSG_PID_D _UxGT("PID-D")
-#endif
-#ifndef MSG_PID_C
- #define MSG_PID_C _UxGT("PID-C")
-#endif
-#ifndef MSG_SELECT
- #define MSG_SELECT _UxGT("Select")
-#endif
-#ifndef MSG_ACC
- #define MSG_ACC _UxGT("Accel")
-#endif
-#ifndef MSG_JERK
- #define MSG_JERK _UxGT("Jerk")
-#endif
-#if IS_KINEMATIC
- #ifndef MSG_VA_JERK
- #define MSG_VA_JERK _UxGT("Va-Jerk")
- #endif
- #ifndef MSG_VB_JERK
- #define MSG_VB_JERK _UxGT("Vb-Jerk")
- #endif
- #ifndef MSG_VC_JERK
- #define MSG_VC_JERK _UxGT("Vc-Jerk")
- #endif
-#else
- #ifndef MSG_VA_JERK
- #define MSG_VA_JERK _UxGT("Vx-Jerk")
- #endif
- #ifndef MSG_VB_JERK
- #define MSG_VB_JERK _UxGT("Vy-Jerk")
- #endif
- #ifndef MSG_VC_JERK
- #define MSG_VC_JERK _UxGT("Vz-Jerk")
- #endif
-#endif
-#ifndef MSG_VE_JERK
- #define MSG_VE_JERK _UxGT("Ve-Jerk")
-#endif
-#ifndef MSG_JUNCTION_DEVIATION
- #define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev")
-#endif
-#ifndef MSG_VELOCITY
- #define MSG_VELOCITY _UxGT("Velocity")
-#endif
-#ifndef MSG_VMAX
- #define MSG_VMAX _UxGT("Vmax ")
-#endif
-#ifndef MSG_VMIN
- #define MSG_VMIN _UxGT("Vmin")
-#endif
-#ifndef MSG_VTRAV_MIN
- #define MSG_VTRAV_MIN _UxGT("VTrav Min")
-#endif
-#ifndef MSG_ACCELERATION
- #define MSG_ACCELERATION _UxGT("Acceleration")
-#endif
-#ifndef MSG_AMAX
- #define MSG_AMAX _UxGT("Amax ")
-#endif
-#ifndef MSG_A_RETRACT
- #define MSG_A_RETRACT _UxGT("A-Retract")
-#endif
-#ifndef MSG_A_TRAVEL
- #define MSG_A_TRAVEL _UxGT("A-Travel")
-#endif
-#ifndef MSG_STEPS_PER_MM
- #define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#endif
-#if IS_KINEMATIC
- #ifndef MSG_ASTEPS
- #define MSG_ASTEPS _UxGT("Asteps/mm")
- #endif
- #ifndef MSG_BSTEPS
- #define MSG_BSTEPS _UxGT("Bsteps/mm")
- #endif
- #ifndef MSG_CSTEPS
- #define MSG_CSTEPS _UxGT("Csteps/mm")
- #endif
-#else
- #ifndef MSG_ASTEPS
- #define MSG_ASTEPS _UxGT("Xsteps/mm")
- #endif
- #ifndef MSG_BSTEPS
- #define MSG_BSTEPS _UxGT("Ysteps/mm")
- #endif
- #ifndef MSG_CSTEPS
- #define MSG_CSTEPS _UxGT("Zsteps/mm")
- #endif
-#endif
-#ifndef MSG_ESTEPS
- #define MSG_ESTEPS _UxGT("Esteps/mm")
-#endif
-#ifndef MSG_E0_STEPS
- #define MSG_E0_STEPS _UxGT("E1steps/mm")
-#endif
-#ifndef MSG_E1_STEPS
- #define MSG_E1_STEPS _UxGT("E2steps/mm")
-#endif
-#ifndef MSG_E2_STEPS
- #define MSG_E2_STEPS _UxGT("E3steps/mm")
-#endif
-#ifndef MSG_E3_STEPS
- #define MSG_E3_STEPS _UxGT("E4steps/mm")
-#endif
-#ifndef MSG_E4_STEPS
- #define MSG_E4_STEPS _UxGT("E5steps/mm")
-#endif
-#ifndef MSG_E5_STEPS
- #define MSG_E5_STEPS _UxGT("E6steps/mm")
-#endif
-#ifndef MSG_TEMPERATURE
- #define MSG_TEMPERATURE _UxGT("Temperature")
-#endif
-#ifndef MSG_MOTION
- #define MSG_MOTION _UxGT("Motion")
-#endif
-#ifndef MSG_FILAMENT
- #define MSG_FILAMENT _UxGT("Filament")
-#endif
-#ifndef MSG_VOLUMETRIC_ENABLED
- #define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm") MSG_CUBED
-#endif
-#ifndef MSG_FILAMENT_DIAM
- #define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#endif
-#ifndef MSG_FILAMENT_UNLOAD
- #define MSG_FILAMENT_UNLOAD _UxGT("Unload mm")
-#endif
-#ifndef MSG_FILAMENT_LOAD
- #define MSG_FILAMENT_LOAD _UxGT("Load mm")
-#endif
-#ifndef MSG_ADVANCE_K
- #define MSG_ADVANCE_K _UxGT("Advance K")
-#endif
-#ifndef MSG_CONTRAST
- #define MSG_CONTRAST _UxGT("LCD Contrast")
-#endif
-#ifndef MSG_STORE_EEPROM
- #define MSG_STORE_EEPROM _UxGT("Store Settings")
-#endif
-#ifndef MSG_LOAD_EEPROM
- #define MSG_LOAD_EEPROM _UxGT("Load Settings")
-#endif
-#ifndef MSG_RESTORE_FAILSAFE
- #define MSG_RESTORE_FAILSAFE _UxGT("Restore failsafe")
-#endif
-#ifndef MSG_INIT_EEPROM
- #define MSG_INIT_EEPROM _UxGT("Initialize EEPROM")
-#endif
-#ifndef MSG_MEDIA_UPDATE
- #define MSG_MEDIA_UPDATE _UxGT("Media Update")
-#endif
-#ifndef MSG_RESET_PRINTER
- #define MSG_RESET_PRINTER _UxGT("Reset Printer")
-#endif
-#ifndef MSG_REFRESH
- #define MSG_REFRESH _UxGT("Refresh")
-#endif
-#ifndef MSG_WATCH
- #define MSG_WATCH _UxGT("Info Screen")
-#endif
-#ifndef MSG_PREPARE
- #define MSG_PREPARE _UxGT("Prepare")
-#endif
-#ifndef MSG_TUNE
- #define MSG_TUNE _UxGT("Tune")
-#endif
-#ifndef MSG_START_PRINT
- #define MSG_START_PRINT _UxGT("Start Print")
-#endif
-#ifndef MSG_BUTTON_NEXT
- #define MSG_BUTTON_NEXT _UxGT("Next")
-#endif
-#ifndef MSG_BUTTON_INIT
- #define MSG_BUTTON_INIT _UxGT("Init")
-#endif
-#ifndef MSG_BUTTON_STOP
- #define MSG_BUTTON_STOP _UxGT("Stop")
-#endif
-#ifndef MSG_BUTTON_PRINT
- #define MSG_BUTTON_PRINT _UxGT("Print")
-#endif
-#ifndef MSG_BUTTON_RESET
- #define MSG_BUTTON_RESET _UxGT("Reset")
-#endif
-#ifndef MSG_BUTTON_CANCEL
- #define MSG_BUTTON_CANCEL _UxGT("Cancel")
-#endif
-#ifndef MSG_BUTTON_DONE
- #define MSG_BUTTON_DONE _UxGT("Done")
-#endif
-#ifndef MSG_PAUSE_PRINT
- #define MSG_PAUSE_PRINT _UxGT("Pause Print")
-#endif
-#ifndef MSG_RESUME_PRINT
- #define MSG_RESUME_PRINT _UxGT("Resume Print")
-#endif
-#ifndef MSG_STOP_PRINT
- #define MSG_STOP_PRINT _UxGT("Stop Print")
-#endif
-#ifndef MSG_OUTAGE_RECOVERY
- #define MSG_OUTAGE_RECOVERY _UxGT("Outage Recovery")
-#endif
-#ifndef MSG_MEDIA_MENU
- #define MSG_MEDIA_MENU _UxGT("Print from Media")
-#endif
-#ifndef MSG_NO_MEDIA
- #define MSG_NO_MEDIA _UxGT("No Media")
-#endif
-#ifndef MSG_DWELL
- #define MSG_DWELL _UxGT("Sleep...")
-#endif
-#ifndef MSG_USERWAIT
- #define MSG_USERWAIT _UxGT("Click to Resume...")
-#endif
-#ifndef MSG_PRINT_PAUSED
- #define MSG_PRINT_PAUSED _UxGT("Print Paused")
-#endif
-#ifndef MSG_PRINTING
- #define MSG_PRINTING _UxGT("Printing...")
-#endif
-#ifndef MSG_PRINT_ABORTED
- #define MSG_PRINT_ABORTED _UxGT("Print Aborted")
-#endif
-#ifndef MSG_NO_MOVE
- #define MSG_NO_MOVE _UxGT("No Move.")
-#endif
-#ifndef MSG_KILLED
- #define MSG_KILLED _UxGT("KILLED. ")
-#endif
-#ifndef MSG_STOPPED
- #define MSG_STOPPED _UxGT("STOPPED. ")
-#endif
-#ifndef MSG_CONTROL_RETRACT
- #define MSG_CONTROL_RETRACT _UxGT("Retract mm")
-#endif
-#ifndef MSG_CONTROL_RETRACT_SWAP
- #define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Re.mm")
-#endif
-#ifndef MSG_CONTROL_RETRACTF
- #define MSG_CONTROL_RETRACTF _UxGT("Retract V")
-#endif
-#ifndef MSG_CONTROL_RETRACT_ZHOP
- #define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm")
-#endif
-#ifndef MSG_CONTROL_RETRACT_RECOVER
- #define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#endif
-#ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP
- #define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#endif
-#ifndef MSG_CONTROL_RETRACT_RECOVERF
- #define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#endif
-#ifndef MSG_CONTROL_RETRACT_RECOVER_SWAPF
- #define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#endif
-#ifndef MSG_AUTORETRACT
- #define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#endif
-#ifndef MSG_FILAMENT_SWAP_LENGTH
- #define MSG_FILAMENT_SWAP_LENGTH _UxGT("Swap Length")
-#endif
-#ifndef MSG_FILAMENT_PURGE_LENGTH
- #define MSG_FILAMENT_PURGE_LENGTH _UxGT("Purge Length")
-#endif
-#ifndef MSG_TOOL_CHANGE
- #define MSG_TOOL_CHANGE _UxGT("Tool Change")
-#endif
-#ifndef MSG_TOOL_CHANGE_ZLIFT
- #define MSG_TOOL_CHANGE_ZLIFT _UxGT("Z Raise")
-#endif
-#ifndef MSG_SINGLENOZZLE_PRIME_SPD
- #define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Prime Speed")
-#endif
-#ifndef MSG_SINGLENOZZLE_RETRACT_SPD
- #define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Retract Speed")
-#endif
-#ifndef MSG_NOZZLE_STANDBY
- #define MSG_NOZZLE_STANDBY _UxGT("Nozzle Standby")
-#endif
-#ifndef MSG_FILAMENTCHANGE
- #define MSG_FILAMENTCHANGE _UxGT("Change Filament")
-#endif
-#ifndef MSG_FILAMENTLOAD
- #define MSG_FILAMENTLOAD _UxGT("Load Filament")
-#endif
-#ifndef MSG_FILAMENTUNLOAD
- #define MSG_FILAMENTUNLOAD _UxGT("Unload Filament")
-#endif
-#ifndef MSG_FILAMENTUNLOAD_ALL
- #define MSG_FILAMENTUNLOAD_ALL _UxGT("Unload All")
-#endif
-#ifndef MSG_INIT_MEDIA
- #define MSG_INIT_MEDIA _UxGT("Init. Media")
-#endif
-#ifndef MSG_CHANGE_MEDIA
- #define MSG_CHANGE_MEDIA _UxGT("Change Media")
-#endif
-#ifndef MSG_RELEASE_MEDIA
- #define MSG_RELEASE_MEDIA _UxGT("Release Media")
-#endif
-#ifndef MSG_ZPROBE_OUT
- #define MSG_ZPROBE_OUT _UxGT("Z Probe Past Bed")
-#endif
-#ifndef MSG_SKEW_FACTOR
- #define MSG_SKEW_FACTOR _UxGT("Skew Factor")
-#endif
-#ifndef MSG_BLTOUCH
- #define MSG_BLTOUCH _UxGT("BLTouch")
-#endif
-#ifndef MSG_BLTOUCH_SELFTEST
- #define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
-#endif
-#ifndef MSG_BLTOUCH_RESET
- #define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
-#endif
-#ifndef MSG_BLTOUCH_STOW
- #define MSG_BLTOUCH_STOW _UxGT("Cmd: Stow")
-#endif
-#ifndef MSG_BLTOUCH_DEPLOY
- #define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Deploy")
-#endif
-#ifndef MSG_BLTOUCH_SW_MODE
- #define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: SW-Mode")
-#endif
-#ifndef MSG_BLTOUCH_5V_MODE
- #define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: 5V-Mode")
-#endif
-#ifndef MSG_BLTOUCH_OD_MODE
- #define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: OD-Mode")
-#endif
-#ifndef MSG_BLTOUCH_MODE_STORE
- #define MSG_BLTOUCH_MODE_STORE _UxGT("Cmd: Mode-Store")
-#endif
-#ifndef MSG_BLTOUCH_MODE_STORE_5V
- #define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Set BLTouch to 5V")
-#endif
-#ifndef MSG_BLTOUCH_MODE_STORE_OD
- #define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Set BLTouch to OD")
-#endif
-#ifndef MSG_BLTOUCH_MODE_ECHO
- #define MSG_BLTOUCH_MODE_ECHO _UxGT("Report Drain")
-#endif
-#ifndef MSG_BLTOUCH_MODE_CHANGE
- #define MSG_BLTOUCH_MODE_CHANGE _UxGT("DANGER: Bad settings can cause damage! Proceed anyway?")
-#endif
-#ifndef MSG_TOUCHMI_PROBE
- #define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#endif
-#ifndef MSG_TOUCHMI_INIT
- #define MSG_TOUCHMI_INIT _UxGT("Init TouchMI")
-#endif
-#ifndef MSG_TOUCHMI_ZTEST
- #define MSG_TOUCHMI_ZTEST _UxGT("Z Offset Test")
-#endif
-#ifndef MSG_TOUCHMI_SAVE
- #define MSG_TOUCHMI_SAVE _UxGT("Save")
-#endif
-#ifndef MSG_MANUAL_DEPLOY_TOUCHMI
- #define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("Deploy TouchMI")
-#endif
-#ifndef MSG_MANUAL_DEPLOY
- #define MSG_MANUAL_DEPLOY _UxGT("Deploy Z-Probe")
-#endif
-#ifndef MSG_MANUAL_STOW
- #define MSG_MANUAL_STOW _UxGT("Stow Z-Probe")
-#endif
-#ifndef MSG_HOME_FIRST
- #define MSG_HOME_FIRST _UxGT("Home %s%s%s First")
-#endif
-#ifndef MSG_ZPROBE_ZOFFSET
- #define MSG_ZPROBE_ZOFFSET _UxGT("Probe Z Offset")
-#endif
-#ifndef MSG_BABYSTEP_X
- #define MSG_BABYSTEP_X _UxGT("Babystep X")
-#endif
-#ifndef MSG_BABYSTEP_Y
- #define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#endif
-#ifndef MSG_BABYSTEP_Z
- #define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#endif
-#ifndef MSG_BABYSTEP_TOTAL
- #define MSG_BABYSTEP_TOTAL _UxGT("Total")
-#endif
-#ifndef MSG_ENDSTOP_ABORT
- #define MSG_ENDSTOP_ABORT _UxGT("Endstop Abort")
-#endif
-#ifndef MSG_HEATING_FAILED_LCD
- #define MSG_HEATING_FAILED_LCD _UxGT("Heating Failed")
-#endif
-#ifndef MSG_HEATING_FAILED_LCD_BED
- #define MSG_HEATING_FAILED_LCD_BED _UxGT("Bed Heating Failed")
-#endif
-#ifndef MSG_HEATING_FAILED_LCD_CHAMBER
- #define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Chamber Heating Fail")
-#endif
-#ifndef MSG_ERR_REDUNDANT_TEMP
- #define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: REDUNDANT TEMP")
-#endif
-#ifndef MSG_THERMAL_RUNAWAY
- #define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
-#endif
-#ifndef MSG_THERMAL_RUNAWAY_BED
- #define MSG_THERMAL_RUNAWAY_BED _UxGT("BED THERMAL RUNAWAY")
-#endif
-#ifndef MSG_THERMAL_RUNAWAY_CHAMBER
- #define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("CHAMBER T. RUNAWAY")
-#endif
-#ifndef MSG_ERR_MAXTEMP
- #define MSG_ERR_MAXTEMP _UxGT("Err: MAXTEMP")
-#endif
-#ifndef MSG_ERR_MINTEMP
- #define MSG_ERR_MINTEMP _UxGT("Err: MINTEMP")
-#endif
-#ifndef MSG_ERR_MAXTEMP_BED
- #define MSG_ERR_MAXTEMP_BED _UxGT("Err: MAXTEMP BED")
-#endif
-#ifndef MSG_ERR_MINTEMP_BED
- #define MSG_ERR_MINTEMP_BED _UxGT("Err: MINTEMP BED")
-#endif
-#ifndef MSG_ERR_MAXTEMP_CHAMBER
- #define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err: MAXTEMP CHAMBER")
-#endif
-#ifndef MSG_ERR_MINTEMP_CHAMBER
- #define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err: MINTEMP CHAMBER")
-#endif
-#ifndef MSG_ERR_Z_HOMING
- #define MSG_ERR_Z_HOMING _UxGT("Home XY First")
-#endif
-#ifndef MSG_HALTED
- #define MSG_HALTED _UxGT("PRINTER HALTED")
-#endif
-#ifndef MSG_PLEASE_RESET
- #define MSG_PLEASE_RESET _UxGT("Please Reset")
-#endif
-#ifndef MSG_SHORT_DAY
- #define MSG_SHORT_DAY _UxGT("d") // One character only
-#endif
-#ifndef MSG_SHORT_HOUR
- #define MSG_SHORT_HOUR _UxGT("h") // One character only
-#endif
-#ifndef MSG_SHORT_MINUTE
- #define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#endif
-#ifndef MSG_HEATING
- #define MSG_HEATING _UxGT("Heating...")
-#endif
-#ifndef MSG_COOLING
- #define MSG_COOLING _UxGT("Cooling...")
-#endif
-#ifndef MSG_BED_HEATING
- #define MSG_BED_HEATING _UxGT("Bed Heating...")
-#endif
-#ifndef MSG_BED_COOLING
- #define MSG_BED_COOLING _UxGT("Bed Cooling...")
-#endif
-#ifndef MSG_CHAMBER_HEATING
- #define MSG_CHAMBER_HEATING _UxGT("Chamber Heating...")
-#endif
-#ifndef MSG_CHAMBER_COOLING
- #define MSG_CHAMBER_COOLING _UxGT("Chamber Cooling...")
-#endif
-#ifndef MSG_DELTA_CALIBRATE
- #define MSG_DELTA_CALIBRATE _UxGT("Delta Calibration")
-#endif
-#ifndef MSG_DELTA_CALIBRATE_X
- #define MSG_DELTA_CALIBRATE_X _UxGT("Calibrate X")
-#endif
-#ifndef MSG_DELTA_CALIBRATE_Y
- #define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrate Y")
-#endif
-#ifndef MSG_DELTA_CALIBRATE_Z
- #define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrate Z")
-#endif
-#ifndef MSG_DELTA_CALIBRATE_CENTER
- #define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrate Center")
-#endif
-#ifndef MSG_DELTA_SETTINGS
- #define MSG_DELTA_SETTINGS _UxGT("Delta Settings")
-#endif
-#ifndef MSG_DELTA_AUTO_CALIBRATE
- #define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto Calibration")
-#endif
-#ifndef MSG_DELTA_HEIGHT_CALIBRATE
- #define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Set Delta Height")
-#endif
-#ifndef MSG_DELTA_Z_OFFSET_CALIBRATE
- #define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Probe Z-offset")
-#endif
-#ifndef MSG_DELTA_DIAG_ROD
- #define MSG_DELTA_DIAG_ROD _UxGT("Diag Rod")
-#endif
-#ifndef MSG_DELTA_HEIGHT
- #define MSG_DELTA_HEIGHT _UxGT("Height")
-#endif
-#ifndef MSG_DELTA_RADIUS
- #define MSG_DELTA_RADIUS _UxGT("Radius")
-#endif
-#ifndef MSG_INFO_MENU
- #define MSG_INFO_MENU _UxGT("About Printer")
-#endif
-#ifndef MSG_INFO_PRINTER_MENU
- #define MSG_INFO_PRINTER_MENU _UxGT("Printer Info")
-#endif
-#ifndef MSG_3POINT_LEVELING
- #define MSG_3POINT_LEVELING _UxGT("3-Point Leveling")
-#endif
-#ifndef MSG_LINEAR_LEVELING
- #define MSG_LINEAR_LEVELING _UxGT("Linear Leveling")
-#endif
-#ifndef MSG_BILINEAR_LEVELING
- #define MSG_BILINEAR_LEVELING _UxGT("Bilinear Leveling")
-#endif
-#ifndef MSG_UBL_LEVELING
- #define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling")
-#endif
-#ifndef MSG_MESH_LEVELING
- #define MSG_MESH_LEVELING _UxGT("Mesh Leveling")
-#endif
-#ifndef MSG_INFO_STATS_MENU
- #define MSG_INFO_STATS_MENU _UxGT("Printer Stats")
-#endif
-#ifndef MSG_INFO_BOARD_MENU
- #define MSG_INFO_BOARD_MENU _UxGT("Board Info")
-#endif
-#ifndef MSG_INFO_THERMISTOR_MENU
- #define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
-#endif
-#ifndef MSG_INFO_EXTRUDERS
- #define MSG_INFO_EXTRUDERS _UxGT("Extruders")
-#endif
-#ifndef MSG_INFO_BAUDRATE
- #define MSG_INFO_BAUDRATE _UxGT("Baud")
-#endif
-#ifndef MSG_INFO_PROTOCOL
- #define MSG_INFO_PROTOCOL _UxGT("Protocol")
-#endif
-#ifndef MSG_INFO_RUNAWAY_OFF
- #define MSG_INFO_RUNAWAY_OFF _UxGT("Runaway Watch: OFF")
-#endif
-#ifndef MSG_INFO_RUNAWAY_ON
- #define MSG_INFO_RUNAWAY_ON _UxGT("Runaway Watch: ON")
-#endif
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Case Light");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Light Brightness");
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER");
-#ifndef MSG_CASE_LIGHT
- #define MSG_CASE_LIGHT _UxGT("Case Light")
-#endif
-#ifndef MSG_CASE_LIGHT_BRIGHTNESS
- #define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Light Brightness")
-#endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Print Count");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total Print time");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Prints");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Longest");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded");
+ #endif
-#ifndef MSG_EXPECTED_PRINTER
- #define MSG_EXPECTED_PRINTER _UxGT("INCORRECT PRINTER")
-#endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("PSU");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Drive Strength");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("TMC CONNECTION ERROR");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT CHANGE");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PRINT PAUSED");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LOAD FILAMENT");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("UNLOAD FILAMENT");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("RESUME OPTIONS:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purge more");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continue");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Runout Sensor");
+ PROGMEM Language_Str MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout Dist mm");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Homing Failed");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Probing Failed");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Too Cold");
-#if LCD_WIDTH >= 20
- #ifndef MSG_INFO_PRINT_COUNT
- #define MSG_INFO_PRINT_COUNT _UxGT("Print Count")
- #endif
- #ifndef MSG_INFO_COMPLETED_PRINTS
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed")
- #endif
- #ifndef MSG_INFO_PRINT_TIME
- #define MSG_INFO_PRINT_TIME _UxGT("Total Print time")
- #endif
- #ifndef MSG_INFO_PRINT_LONGEST
- #define MSG_INFO_PRINT_LONGEST _UxGT("Longest Job Time")
- #endif
- #ifndef MSG_INFO_PRINT_FILAMENT
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extruded Total")
- #endif
-#else
- #ifndef MSG_INFO_PRINT_COUNT
- #define MSG_INFO_PRINT_COUNT _UxGT("Prints")
- #endif
- #ifndef MSG_INFO_COMPLETED_PRINTS
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed")
- #endif
- #ifndef MSG_INFO_PRINT_TIME
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #endif
- #ifndef MSG_INFO_PRINT_LONGEST
- #define MSG_INFO_PRINT_LONGEST _UxGT("Longest")
- #endif
- #ifndef MSG_INFO_PRINT_FILAMENT
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extruded")
- #endif
-#endif
-#ifndef MSG_INFO_MIN_TEMP
- #define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#endif
-#ifndef MSG_INFO_MAX_TEMP
- #define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#endif
-#ifndef MSG_INFO_PSU
- #define MSG_INFO_PSU _UxGT("PSU")
-#endif
-#ifndef MSG_DRIVE_STRENGTH
- #define MSG_DRIVE_STRENGTH _UxGT("Drive Strength")
-#endif
-#ifndef MSG_DAC_PERCENT
- #define MSG_DAC_PERCENT _UxGT("Driver %")
-#endif
-#ifndef MSG_ERROR_TMC
- #define MSG_ERROR_TMC _UxGT("TMC CONNECTION ERROR")
-#endif
-#ifndef MSG_DAC_EEPROM_WRITE
- #define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_HEADER
- #define MSG_FILAMENT_CHANGE_HEADER _UxGT("FILAMENT CHANGE")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_HEADER_PAUSE
- #define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("PRINT PAUSED")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_HEADER_LOAD
- #define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("LOAD FILAMENT")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_HEADER_UNLOAD
- #define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("UNLOAD FILAMENT")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER
- #define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_OPTION_PURGE
- #define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purge more")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME
- #define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continue")
-#endif
-#ifndef MSG_FILAMENT_CHANGE_NOZZLE
- #define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozzle: ")
-#endif
-#ifndef MSG_RUNOUT_SENSOR
- #define MSG_RUNOUT_SENSOR _UxGT("Runout Sensor")
-#endif
-#ifndef MSG_RUNOUT_DISTANCE_MM
- #define MSG_RUNOUT_DISTANCE_MM _UxGT("Runout Dist mm")
-#endif
-#ifndef MSG_ERR_HOMING_FAILED
- #define MSG_ERR_HOMING_FAILED _UxGT("Homing Failed")
-#endif
-#ifndef MSG_ERR_PROBING_FAILED
- #define MSG_ERR_PROBING_FAILED _UxGT("Probing Failed")
-#endif
-#ifndef MSG_M600_TOO_COLD
- #define MSG_M600_TOO_COLD _UxGT("M600: Too Cold")
-#endif
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOOSE FILAMENT");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("Update MMU Firmware!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Needs Attention.");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Resume Print");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Resuming...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Load Filament");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Load All");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Load to Nozzle");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Eject Filament");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Eject Filament 1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Eject Filament 2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Eject Filament 3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Eject Filament 4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Eject Filament 5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Unload Filament");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Loading Fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejecting Fil. ...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Unloading Fil....");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("All");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filament 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filament 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filament 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filament 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filament 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Reset MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Resetting MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Remove, click");
-#ifndef MSG_MMU2_FILAMENT_CHANGE_HEADER
- #define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("FILAMENT CHANGE")
-#endif
-#ifndef MSG_MMU2_CHOOSE_FILAMENT_HEADER
- #define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("CHOOSE FILAMENT")
-#endif
-#ifndef MSG_MMU2_MENU
- #define MSG_MMU2_MENU _UxGT("MMU")
-#endif
-#ifndef MSG_MMU2_WRONG_FIRMWARE
- #define MSG_MMU2_WRONG_FIRMWARE _UxGT("Update MMU Firmware!")
-#endif
-#ifndef MSG_MMU2_NOT_RESPONDING
- #define MSG_MMU2_NOT_RESPONDING _UxGT("MMU Needs Attention.")
-#endif
-#ifndef MSG_MMU2_RESUME
- #define MSG_MMU2_RESUME _UxGT("Resume Print")
-#endif
-#ifndef MSG_MMU2_RESUMING
- #define MSG_MMU2_RESUMING _UxGT("Resuming...")
-#endif
-#ifndef MSG_MMU2_LOAD_FILAMENT
- #define MSG_MMU2_LOAD_FILAMENT _UxGT("Load Filament")
-#endif
-#ifndef MSG_MMU2_LOAD_ALL
- #define MSG_MMU2_LOAD_ALL _UxGT("Load All")
-#endif
-#ifndef MSG_MMU2_LOAD_TO_NOZZLE
- #define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Load to Nozzle")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT
- #define MSG_MMU2_EJECT_FILAMENT _UxGT("Eject Filament")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT0
- #define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Eject Filament 1")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT1
- #define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Eject Filament 2")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT2
- #define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Eject Filament 3")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT3
- #define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Eject Filament 4")
-#endif
-#ifndef MSG_MMU2_EJECT_FILAMENT4
- #define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Eject Filament 5")
-#endif
-#ifndef MSG_MMU2_UNLOAD_FILAMENT
- #define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Unload Filament")
-#endif
-#ifndef MSG_MMU2_LOADING_FILAMENT
- #define MSG_MMU2_LOADING_FILAMENT _UxGT("Loading Fil. %i...")
-#endif
-#ifndef MSG_MMU2_EJECTING_FILAMENT
- #define MSG_MMU2_EJECTING_FILAMENT _UxGT("Ejecting Fil. ...")
-#endif
-#ifndef MSG_MMU2_UNLOADING_FILAMENT
- #define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Unloading Fil....")
-#endif
-#ifndef MSG_MMU2_ALL
- #define MSG_MMU2_ALL _UxGT("All")
-#endif
-#ifndef MSG_MMU2_FILAMENT0
- #define MSG_MMU2_FILAMENT0 _UxGT("Filament 1")
-#endif
-#ifndef MSG_MMU2_FILAMENT1
- #define MSG_MMU2_FILAMENT1 _UxGT("Filament 2")
-#endif
-#ifndef MSG_MMU2_FILAMENT2
- #define MSG_MMU2_FILAMENT2 _UxGT("Filament 3")
-#endif
-#ifndef MSG_MMU2_FILAMENT3
- #define MSG_MMU2_FILAMENT3 _UxGT("Filament 4")
-#endif
-#ifndef MSG_MMU2_FILAMENT4
- #define MSG_MMU2_FILAMENT4 _UxGT("Filament 5")
-#endif
-#ifndef MSG_MMU2_RESET
- #define MSG_MMU2_RESET _UxGT("Reset MMU")
-#endif
-#ifndef MSG_MMU2_RESETTING
- #define MSG_MMU2_RESETTING _UxGT("Resetting MMU...")
-#endif
-#ifndef MSG_MMU2_EJECT_RECOVER
- #define MSG_MMU2_EJECT_RECOVER _UxGT("Remove, click")
-#endif
+ PROGMEM Language_Str MSG_MIX = _UxGT("Mix");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Component 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Component 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Component 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Component 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Component 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Component 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Mixer");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradient");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Full Gradient");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Toggle Mix");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Cycle Mix");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Gradient Mix");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Reverse Gradient");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Active V-tool");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Start V-tool");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT(" End V-tool");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Reset V-tools");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Commit V-tool Mix");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-tools Were Reset");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Start Z:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT(" End Z:");
-#ifndef MSG_MIX
- #define MSG_MIX _UxGT("Mix")
-#endif
-#ifndef MSG_MIX_COMPONENT
- #define MSG_MIX_COMPONENT _UxGT("Component")
-#endif
-#ifndef MSG_MIXER
- #define MSG_MIXER _UxGT("Mixer")
-#endif
-#ifndef MSG_GRADIENT
- #define MSG_GRADIENT _UxGT("Gradient")
-#endif
-#ifndef MSG_FULL_GRADIENT
- #define MSG_FULL_GRADIENT _UxGT("Full Gradient")
-#endif
-#ifndef MSG_TOGGLE_MIX
- #define MSG_TOGGLE_MIX _UxGT("Toggle Mix")
-#endif
-#ifndef MSG_CYCLE_MIX
- #define MSG_CYCLE_MIX _UxGT("Cycle Mix")
-#endif
-#ifndef MSG_GRADIENT_MIX
- #define MSG_GRADIENT_MIX _UxGT("Gradient Mix")
-#endif
-#ifndef MSG_REVERSE_GRADIENT
- #define MSG_REVERSE_GRADIENT _UxGT("Reverse Gradient")
-#endif
-#ifndef MSG_ACTIVE_VTOOL
- #define MSG_ACTIVE_VTOOL _UxGT("Active V-tool")
-#endif
-#ifndef MSG_START_VTOOL
- #define MSG_START_VTOOL _UxGT("Start V-tool")
-#endif
-#ifndef MSG_END_VTOOL
- #define MSG_END_VTOOL _UxGT(" End V-tool")
-#endif
-#ifndef MSG_GRADIENT_ALIAS
- #define MSG_GRADIENT_ALIAS _UxGT("Alias V-tool")
-#endif
-#ifndef MSG_RESET_VTOOLS
- #define MSG_RESET_VTOOLS _UxGT("Reset V-tools")
-#endif
-#ifndef MSG_COMMIT_VTOOL
- #define MSG_COMMIT_VTOOL _UxGT("Commit V-tool Mix")
-#endif
-#ifndef MSG_VTOOLS_RESET
- #define MSG_VTOOLS_RESET _UxGT("V-tools Were Reset")
-#endif
-#ifndef MSG_START_Z
- #define MSG_START_Z _UxGT("Start Z")
-#endif
-#ifndef MSG_END_Z
- #define MSG_END_Z _UxGT(" End Z")
-#endif
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Games");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Maze");
-#ifndef MSG_GAMES
- #define MSG_GAMES _UxGT("Games")
-#endif
-#ifndef MSG_BRICKOUT
- #define MSG_BRICKOUT _UxGT("Brickout")
-#endif
-#ifndef MSG_INVADERS
- #define MSG_INVADERS _UxGT("Invaders")
-#endif
-#ifndef MSG_SNAKE
- #define MSG_SNAKE _UxGT("Sn4k3")
-#endif
-#ifndef MSG_MAZE
- #define MSG_MAZE _UxGT("Maze")
-#endif
+ #define MSG_1_LINE(A) A "\0" "\0"
+ #define MSG_2_LINE(A,B) A "\0" B "\0"
+ #define MSG_3_LINE(A,B,C) A "\0" B "\0" C
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- #ifndef MSG_ADVANCED_PAUSE_WAITING_1
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Press Button")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("to resume print")
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Press Button", "to resume print"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parking..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume..."));
+ #else
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parking..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Please wait..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click to heat"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heating..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejecting..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Loading..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purging..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click to finish"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Resuming..."));
#endif
- #ifndef MSG_PAUSE_PRINT_INIT_1
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parking...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_INIT_1
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wait for")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("filament change")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("to start")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_INSERT_1
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("and press button")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("to continue")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_HEAT_1
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Press button")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("to heat nozzle")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_HEATING_1
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nozzle heating")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Please wait...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wait for filament")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("to fully unload")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_LOAD_1
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wait for filament")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("to load to nozzle")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_PURGE_1
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for filament")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("purge to finish")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_CONT_PURGE_1
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Click to stop")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("purging filament")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_RESUME_1
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume...")
- #endif
-#else // LCD_HEIGHT < 4
- #ifndef MSG_ADVANCED_PAUSE_WAITING_1
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Click to continue")
- #endif
- #ifndef MSG_PAUSE_PRINT_INIT_1
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parking...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_INIT_1
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Please wait...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_INSERT_1
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert and Click")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_HEAT_1
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Click to heat")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_HEATING_1
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heating...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejecting...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_LOAD_1
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_PURGE_1
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_CONT_PURGE_1
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Click to finish")
- #endif
- #ifndef MSG_FILAMENT_CHANGE_RESUME_1
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
- #endif
-#endif // LCD_HEIGHT < 4
-
-#ifndef MSG_TMC_DRIVERS
- #define MSG_TMC_DRIVERS _UxGT("TMC Drivers")
-#endif
-#ifndef MSG_TMC_CURRENT
- #define MSG_TMC_CURRENT _UxGT("Driver Current")
-#endif
-#ifndef MSG_TMC_HYBRID_THRS
- #define MSG_TMC_HYBRID_THRS _UxGT("Hybrid Threshold")
-#endif
-#ifndef MSG_TMC_HOMING_THRS
- #define MSG_TMC_HOMING_THRS _UxGT("Sensorless Homing")
-#endif
-#ifndef MSG_TMC_STEPPING_MODE
- #define MSG_TMC_STEPPING_MODE _UxGT("Stepping Mode")
-#endif
-#ifndef MSG_TMC_STEALTH_ENABLED
- #define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop Enabled")
-#endif
-
-#ifndef MSG_SERVICE_RESET
- #define MSG_SERVICE_RESET _UxGT("Reset")
-#endif
-#ifndef MSG_SERVICE_IN
- #define MSG_SERVICE_IN _UxGT(" in:")
-#endif
-
-#ifndef MSG_BACKLASH
- #define MSG_BACKLASH _UxGT("Backlash")
-#endif
-#ifndef MSG_BACKLASH_CORRECTION
- #define MSG_BACKLASH_CORRECTION _UxGT("Correction")
-#endif
-#ifndef MSG_BACKLASH_SMOOTHING
- #define MSG_BACKLASH_SMOOTHING _UxGT("Smoothing")
-#endif
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("TMC Drivers");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Driver Current");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop Enabled");
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Reset");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" in:");
+ PROGMEM Language_Str MSG_BACKLASH = _UxGT("Backlash");
+ PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
+ PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
+ PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Correction");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing");
+}
diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h
index eabf24857e..4d0d8c40d4 100644
--- a/Marlin/src/lcd/language/language_es.h
+++ b/Marlin/src/lcd/language/language_es.h
@@ -29,536 +29,606 @@
*
*/
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT ("¡¿ªáéíóúÁÉÍÓÚ")
#define DISPLAY_CHARSET_ISO10646_1
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" lista")
-#define MSG_YES _UxGT("SI")
-#define MSG_NO _UxGT("NO")
-#define MSG_BACK _UxGT("Atrás")
-#define MSG_MEDIA_ABORTING _UxGT("Cancelando...")
-#define MSG_MEDIA_INSERTED _UxGT("SD/USB insertado")
-#define MSG_MEDIA_REMOVED _UxGT("SD/USB retirado")
-#define MSG_MEDIA_RELEASED _UxGT("SD/USB lanzado")
-#define MSG_MEDIA_WAITING _UxGT("Esperando al SD/USB")
-#define MSG_MEDIA_READ_ERROR _UxGT("Error lectura SD/USB")
-#define MSG_MEDIA_USB_REMOVED _UxGT("Disp. USB retirado")
-#define MSG_MEDIA_USB_FAILED _UxGT("Inicio USB fallido")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft Endstops")
-#define MSG_MAIN _UxGT("Menú principal")
-#define MSG_ADVANCED_SETTINGS _UxGT("Ajustes avanzados")
-#define MSG_CONFIGURATION _UxGT("Configuración")
-#define MSG_AUTOSTART _UxGT("Inicio automático")
-#define MSG_DISABLE_STEPPERS _UxGT("Apagar motores")
-#define MSG_DEBUG_MENU _UxGT("Menú depuración")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Prob. barra progreso")
-#define MSG_AUTO_HOME _UxGT("Llevar al origen")
-#define MSG_AUTO_HOME_X _UxGT("Origen X")
-#define MSG_AUTO_HOME_Y _UxGT("Origen Y")
-#define MSG_AUTO_HOME_Z _UxGT("Origen Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Auto alineado Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Origen XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Pulsar para comenzar")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Siguiente punto")
-#define MSG_LEVEL_BED_DONE _UxGT("¡Nivelación lista!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Compensación Altura")
-#define MSG_SET_HOME_OFFSETS _UxGT("Ajustar desfases")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Desfase aplicada")
-#define MSG_SET_ORIGIN _UxGT("Establecer origen")
-#define MSG_PREHEAT_1 _UxGT("Precalentar " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Todo")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Fin")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Cama")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Ajuste")
-#define MSG_PREHEAT_2 _UxGT("Precalentar" PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Todo")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Fin")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Cama")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Ajuste")
-#define MSG_PREHEAT_CUSTOM _UxGT("Precalen. Personali.")
-#define MSG_COOLDOWN _UxGT("Enfriar")
-#define MSG_LASER_MENU _UxGT("Control Láser")
-#define MSG_LASER_OFF _UxGT("Láser Apagado")
-#define MSG_LASER_ON _UxGT("Láser Encendido")
-#define MSG_LASER_POWER _UxGT("Potencia Láser")
-#define MSG_SPINDLE_MENU _UxGT("Control Mandrino")
-#define MSG_SPINDLE_OFF _UxGT("Mandrino Apagado")
-#define MSG_SPINDLE_ON _UxGT("Mandrino Encendido")
-#define MSG_SPINDLE_POWER _UxGT("Potencia Mandrino")
-#define MSG_SPINDLE_REVERSE _UxGT("Invertir giro")
-#define MSG_SWITCH_PS_ON _UxGT("Encender Fuente")
-#define MSG_SWITCH_PS_OFF _UxGT("Apagar Fuente")
-#define MSG_EXTRUDE _UxGT("Extruir")
-#define MSG_RETRACT _UxGT("Retraer")
-#define MSG_MOVE_AXIS _UxGT("Mover ejes")
-#define MSG_BED_LEVELING _UxGT("Nivelando Cama")
-#define MSG_LEVEL_BED _UxGT("Nivelar Cama")
-#define MSG_LEVEL_CORNERS _UxGT("Nivelar Esquinas")
-#define MSG_NEXT_CORNER _UxGT("Siguente Esquina")
-#define MSG_MESH_EDITOR _UxGT("Editor Mallado")
-#define MSG_EDIT_MESH _UxGT("Editar Mallado")
-#define MSG_EDITING_STOPPED _UxGT("Ed. Mallado parada")
-#define MSG_PROBING_MESH _UxGT("Sondear Punto")
-#define MSG_MESH_X _UxGT("Índice X")
-#define MSG_MESH_Y _UxGT("Índice Y")
-#define MSG_MESH_EDIT_Z _UxGT("Valor Z")
-#define MSG_USER_MENU _UxGT("Comandos Personaliz.")
-#define MSG_M48_TEST _UxGT("M48 Probar Sonda")
-#define MSG_M48_POINT _UxGT("M48 Punto")
-#define MSG_M48_DEVIATION _UxGT("Desviación")
-#define MSG_IDEX_MENU _UxGT("Modo IDEX")
-#define MSG_OFFSETS_MENU _UxGT("Desfase Boquillas")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Aparcado")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplicar")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Copia Reflejada")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Control Total")
-#define MSG_X_OFFSET _UxGT("2ª Boquilla X")
-#define MSG_Y_OFFSET _UxGT("2ª Boquilla Y")
-#define MSG_Z_OFFSET _UxGT("2ª Boquilla Z")
-#define MSG_UBL_DOING_G29 _UxGT("Hacer G29")
-#define MSG_UBL_TOOLS _UxGT("Herramientas UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("Nivel.Cama.Uni.(UBL)")
-#define MSG_LCD_TILTING_MESH _UxGT("Punto de inclinación")
-#define MSG_UBL_MANUAL_MESH _UxGT("Crear Mallado man.")
-#define MSG_UBL_BC_INSERT _UxGT("Colocar cuña y Medir")
-#define MSG_UBL_BC_INSERT2 _UxGT("Medir")
-#define MSG_UBL_BC_REMOVE _UxGT("Retirar y Medir Cama")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Mover al Siguente")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Activar UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Desactivar UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Temp. Cama")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT ("Hotend Temp")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Editar Mallado")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Edit. Mallado perso.")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Ajuste fino Mallado")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Term. edici. Mallado")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Crear Mallado Perso.")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Crear Mallado")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Crear Mallado (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Crear Mallado (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Crear Mallado Frío")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Ajustar alt. Mallado")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Cantidad de altura")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Validar Mallado")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Validar Mallado (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Validar Mallado (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Vali. Mallado perso.")
-#define MSG_G26_HEATING_BED _UxGT("G26 Calentando Cama")
-#define MSG_G26_HEATING_NOZZLE _UxGT("G26 Calent. Boquilla")
-#define MSG_G26_MANUAL_PRIME _UxGT("Imprimado manual...")
-#define MSG_G26_FIXED_LENGTH _UxGT("Impri. longit. fija")
-#define MSG_G26_PRIME_DONE _UxGT("Imprimación Lista")
-#define MSG_G26_CANCELED _UxGT("G26 Cancelado")
-#define MSG_G26_LEAVING _UxGT("Dejando G26")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Contin. Mallado cama")
-#define MSG_UBL_MESH_LEVELING _UxGT("Nivelando Mallado")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Nivelando 3Puntos")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Nivel. Mallado cuad.")
-#define MSG_UBL_MESH_LEVEL _UxGT("Nivel de Mallado")
-#define MSG_UBL_SIDE_POINTS _UxGT("Puntos Laterales")
-#define MSG_UBL_MAP_TYPE _UxGT("Tipo de mapa ")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Salida Mapa mallado")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Salida para el host")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Salida para CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Off Printer Backup")
-#define MSG_UBL_INFO_UBL _UxGT("Salida Info. UBL")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Cantidad de relleno")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Relleno manual")
-#define MSG_UBL_SMART_FILLIN _UxGT("Relleno inteligente")
-#define MSG_UBL_FILLIN_MESH _UxGT("Mallado de relleno")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Invalidar todo")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalidar proximos")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Ajustar Fino Todo")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Ajustar Fino proxi.")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Almacen de Mallado")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Huecos de memoria")
-#define MSG_UBL_LOAD_MESH _UxGT("Cargar Mallado cama")
-#define MSG_UBL_SAVE_MESH _UxGT("Guardar Mallado cama")
-#define MSG_MESH_LOADED _UxGT("Mallado %i Cargado")
-#define MSG_MESH_SAVED _UxGT("Mallado %i Guardado")
-#define MSG_UBL_NO_STORAGE _UxGT("Sin guardar")
-#define MSG_UBL_SAVE_ERROR _UxGT("Error: Guardar UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Error: Restaurar UBL")
-#define MSG_UBL_Z_OFFSET _UxGT("Desfase de Z: ")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Desfase de Z Parado")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("UBL Paso a Paso")
+namespace Language_es {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_LED_CONTROL _UxGT("Control LED")
-#define MSG_LEDS _UxGT("Luzes")
-#define MSG_LED_PRESETS _UxGT("Luz predefinida")
-#define MSG_SET_LEDS_RED _UxGT("Rojo")
-#define MSG_SET_LEDS_ORANGE _UxGT("Naranja")
-#define MSG_SET_LEDS_YELLOW _UxGT("Amarillo")
-#define MSG_SET_LEDS_GREEN _UxGT("Verde")
-#define MSG_SET_LEDS_BLUE _UxGT("Azul")
-#define MSG_SET_LEDS_INDIGO _UxGT("Índigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Violeta")
-#define MSG_SET_LEDS_WHITE _UxGT("Blanco")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Por defecto")
-#define MSG_CUSTOM_LEDS _UxGT("Luces personalizadas")
-#define MSG_INTENSITY_R _UxGT("Intensidad Rojo")
-#define MSG_INTENSITY_G _UxGT("Intensidad Verde")
-#define MSG_INTENSITY_B _UxGT("Intensidad Azul")
-#define MSG_INTENSITY_W _UxGT("Intensidad Blanco")
-#define MSG_LED_BRIGHTNESS _UxGT("Brillo")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Spanish");
-#define MSG_MOVING _UxGT("Moviendo...")
-#define MSG_FREE_XY _UxGT("Libre XY")
-#define MSG_MOVE_X _UxGT("Mover X")
-#define MSG_MOVE_Y _UxGT("Mover Y")
-#define MSG_MOVE_Z _UxGT("Mover Z")
-#define MSG_MOVE_E _UxGT("Extrusor")
-#define MSG_HOTEND_TOO_COLD _UxGT("Hotend muy frio")
-#define MSG_MOVE_Z_DIST _UxGT("Mover %smm")
-#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mover 1mm")
-#define MSG_MOVE_10MM _UxGT("Mover 10mm")
-#define MSG_SPEED _UxGT("Velocidad")
-#define MSG_BED_Z _UxGT("Cama Z")
-#define MSG_NOZZLE _UxGT("Boquilla")
-#define MSG_BED _UxGT("Cama")
-#define MSG_CHAMBER _UxGT("Recinto")
-#define MSG_FAN_SPEED _UxGT("Ventilador")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Vel. Ext. ventilador")
-#define MSG_FLOW _UxGT("Flujo")
-#define MSG_CONTROL _UxGT("Control")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Temperatura Auto.")
-#define MSG_LCD_ON _UxGT("Encender")
-#define MSG_LCD_OFF _UxGT("Apagar")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Seleccionar")
-#define MSG_ACC _UxGT("Aceleración")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-Jerk")
- #define MSG_VB_JERK _UxGT("Vb-Jerk")
- #define MSG_VC_JERK _UxGT("Vc-Jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-Jerk")
- #define MSG_VB_JERK _UxGT("Vy-Jerk")
- #define MSG_VC_JERK _UxGT("Vz-Jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-Jerk")
-#define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev")
-#define MSG_VELOCITY _UxGT("Velocidad")
-#define MSG_VMAX _UxGT("Vmax")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("Vel. viaje min")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Acel. max")
-#define MSG_A_RETRACT _UxGT("Acel. retrac.")
-#define MSG_A_TRAVEL _UxGT("Acel. Viaje")
-#define MSG_STEPS_PER_MM _UxGT("Pasos/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A pasos/mm")
- #define MSG_BSTEPS _UxGT("B pasos/mm")
- #define MSG_CSTEPS _UxGT("C pasos/mm")
-#else
- #define MSG_ASTEPS _UxGT("X pasos/mm")
- #define MSG_BSTEPS _UxGT("Y pasos/mm")
- #define MSG_CSTEPS _UxGT("Z pasos/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E pasos/mm")
-#define MSG_E0_STEPS _UxGT("E1 pasos/mm")
-#define MSG_E1_STEPS _UxGT("E2 pasos/mm")
-#define MSG_E2_STEPS _UxGT("E3 pasos/mm")
-#define MSG_E3_STEPS _UxGT("E4 pasos/mm")
-#define MSG_E4_STEPS _UxGT("E5 pasos/mm")
-#define MSG_E5_STEPS _UxGT("E6 pasos/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movimiento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E en mm") MSG_CUBED
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Descarga mm")
-#define MSG_FILAMENT_LOAD _UxGT("Carga mm")
-#define MSG_ADVANCE_K _UxGT("Avance K")
-#define MSG_CONTRAST _UxGT("Contraste LCD")
-#define MSG_STORE_EEPROM _UxGT("Guardar EEPROM")
-#define MSG_LOAD_EEPROM _UxGT("Cargar EEPROM")
-#define MSG_RESTORE_FAILSAFE _UxGT("Rest. fábrica")
-#define MSG_INIT_EEPROM _UxGT("Inicializar EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Actualizar SD/USB")
-#define MSG_RESET_PRINTER _UxGT("Resetear Impresora")
-#define MSG_REFRESH _UxGT("Recargar")
-#define MSG_WATCH _UxGT("Pantalla de Inf.")
-#define MSG_PREPARE _UxGT("Preparar")
-#define MSG_TUNE _UxGT("Ajustar")
-#define MSG_START_PRINT _UxGT("Iniciar impresión")
-#define MSG_BUTTON_NEXT _UxGT("Siguinte")
-#define MSG_BUTTON_INIT _UxGT("Iniciar")
-#define MSG_BUTTON_STOP _UxGT("Parar")
-#define MSG_BUTTON_PRINT _UxGT("Imprimir")
-#define MSG_BUTTON_RESET _UxGT("Reiniciar")
-#define MSG_BUTTON_CANCEL _UxGT("Cancelar")
-#define MSG_BUTTON_DONE _UxGT("Listo")
-#define MSG_PAUSE_PRINT _UxGT("Pausar impresión")
-#define MSG_RESUME_PRINT _UxGT("Reanudar impresión")
-#define MSG_STOP_PRINT _UxGT("Detener impresión")
-#define MSG_OUTAGE_RECOVERY _UxGT("Recuper. por interr.")
-#define MSG_MEDIA_MENU _UxGT("Imprim. desde SD/USB")
-#define MSG_NO_MEDIA _UxGT("SD/USB no presente")
-#define MSG_DWELL _UxGT("Reposo...")
-#define MSG_USERWAIT _UxGT("Pulsar para Reanudar")
-#define MSG_PRINT_PAUSED _UxGT("Impresión Pausada")
-#define MSG_PRINTING _UxGT("Imprimiendo...")
-#define MSG_PRINT_ABORTED _UxGT("Impresión cancelada")
-#define MSG_NO_MOVE _UxGT("Sin movimiento")
-#define MSG_KILLED _UxGT("MUERTA")
-#define MSG_STOPPED _UxGT("DETENIDA")
-#define MSG_CONTROL_RETRACT _UxGT("Retraer mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Interc. Retraer mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retraer V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Levantar mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Interc. DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("DesRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("Retracción Auto.")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Inter. longitud")
-#define MSG_FILAMENT_PURGE_LENGTH _UxGT("Purgar longitud")
-#define MSG_TOOL_CHANGE _UxGT("Cambiar Herramienta")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Aumentar Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Prime Speed")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Vel. de retracción")
-#define MSG_NOZZLE_STANDBY _UxGT("Colocar boquilla")
-#define MSG_FILAMENTCHANGE _UxGT("Cambiar filamento")
-#define MSG_FILAMENTLOAD _UxGT("Cargar filamento")
-#define MSG_FILAMENTUNLOAD _UxGT("Descargar filamento")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Descargar todo")
-#define MSG_INIT_MEDIA _UxGT("Iniciar SD/USB")
-#define MSG_CHANGE_MEDIA _UxGT("Cambiar SD/USB")
-#define MSG_RELEASE_MEDIA _UxGT("Lanzar SD/USB")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z fuera cama")
-#define MSG_SKEW_FACTOR _UxGT("Factor de desviación")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Auto-Prueba")
-#define MSG_BLTOUCH_RESET _UxGT("Cmd: Reiniciar")
-#define MSG_BLTOUCH_STOW _UxGT("Cmd: Bajar pistón")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Subir pistón")
-#define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: Modo Software")
-#define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: Modo 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: Modo OD")
-#define MSG_BLTOUCH_MODE_STORE _UxGT("Cmd: Modo almacenar")
-#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Poner BLTouch a 5V")
-#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Poner BLTouch a OD")
-#define MSG_BLTOUCH_MODE_ECHO _UxGT("Informe de drenaje")
-#define MSG_BLTOUCH_MODE_CHANGE _UxGT("PELIGRO: ¡Una mala configuración puede producir daños! ¿Proceder igualmente?")
-#define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#define MSG_TOUCHMI_INIT _UxGT("Iniciar TouchMI")
-#define MSG_TOUCHMI_ZTEST _UxGT("Test de desfase Z")
-#define MSG_TOUCHMI_SAVE _UxGT("Guardar")
-#define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("Subir TouchMI")
-#define MSG_MANUAL_DEPLOY _UxGT("Subir Sonda Z")
-#define MSG_MANUAL_STOW _UxGT("Bajar Sonda Z")
-#define MSG_HOME_FIRST _UxGT("Origen %s%s%s Primero")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Desfase Z")
-#define MSG_BABYSTEP_X _UxGT("Micropaso X")
-#define MSG_BABYSTEP_Y _UxGT("Micropaso Y")
-#define MSG_BABYSTEP_Z _UxGT("Micropaso Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Total")
-#define MSG_ENDSTOP_ABORT _UxGT("Cancelado - Endstop")
-#define MSG_HEATING_FAILED_LCD _UxGT("Calent. fallido")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Calent. cama fallido")
-#define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Calent. Cám. fallido")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: TEMP. REDUN.")
-#define MSG_THERMAL_RUNAWAY _UxGT("ESCAPE TERMICO")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("ESC. TERMICO CAMA")
-#define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("ESC. TERMICO CAMARA")
-#define MSG_ERR_MAXTEMP _UxGT("Err:TEMP. MÁX")
-#define MSG_ERR_MINTEMP _UxGT("Err:TEMP. MIN")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err:TEMP. MÁX CAMA")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err:TEMP. MIN CAMA")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err:TEMP. MÁX CÁMARA")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err:TEMP. MIN CÁMARA")
-#define MSG_ERR_Z_HOMING _UxGT("Origen XY Primero")
-#define MSG_HALTED _UxGT("IMPRESORA DETENIDA")
-#define MSG_PLEASE_RESET _UxGT("Por favor, reinicie")
-#define MSG_SHORT_DAY _UxGT("d") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Calentando...")
-#define MSG_COOLING _UxGT("Enfriando...")
-#define MSG_BED_HEATING _UxGT("Calentando Cama...")
-#define MSG_BED_COOLING _UxGT("Enfriando Cama...")
-#define MSG_CHAMBER_HEATING _UxGT("Calentando Cámara...")
-#define MSG_CHAMBER_COOLING _UxGT("Enfriando Cámara...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibración Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
-#define MSG_DELTA_SETTINGS _UxGT("Configuración Delta")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto Calibración")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Est. Altura Delta")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Ajustar Sonda Z")
-#define MSG_DELTA_DIAG_ROD _UxGT("Barra Diagonal")
-#define MSG_DELTA_HEIGHT _UxGT("Altura")
-#define MSG_DELTA_RADIUS _UxGT("Radio")
-#define MSG_INFO_MENU _UxGT("Acerca de Impresora")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info. Impresora")
-#define MSG_3POINT_LEVELING _UxGT("Nivelando 3puntos")
-#define MSG_LINEAR_LEVELING _UxGT("Nivelando Lineal")
-#define MSG_BILINEAR_LEVELING _UxGT("Nivelando Bilineal")
-#define MSG_UBL_LEVELING _UxGT("Nivelando UBL")
-#define MSG_MESH_LEVELING _UxGT("Nivelando en Mallado")
-#define MSG_INFO_STATS_MENU _UxGT("Estadísticas Imp.")
-#define MSG_INFO_BOARD_MENU _UxGT("Info. Controlador")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistores")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrusores")
-#define MSG_INFO_BAUDRATE _UxGT("Baudios")
-#define MSG_INFO_PROTOCOL _UxGT("Protocolo")
-#define MSG_CASE_LIGHT _UxGT("Luz cabina")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Brillo cabina")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" lista");
+ PROGMEM Language_Str MSG_YES = _UxGT("SI");
+ PROGMEM Language_Str MSG_NO = _UxGT("NO");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Atrás");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Cancelando...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("SD/USB insertado");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("SD/USB retirado");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("SD/USB lanzado");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Esperando al SD/USB");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Error lectura SD/USB");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("Disp. USB retirado");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Inicio USB fallido");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menú principal");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Ajustes avanzados");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Configuración");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Inicio automático");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Apagar motores");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menú depuración");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Prob. barra progreso");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Llevar al origen");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Origen X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Origen Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Origen Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto alineado Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Pulsar para comenzar");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Siguiente punto");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("¡Nivelación lista!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Compensación Altura");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ajustar desfases");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicada");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Establecer origen");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Precalentar ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Fin ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Todo");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Cama");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Ajuste");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Precalentar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Precalentar ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Fin ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Todo");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Cama");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Precalentar ") PREHEAT_2_LABEL _UxGT(" Ajuste");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Precalen. Personali.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Enfriar");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Control Láser");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Láser Apagado");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Láser Encendido");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Potencia Láser");
+ PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Control Mandrino");
+ PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Mandrino Apagado");
+ PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Mandrino Encendido");
+ PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Potencia Mandrino");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Invertir giro");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Encender Fuente");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Apagar Fuente");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extruir");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retraer");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mover ejes");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Nivelando Cama");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Nivelar Cama");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Nivelar Esquinas");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Siguente Esquina");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Editor Mallado");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Editar Mallado");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Ed. Mallado parada");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Sondear Punto");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Índice X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Índice Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Valor Z");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Comandos Personaliz.");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Probar Sonda");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Punto");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Desviación");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Modo IDEX");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Desfase Boquillas");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Aparcado");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicar");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Reflejada");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2ª Boquilla X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2ª Boquilla Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2ª Boquilla Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Hacer G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Herramientas UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Nivel.Cama.Uni.(UBL)");
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Crear Mallado man.");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Colocar cuña y Medir");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Medir");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Retirar y Medir Cama");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Mover al Siguente");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Activar UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Desactivar UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Cama");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT ("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Editar Mallado");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit. Mallado perso.");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste fino Mallado");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Term. edici. Mallado");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Mallado Perso.");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Mallado");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Crear Mallado (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Crear Mallado (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Mallado Frío");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar alt. Mallado");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Cantidad de altura");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Mallado");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Validar Mallado (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Validar Mallado (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Vali. Mallado perso.");
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 Calentando Cama");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Calent. Boquilla");
+ PROGMEM Language_Str MSG_G26_MANUAL_PRIME = _UxGT("Imprimado manual...");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Impri. longit. fija");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Imprimación Lista");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 Cancelado");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("Dejando G26");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Contin. Mallado cama");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Nivelando Mallado");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelando 3Puntos");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivel. Mallado cuad.");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Nivel de Mallado");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Puntos Laterales");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Tipo de mapa ");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Salida Mapa mallado");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Salida para el host");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salida para CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Off Printer Backup");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Salida Info. UBL");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Cantidad de relleno");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Relleno manual");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Relleno inteligente");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Mallado de relleno");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar todo");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar proximos");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajustar Fino Todo");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Fino proxi.");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Almacen de Mallado");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Huecos de memoria");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Cargar Mallado cama");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Guardar Mallado cama");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Mallado %i Cargado");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Mallado %i Guardado");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Sin guardar");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Error: Guardar UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Error: Restaurar UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Desfase de Z: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Desfase de Z Parado");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Paso a Paso");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crear Mallado Frío");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Relleno inteligente");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Validar Mallado");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajustar Fino Todo");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Validar Mallado");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajustar Fino Todo");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Guardar Mallado cama");
-#define MSG_EXPECTED_PRINTER _UxGT("Impresora incorrecta")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Control LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Luzes");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Luz predefinida");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Rojo");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Naranja");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Amarillo");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Verde");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Azul");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Índigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Violeta");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Blanco");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Por defecto");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Luces personalizadas");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intensidad Rojo");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intensidad Verde");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intensidad Azul");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intensidad Blanco");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Brillo");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Cont. de impresión")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Tiempo total de imp.")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Impresión más larga")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total Extruido")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Impresiones")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Más larga")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extruido")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Temp. Mínima")
-#define MSG_INFO_MAX_TEMP _UxGT("Temp. Máxima")
-#define MSG_INFO_PSU _UxGT("Fuente alimentación")
-#define MSG_DRIVE_STRENGTH _UxGT("Fuerza de empuje")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_ERROR_TMC _UxGT("ERROR CONEX. TMC")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Escribe DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("IMPRESIÓN PAUSADA")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("CARGAR FILAMENTO")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("DESCARGAR FILAMENTO")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPC. REINICIO:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purgar más")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continuar imp.")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Boquilla: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Sensor de sección")
-#define MSG_RUNOUT_DISTANCE_MM _UxGT("Dist de secc. mm")
-#define MSG_ERR_HOMING_FAILED _UxGT("Ir a origen Fallado")
-#define MSG_ERR_PROBING_FAILED _UxGT("Sondeo Fallado")
-#define MSG_M600_TOO_COLD _UxGT("M600: Muy Frio")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Moviendo...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Libre XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mover X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mover Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mover Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Hotend muy frio");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mover %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mover 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mover 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mover 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocidad");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Cama Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Boquilla");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Boquilla ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Boquilla ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Boquilla ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Boquilla ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Boquilla ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Boquilla ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Cama");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Recinto");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Ventilador");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Ventilador 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Ventilador 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Ventilador 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Ext. ventilador");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Vel. Ext. ventilador ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Vel. Ext. ventilador ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Vel. Ext. ventilador ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flujo");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flujo ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flujo ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flujo ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flujo ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flujo ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flujo ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Temperatura Auto.");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Encender");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Apagar");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Seleccionar");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Seleccionar ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Seleccionar ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Seleccionar ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Seleccionar ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Seleccionar ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Seleccionar ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Aceleración");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Velocidad");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vel. viaje min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accel");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Acel. max") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Acel. max") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Acel. max") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Acel. max") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Acel. max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Acel. max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Acel. max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Acel. max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Acel. max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Acel. max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Acel. retrac.");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Acel. Viaje");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Pasos/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E pasos/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movimiento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Descarga mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Carga mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Avance K");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("Avance K ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("Avance K ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("Avance K ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("Avance K ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("Avance K ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("Avance K ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Guardar EEPROM");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar EEPROM");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Rest. fábrica");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Actualizar SD/USB");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetear Impresora");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Pantalla de Inf.");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Ajustar");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Iniciar impresión");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Siguinte");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Iniciar");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Parar");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Imprimir");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Reiniciar");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Cancelar");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Listo");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausar impresión");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Reanudar impresión");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Detener impresión");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Recuper. por interr.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Imprim. desde SD/USB");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("SD/USB no presente");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Reposo...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Pulsar para Reanudar");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Impresión Pausada");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Imprimiendo...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impresión cancelada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sin movimiento");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("MUERTA");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("DETENIDA");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retraer mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Interc. Retraer mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retraer V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Levantar mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Interc. DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Retracción Auto.");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Inter. longitud");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purgar longitud");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Cambiar Herramienta");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Aumentar Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Prime Speed");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Vel. de retracción");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Colocar boquilla");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Cambiar filamento");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Cambiar filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Cambiar filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Cambiar filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Cambiar filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Cambiar filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Cambiar filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Cargar filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Cargar filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Cargar filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Cargar filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Cargar filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Cargar filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Descargar filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Descargar filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Descargar filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Descargar filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Descargar filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Descargar filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Descargar todo");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Iniciar SD/USB");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Cambiar SD/USB");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Lanzar SD/USB");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera cama");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Factor de desviación");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Cmd: Auto-Prueba");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Cmd: Reiniciar");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Cmd: Bajar pistón");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Cmd: Subir pistón");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("Cmd: Modo Software");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("Cmd: Modo 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("Cmd: Modo OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Cmd: Modo almacenar");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Poner BLTouch a 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Poner BLTouch a OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Informe de drenaje");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("PELIGRO: ¡Una mala configuración puede producir daños! ¿Proceder igualmente?");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Iniciar TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Test de desfase Z");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Guardar");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Subir TouchMI");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Subir Sonda Z");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Bajar Sonda Z");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Origen %s%s%s Primero");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Micropaso X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Micropaso Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Micropaso Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Total");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Calent. fallido");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Calent. cama fallido");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_CHAMBER = _UxGT("Calent. Cám. fallido");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP. REDUN.");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ESCAPE TERMICO");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("ESC. TERMICO CAMA");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("ESC. TERMICO CAMARA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err:TEMP. MÁX");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err:TEMP. MIN");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err:TEMP. MÁX CAMA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err:TEMP. MIN CAMA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Err:TEMP. MÁX CÁMARA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Err:TEMP. MIN CÁMARA");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Origen XY Primero");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("IMPRESORA DETENIDA");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Por favor, reinicie");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Calentando...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Enfriando...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Calentando Cama...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Enfriando Cama...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Calentando Cámara...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Enfriando Cámara...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibración Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Configuración Delta");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibración");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Est. Altura Delta");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Ajustar Sonda Z");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonal");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Altura");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Radio");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Acerca de Impresora");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info. Impresora");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Nivelando 3puntos");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Nivelando Lineal");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Nivelando Bilineal");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Nivelando UBL");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Nivelando en Mallado");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Estadísticas Imp.");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info. Controlador");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrusores");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baudios");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocolo");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Luz cabina");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo cabina");
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("CAMBIAR FILAMENTO")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("ELIJE FILAMENTO")
-#define MSG_MMU2_MENU _UxGT("MMU")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("¡Actu. MMU Firmware!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU Necesita Cuidado")
-#define MSG_MMU2_RESUME _UxGT("Continuar imp.")
-#define MSG_MMU2_RESUMING _UxGT("Resumiendo...")
-#define MSG_MMU2_LOAD_FILAMENT _UxGT("Cargar Filamento")
-#define MSG_MMU2_LOAD_ALL _UxGT("Cargar Todo")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Cargar hasta boqui.")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Expulsar Filamento")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Expulsar Filamento 1")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Expulsar Filamento 2")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Expulsar Filamento 3")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Expulsar Filamento 4")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Expulsar Filamento 5")
-#define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Descargar Filamento")
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Cargando Fil. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Expulsando Fil. ...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Descargando Fil....")
-#define MSG_MMU2_ALL _UxGT("Todo")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filamento 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filamento 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filamento 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filamento 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filamento 5")
-#define MSG_MMU2_RESET _UxGT("Reiniciar MMU")
-#define MSG_MMU2_RESETTING _UxGT("Reiniciando MMU...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Retirar, y pulsar")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impresora incorrecta");
-#define MSG_MIX _UxGT("Mezcla")
-#define MSG_MIX_COMPONENT _UxGT("Componente")
-#define MSG_MIXER _UxGT("Miezclador")
-#define MSG_GRADIENT _UxGT("Degradado")
-#define MSG_FULL_GRADIENT _UxGT("Degradado Total")
-#define MSG_TOGGLE_MIX _UxGT("Mezcla Conmutada")
-#define MSG_CYCLE_MIX _UxGT("Mezcla Cíclica")
-#define MSG_GRADIENT_MIX _UxGT("Mezcla de Degradado")
-#define MSG_REVERSE_GRADIENT _UxGT("Degradado inverso")
-#define MSG_ACTIVE_VTOOL _UxGT("Activar Herr.V")
-#define MSG_START_VTOOL _UxGT("Inicio Herr.V")
-#define MSG_END_VTOOL _UxGT(" Fin Herr.V")
-#define MSG_GRADIENT_ALIAS _UxGT("Alias Herr.V")
-#define MSG_RESET_VTOOLS _UxGT("Reiniciar Herr.V")
-#define MSG_COMMIT_VTOOL _UxGT("Cometer mezc. Herr.V")
-#define MSG_VTOOLS_RESET _UxGT("Herr.V reiniciados")
-#define MSG_START_Z _UxGT("Inicio Z")
-#define MSG_END_Z _UxGT(" Fin Z")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Cont. de impresión");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tiempo total de imp.");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Impresión más larga");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruido");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Impresiones");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Más larga");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temp. Mínima");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temp. Máxima");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Fuente alimentación");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Fuerza de empuje");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("ERROR CONEX. TMC");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Escribe DAC EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIAR FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESIÓN PAUSADA");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARGAR FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARGAR FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPC. REINICIO:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar más");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar imp.");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Boquilla: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Sensor de sección");
+ PROGMEM Language_Str MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist de secc. mm");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Ir a origen Fallado");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Sondeo Fallado");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Muy Frio");
-#define MSG_GAMES _UxGT("Games")
-#define MSG_BRICKOUT _UxGT("Brickout")
-#define MSG_INVADERS _UxGT("Invaders")
-#define MSG_SNAKE _UxGT("Sn4k3")
-#define MSG_MAZE _UxGT("Maze")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ELIJE FILAMENTO");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("¡Actu. MMU Firmware!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Necesita Cuidado");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Continuar imp.");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Resumiendo...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Cargar Filamento");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Cargar Todo");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Cargar hasta boqui.");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Expulsar Filamento");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Expulsar Filamento 1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Expulsar Filamento 2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Expulsar Filamento 3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Expulsar Filamento 4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Expulsar Filamento 5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Descargar Filamento");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Cargando Fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Expulsando Fil. ...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Descargando Fil....");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Todo");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filamento 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filamento 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filamento 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filamento 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filamento 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Reiniciar MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Reiniciando MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Retirar, y pulsar");
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Pulsar el botón para")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("reanudar impresión")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Aparcando...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperando para")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("iniciar el cambio")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("de filamento")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserte el filamento")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("y pulse el botón")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("para continuar...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Pulse el botón para")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("calentar la boquilla")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Calentando boquilla")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Espere por favor...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Espere para")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("liberar el filamento")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Espere para")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("purgar el filamento")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Pulse para finalizar")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("la purga de filamen.")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperando impresora")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("para reanudar...")
-#else
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Pulse para continuar")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Aparcando...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Por Favor espere...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserte y Pulse")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Pulse para Calentar")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Calentando...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Liberando...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Cargando...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purgando...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Pulse para finalizar")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reanudando...")
-#endif
+ PROGMEM Language_Str MSG_MIX = _UxGT("Mezcla");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Componente 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Componente 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Componente 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Componente 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Componente 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Componente 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Miezclador");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Degradado");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Degradado Total");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Mezcla Conmutada");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Mezcla Cíclica");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Mezcla de Degradado");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Degradado inverso");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Activar Herr.V");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Inicio Herr.V");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT(" Fin Herr.V");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias Herr.V");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Reiniciar Herr.V");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Cometer mezc. Herr.V");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("Herr.V reiniciados");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Inicio Z:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT(" Fin Z:");
-#define MSG_TMC_DRIVERS _UxGT("Controladores TMC")
-#define MSG_TMC_CURRENT _UxGT("Amperaje Controlador")
-#define MSG_TMC_HYBRID_THRS _UxGT("Límite Hibrido")
-#define MSG_TMC_HOMING_THRS _UxGT("Origen sin sensores")
-#define MSG_TMC_STEPPING_MODE _UxGT("Modo de pasos")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop Habilit.")
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Games");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Maze");
-#define MSG_SERVICE_RESET _UxGT("Reiniciar")
-#define MSG_SERVICE_IN _UxGT(" dentro:")
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Pulsar el botón para", "reanudar impresión"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Aparcando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando para", "iniciar el cambio", "de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserte el filamento", "y pulse el botón", "para continuar..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pulse el botón para", "calentar la boquilla"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Calentando boquilla", "Espere por favor..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Espere para", "liberar el filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere para", "purgar el filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Pulse para finalizar", "la purga de filamen."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impresora", "para reanudar..."));
+ #else
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Pulse para continuar"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Aparcando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Por Favor espere..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserte y Pulse"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Pulse para Calentar"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Calentando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Liberando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Pulse para finalizar"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reanudando..."));
+ #endif
-#define MSG_BACKLASH _UxGT("Backlash")
-#define MSG_BACKLASH_CORRECTION _UxGT("Correction")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Suavizado")
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Controladores TMC");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Amperaje Controlador");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Límite Hibrido");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Origen sin sensores");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Modo de pasos");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop Habilit.");
+
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Reiniciar");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" dentro:");
+
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Correction");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Suavizado");
+}
diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h
index 6ebddc124e..d9c8e2c220 100644
--- a/Marlin/src/lcd/language/language_eu.h
+++ b/Marlin/src/lcd/language/language_eu.h
@@ -32,358 +32,362 @@
#define DISPLAY_CHARSET_ISO10646_1
#define NOT_EXTENDED_ISO10646_1_5X7
-#define WELCOME_MSG MACHINE_NAME _UxGT(" prest.")
-#define MSG_BACK _UxGT("Atzera")
-#define MSG_MEDIA_INSERTED _UxGT("Txartela sartuta")
-#define MSG_MEDIA_REMOVED _UxGT("Txartela kenduta")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Menu nagusia")
-#define MSG_AUTOSTART _UxGT("Auto hasiera")
-#define MSG_DISABLE_STEPPERS _UxGT("Itzali motoreak")
-#define MSG_DEBUG_MENU _UxGT("Arazketa Menua")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Prog. Barra Proba")
-#define MSG_AUTO_HOME _UxGT("Hasierara joan")
-#define MSG_AUTO_HOME_X _UxGT("X jatorrira")
-#define MSG_AUTO_HOME_Y _UxGT("Y jatorrira")
-#define MSG_AUTO_HOME_Z _UxGT("Z jatorrira")
-#define MSG_LEVEL_BED_HOMING _UxGT("XYZ hasieraratzen")
-#define MSG_LEVEL_BED_WAITING _UxGT("Klik egin hasteko")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Hurrengo Puntua")
-#define MSG_LEVEL_BED_DONE _UxGT("Berdintzea eginda")
-//#define MSG_Z_FADE_HEIGHT _UxGT("Fade Height")
-#define MSG_SET_HOME_OFFSETS _UxGT("Etxe. offset eza.")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsetak ezarrita")
-#define MSG_SET_ORIGIN _UxGT("Hasiera ipini")
-#define MSG_PREHEAT_1 _UxGT("Berotu " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Guztia")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Amaia")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Ohea")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Ezarp.")
-#define MSG_PREHEAT_2 _UxGT("Berotu " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_1 _UxGT(" Guztia")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Amaia")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_1 _UxGT(" Ohea")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_1 _UxGT(" Ezarp.")
-#define MSG_COOLDOWN _UxGT("Hoztu")
-#define MSG_SWITCH_PS_ON _UxGT("Energia piztu")
-#define MSG_SWITCH_PS_OFF _UxGT("Energia itzali")
-#define MSG_EXTRUDE _UxGT("Estruitu")
-#define MSG_RETRACT _UxGT("Atzera eragin")
-#define MSG_MOVE_AXIS _UxGT("Ardatzak mugitu")
-#define MSG_BED_LEVELING _UxGT("Ohe berdinketa")
-#define MSG_LEVEL_BED _UxGT("Ohea berdindu")
-#define MSG_LEVEL_CORNERS _UxGT("Ertzak berdindu")
-#define MSG_NEXT_CORNER _UxGT("Hurrengo ertza")
-#define MSG_EDIT_MESH _UxGT("Sarea editatu")
-//#define MSG_EDITING_STOPPED _UxGT("Mesh Editing Stopped")
-//#define MSG_USER_MENU _UxGT("Custom Commands")
+namespace Language_eu {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_UBL_DOING_G29 _UxGT("G29 exekutatzen")
-#define MSG_UBL_TOOLS _UxGT("UBL Tresnak")
-#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-#define MSG_UBL_MANUAL_MESH _UxGT("Sarea eskuz sortu")
-//#define MSG_UBL_BC_INSERT _UxGT("Place shim & measure")
-#define MSG_UBL_BC_INSERT2 _UxGT("Neurtu")
-//#define MSG_UBL_BC_REMOVE _UxGT("Remove & measure bed")
-//#define MSG_UBL_MOVING_TO_NEXT _UxGT("Moving to next")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("UBL aktibatu")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("UBL desaktibatu")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Ohearen tenperatura")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Mutur beroaren tenp.")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Sarea editatu")
-//#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Edit Custom Mesh")
-//#define MSG_UBL_FINE_TUNE_MESH _UxGT("Fine Tuning Mesh")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Sarea editatzea eginda")
-//#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Build Custom Mesh")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Sarea sortu")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT(PREHEAT_1_LABEL " sarea sortu")
-#define MSG_UBL_BUILD_MESH_M2 _UxGT(PREHEAT_2_LABEL " sarea sortu")
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Sare hotza sortu")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Sarearen altuera doitu")
-//#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Height Amount")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Sarea balioetsi")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT(PREHEAT_1_LABEL " sarea balioetsi")
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT(PREHEAT_2_LABEL " sarea balioetsi")
-//#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Validate Custom Mesh")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Ohe sarea balioetsi")
-#define MSG_UBL_MESH_LEVELING _UxGT("Sare berdinketa")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3 puntuko berdinketa")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Lauki-sare berdinketa")
-#define MSG_UBL_MESH_LEVEL _UxGT("Sarea berdindu")
-//#define MSG_UBL_SIDE_POINTS _UxGT("Side Points")
-#define MSG_UBL_MAP_TYPE _UxGT("Mapa mota")
-//#define MSG_UBL_OUTPUT_MAP _UxGT("Output Mesh Map")
-//#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Output for Host")
-//#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Output for CSV")
-//#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Off Printer Backup")
-//#define MSG_UBL_INFO_UBL _UxGT("Output UBL Info")
-//#define MSG_UBL_FILLIN_AMOUNT _UxGT("Fill-in Amount")
-//#define MSG_UBL_MANUAL_FILLIN _UxGT("Manual Fill-in")
-//#define MSG_UBL_SMART_FILLIN _UxGT("Smart Fill-in")
-//#define MSG_UBL_FILLIN_MESH _UxGT("Fill-in Mesh")
-//#define MSG_UBL_INVALIDATE_ALL _UxGT("Invalidate All")
-//#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalidate Closest")
-//#define MSG_UBL_FINE_TUNE_ALL _UxGT("Fine Tune All")
-//#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Fine Tune Closest")
-//#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Mesh Storage")
-//#define MSG_UBL_STORAGE_SLOT _UxGT("Memory Slot")
-//#define MSG_UBL_LOAD_MESH _UxGT("Load Bed Mesh")
-//#define MSG_UBL_SAVE_MESH _UxGT("Save Bed Mesh")
-//#define MSG_MESH_LOADED _UxGT("Mesh %i loaded")
-//#define MSG_MESH_SAVED _UxGT("Mesh %i saved")
-//#define MSG_UBL_NO_STORAGE _UxGT("No storage")
-//#define MSG_UBL_SAVE_ERROR _UxGT("Err: UBL Save")
-//#define MSG_UBL_RESTORE_ERROR _UxGT("Err: UBL Restore")
-//#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Offset Stopped")
-//#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Step-By-Step UBL")
-#define MSG_LED_CONTROL _UxGT("LED ezarpenak")
-#define MSG_LEDS _UxGT("Argiak")
-#define MSG_LED_PRESETS _UxGT("Argi aurrehautaketak")
-#define MSG_SET_LEDS_RED _UxGT("Gorria")
-#define MSG_SET_LEDS_ORANGE _UxGT("Laranja")
-#define MSG_SET_LEDS_YELLOW _UxGT("Horia")
-#define MSG_SET_LEDS_GREEN _UxGT("Berdea")
-#define MSG_SET_LEDS_BLUE _UxGT("Urdina")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Bioleta")
-#define MSG_SET_LEDS_WHITE _UxGT("Zuria")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Lehenetsia")
-#define MSG_CUSTOM_LEDS _UxGT("Argi pertsonalizatuak")
-#define MSG_INTENSITY_R _UxGT("Intentsitate gorria")
-#define MSG_INTENSITY_G _UxGT("Intentsitate berdea")
-#define MSG_INTENSITY_B _UxGT("Intentsitate urdina")
-#define MSG_INTENSITY_W _UxGT("Intentsitate zuria")
-#define MSG_LED_BRIGHTNESS _UxGT("Distira")
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Basque-Euskera");
-#define MSG_MOVING _UxGT("Mugitzen...")
-#define MSG_FREE_XY _UxGT("Askatu XY")
-#define MSG_MOVE_X _UxGT("Mugitu X")
-#define MSG_MOVE_Y _UxGT("Mugitu Y")
-#define MSG_MOVE_Z _UxGT("Mugitu Z")
-#define MSG_MOVE_E _UxGT("Estrusorea")
-#define MSG_MOVE_Z_DIST _UxGT("Mugitu %smm")
-#define MSG_MOVE_01MM _UxGT("Mugitu 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mugitu 1mm")
-#define MSG_MOVE_10MM _UxGT("Mugitu 10mm")
-#define MSG_SPEED _UxGT("Abiadura")
-#define MSG_BED_Z _UxGT("Z Ohea")
-#define MSG_NOZZLE _UxGT("Pita")
-#define MSG_BED _UxGT("Ohea")
-#define MSG_FAN_SPEED _UxGT("Haizagailu abiadura")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Haiz.gehig. abiadura")
-#define MSG_FLOW _UxGT("Fluxua")
-#define MSG_CONTROL _UxGT("Kontrola")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
-#define MSG_AUTOTEMP _UxGT("Auto tenperatura")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Aukeratu")
-#define MSG_ACC _UxGT("Azelerazioa")
-#define MSG_JERK _UxGT("Astindua")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-astindua")
- #define MSG_VB_JERK _UxGT("Vb-astindua")
- #define MSG_VC_JERK _UxGT("Vc-astindua")
-#else
- #define MSG_VA_JERK _UxGT("Vx-astindua")
- #define MSG_VB_JERK _UxGT("Vy-astindua")
- #define MSG_VC_JERK _UxGT("Vz-astindua")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-astindua")
-//#define MSG_VELOCITY _UxGT("Velocity")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VBidaia min")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retrakt")
-#define MSG_A_TRAVEL _UxGT("A-bidaia")
-#define MSG_STEPS_PER_MM _UxGT("Pausoak/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A pausoak/mm")
- #define MSG_BSTEPS _UxGT("B pausoak/mm")
- #define MSG_CSTEPS _UxGT("C pausoak/mm")
-#else
- #define MSG_ASTEPS _UxGT("X pausoak/mm")
- #define MSG_BSTEPS _UxGT("Y pausoak/mm")
- #define MSG_CSTEPS _UxGT("Z pausoak/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E pausoak/mm")
-#define MSG_E0_STEPS _UxGT("E1 pausoak/mm")
-#define MSG_E1_STEPS _UxGT("E2 pausoak/mm")
-#define MSG_E2_STEPS _UxGT("E3 pausoak/mm")
-#define MSG_E3_STEPS _UxGT("E4 pausoak/mm")
-#define MSG_E4_STEPS _UxGT("E5 pausoak/mm")
-#define MSG_E5_STEPS _UxGT("E6 pausoak/mm")
-#define MSG_TEMPERATURE _UxGT("Tenperatura")
-#define MSG_MOTION _UxGT("Mugimendua")
-#define MSG_FILAMENT _UxGT("Harizpia")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E mm3-tan")
-#define MSG_FILAMENT_DIAM _UxGT("Hariz. Dia.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Deskargatu mm")
-#define MSG_FILAMENT_LOAD _UxGT("Kargatu mm")
-#define MSG_ADVANCE_K _UxGT("K Aurrerapena")
-#define MSG_CONTRAST _UxGT("LCD kontrastea")
-#define MSG_STORE_EEPROM _UxGT("Gorde memoria")
-#define MSG_LOAD_EEPROM _UxGT("Kargatu memoria")
-#define MSG_RESTORE_FAILSAFE _UxGT("Larri. berriz.")
-#define MSG_INIT_EEPROM _UxGT("EEPROM-a hasieratu")
-#define MSG_REFRESH _UxGT("Berriz kargatu")
-#define MSG_WATCH _UxGT("Pantaila info")
-#define MSG_PREPARE _UxGT("Prestatu")
-#define MSG_TUNE _UxGT("Doitu")
-#define MSG_PAUSE_PRINT _UxGT("Pausatu inprimak.")
-#define MSG_RESUME_PRINT _UxGT("Jarraitu inprima.")
-#define MSG_STOP_PRINT _UxGT("Gelditu inprima.")
-#define MSG_MEDIA_MENU _UxGT("SD-tik inprimatu")
-#define MSG_NO_MEDIA _UxGT("Ez dago SD-rik")
-#define MSG_DWELL _UxGT("Lo egin...")
-#define MSG_USERWAIT _UxGT("Aginduak zain...")
-#define MSG_PRINT_PAUSED _UxGT("Inprim. geldi.")
-#define MSG_PRINT_ABORTED _UxGT("Inprim. deusezta.")
-#define MSG_NO_MOVE _UxGT("Mugimendu gabe.")
-#define MSG_KILLED _UxGT("AKABATUTA. ")
-#define MSG_STOPPED _UxGT("GELDITUTA. ")
-#define MSG_CONTROL_RETRACT _UxGT("Atzera egin mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Atzera mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Atzera egin V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Igo mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Atzera egin mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Swap Atzera mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Atzera egin V")
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("Atzera egin")
-#define MSG_FILAMENTCHANGE _UxGT("Aldatu harizpia")
-#define MSG_FILAMENTLOAD _UxGT("Harizpia kargatu")
-#define MSG_FILAMENTUNLOAD _UxGT("Harizpia deskargatu")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Erabat deskargatu")
-#define MSG_INIT_MEDIA _UxGT("Hasieratu SD-a")
-#define MSG_CHANGE_MEDIA _UxGT("Aldatu txartela")
-#define MSG_ZPROBE_OUT _UxGT("Z zunda kanpora")
-#define MSG_SKEW_FACTOR _UxGT("Okertze faktorea")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch AutoProba")
-#define MSG_BLTOUCH_RESET _UxGT("BLTouch berrabia.")
-#define MSG_BLTOUCH_DEPLOY _UxGT("BLTouch jaitsi/luzatu")
-#define MSG_BLTOUCH_STOW _UxGT("BLTouch igo/jaso")
-#define MSG_HOME_FIRST _UxGT("Etxera %s%s%s lehenengo")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Konpentsatu")
-#define MSG_BABYSTEP_X _UxGT("Mikro-urratsa X")
-#define MSG_BABYSTEP_Y _UxGT("Mikro-urratsa Y")
-#define MSG_BABYSTEP_Z _UxGT("Mikro-urratsa Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop deusezta.")
-#define MSG_HEATING_FAILED_LCD _UxGT("Err: Beroketa")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: Tenperatura")
-#define MSG_THERMAL_RUNAWAY _UxGT("TENP. KONTROL EZA")
-#define MSG_ERR_MAXTEMP _UxGT("Err: Tenp Maximoa")
-#define MSG_ERR_MINTEMP _UxGT("Err: Tenp Minimoa")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err: Ohe Tenp Max")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err: Ohe Tenp Min")
-#define MSG_ERR_Z_HOMING _UxGT("Etxera XY lehenengo")
-#define MSG_HALTED _UxGT("INPRIMA. GELDIRIK")
-#define MSG_PLEASE_RESET _UxGT("Berrabia. Mesedez")
-#define MSG_SHORT_DAY _UxGT("d") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Berotzen...")
-#define MSG_BED_HEATING _UxGT("Ohea Berotzen...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibraketa")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibratu X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibratu Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibratu Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibratu Zentrua")
-#define MSG_DELTA_SETTINGS _UxGT("Delta ezarpenak")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto Kalibraketa")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Delta Alt. Ezar.")
-#define MSG_DELTA_DIAG_ROD _UxGT("Barra diagonala")
-#define MSG_DELTA_HEIGHT _UxGT("Altuera")
-#define MSG_DELTA_RADIUS _UxGT("Erradioa")
-#define MSG_INFO_MENU _UxGT("Inprimagailu Inf.")
-#define MSG_INFO_PRINTER_MENU _UxGT("Inprimagailu Inf.")
-#define MSG_3POINT_LEVELING _UxGT("3 puntuko berdinketa")
-#define MSG_LINEAR_LEVELING _UxGT("Berdinketa lineala")
-#define MSG_BILINEAR_LEVELING _UxGT("Berdinketa bilinearra")
-#define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling")
-#define MSG_MESH_LEVELING _UxGT("Sare berdinketa")
-#define MSG_INFO_STATS_MENU _UxGT("Inprima. estatis.")
-#define MSG_INFO_BOARD_MENU _UxGT("Txartelaren Info.")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistoreak")
-#define MSG_INFO_EXTRUDERS _UxGT("Estrusoreak")
-#define MSG_INFO_BAUDRATE _UxGT("Baudioak")
-#define MSG_INFO_PROTOCOL _UxGT("Protokoloa")
-#define MSG_CASE_LIGHT _UxGT("Kabina Argia")
-//#define MSG_CASE_LIGHT_BRIGHTNESS
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Inprim. Zenbaketa")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Burututa")
- #define MSG_INFO_PRINT_TIME _UxGT("Inprim. denbora")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Imprimatze luzeena")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Estruituta guztira")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Inprimatze")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Burututa")
- #define MSG_INFO_PRINT_TIME _UxGT("Guztira")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Luzeena")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Estrusio")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Tenp. Minimoa")
-#define MSG_INFO_MAX_TEMP _UxGT("Tenp. Maximoa")
-#define MSG_INFO_PSU _UxGT("Elikadura-iturria")
-#define MSG_DRIVE_STRENGTH _UxGT("Driver-aren potentzia")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Idatzi DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("HARIZPIA ALDATU")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("HARIZPIA KARGATU")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("HARIZPIA DESKARGATU")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ALDAKETA AUKERAK:")
-//#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purge more")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Inprima. jarraitu")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Pita: ")
-#define MSG_ERR_HOMING_FAILED _UxGT("Hasi. huts egin du")
-#define MSG_ERR_PROBING_FAILED _UxGT("Neurketak huts egin du")
-#define MSG_M600_TOO_COLD _UxGT("M600: hotzegi")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" prest.");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Atzera");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Txartela sartuta");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Txartela kenduta");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu nagusia");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Auto hasiera");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Itzali motoreak");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Arazketa Menua");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Prog. Barra Proba");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Hasierara joan");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("X jatorrira");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Y jatorrira");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Z jatorrira");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("XYZ hasieraratzen");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Klik egin hasteko");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Hurrengo Puntua");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Berdintzea eginda");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Etxe. offset eza.");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsetak ezarrita");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Hasiera ipini");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Berotu ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Berotu ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp.");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Berotu ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Berotu ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Amaia ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Guztia");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ohea");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Berotu ") PREHEAT_2_LABEL _UxGT(" Ezarp.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Hoztu");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Energia piztu");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Energia itzali");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Estruitu");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Atzera eragin");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Ardatzak mugitu");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Ohe berdinketa");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Ohea berdindu");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Ertzak berdindu");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Hurrengo ertza");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Sarea editatu");
-#define MSG_EXPECTED_PRINTER _UxGT("Inprimagailu okerra")
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("G29 exekutatzen");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL Tresnak");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Sarea eskuz sortu");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Neurtu");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("UBL aktibatu");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL desaktibatu");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Ohearen tenperatura");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Mutur beroaren tenp.");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Sarea editatu");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Sarea editatzea eginda");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Sarea sortu");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = PREHEAT_1_LABEL _UxGT(" sarea sortu");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = PREHEAT_2_LABEL _UxGT(" sarea sortu");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Sare hotza sortu");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Sarearen altuera doitu");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sarea balioetsi");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = PREHEAT_1_LABEL _UxGT(" sarea balioetsi");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = PREHEAT_2_LABEL _UxGT(" sarea balioetsi");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Ohe sarea balioetsi");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Sare berdinketa");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3 puntuko berdinketa");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Lauki-sare berdinketa");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Sarea berdindu");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Mapa mota");
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("LED ezarpenak");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Argiak");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Argi aurrehautaketak");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Gorria");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Laranja");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Horia");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Berdea");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Urdina");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Bioleta");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Zuria");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Lehenetsia");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Argi pertsonalizatuak");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intentsitate gorria");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intentsitate berdea");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intentsitate urdina");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intentsitate zuria");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Distira");
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- //#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wait for start")
- //#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("of the filament")
- //#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("change")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament unload")
- //#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert filament")
- //#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("and press button")
- //#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("to continue...")
- //#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Press button to")
- //#define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("heat nozzle.")
- //#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heating nozzle")
- //#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Please wait...")
- //#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
- //#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("filament purge")
- //#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
- //#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume")
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Mesedez, itxaron...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Deskargatzen...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Sartu eta click egin")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Berotzen...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Kargatzen...")
- //#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
- //#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Mugitzen...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Askatu XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mugitu X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mugitu Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mugitu Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Estrusorea");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Estrusorea ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Estrusorea ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Estrusorea ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Estrusorea ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Estrusorea ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Estrusorea ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mugitu %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mugitu 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mugitu 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mugitu 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Abiadura");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Z Ohea");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Pita");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Pita ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Pita ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Pita ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Pita ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Pita ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Pita ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Ohea");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Haizagailu abiadura");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Haizagailu abiadura 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Haizagailu abiadura 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Haizagailu abiadura 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Haiz.gehig. abiadura");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Haiz.gehig. abiadura 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Haiz.gehig. abiadura 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Haiz.gehig. abiadura 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxua");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Fluxua ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Fluxua ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Fluxua ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Fluxua ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Fluxua ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Fluxua ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrola");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto tenperatura");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Aukeratu");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Aukeratu ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Aukeratu ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Aukeratu ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Aukeratu ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Aukeratu ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Aukeratu ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Azelerazioa");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Astindua");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-astindua");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-astindua");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-astindua");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-astindua");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VBidaia min");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-retrakt");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-bidaia");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Pausoak/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E pausoak/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" pausoak/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Tenperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Mugimendua");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Harizpia");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E mm3-tan");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Hariz. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Hariz. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Hariz. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Hariz. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Hariz. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Hariz. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Hariz. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Deskargatu mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Kargatu mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K Aurrerapena");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K Aurrerapena ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K Aurrerapena ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K Aurrerapena ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K Aurrerapena ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K Aurrerapena ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K Aurrerapena ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrastea");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gorde memoria");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Kargatu memoria");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Larri. berriz.");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM-a hasieratu");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Pantaila info");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Prestatu");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Doitu");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausatu inprimak.");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Jarraitu inprima.");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Gelditu inprima.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("SD-tik inprimatu");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Ez dago SD-rik");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Lo egin...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Aginduak zain...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Inprim. geldi.");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Inprim. deusezta.");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Mugimendu gabe.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("AKABATUTA. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("GELDITUTA. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Atzera egin mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Atzera mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Atzera egin V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Igo mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Atzera egin mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap Atzera mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Atzera egin V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Atzera egin");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Aldatu harizpia");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Aldatu harizpia ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Aldatu harizpia ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Aldatu harizpia ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Aldatu harizpia ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Aldatu harizpia ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Aldatu harizpia ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Harizpia kargatu ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Harizpia kargatu ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Harizpia kargatu ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Harizpia kargatu ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Harizpia kargatu ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Harizpia kargatu ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Harizpia deskargatu ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Harizpia deskargatu ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Harizpia deskargatu ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Harizpia deskargatu ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Harizpia deskargatu ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Harizpia deskargatu ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Erabat deskargatu");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Hasieratu SD-a");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Aldatu txartela");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z zunda kanpora");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Okertze faktorea");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch AutoProba");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("BLTouch berrabia.");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch jaitsi/luzatu");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("BLTouch igo/jaso");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Etxera %s%s%s lehenengo");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z Konpentsatu");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Mikro-urratsa X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Mikro-urratsa Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Mikro-urratsa Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Endstop deusezta.");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Err: Beroketa");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: Tenperatura");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("TENP. KONTROL EZA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: Tenp Maximoa");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: Tenp Minimoa");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err: Ohe Tenp Max");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err: Ohe Tenp Min");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Etxera XY lehenengo");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("INPRIMA. GELDIRIK");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Berrabia. Mesedez");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Berotzen...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Ohea Berotzen...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibraketa");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibratu X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibratu Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibratu Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibratu Zentrua");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta ezarpenak");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Kalibraketa");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Delta Alt. Ezar.");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Barra diagonala");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Altuera");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Erradioa");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Inprimagailu Inf.");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Inprimagailu Inf.");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3 puntuko berdinketa");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Berdinketa lineala");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Berdinketa bilinearra");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Sare berdinketa");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Inprima. estatis.");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Txartelaren Info.");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistoreak");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Estrusoreak");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baudioak");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokoloa");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Kabina Argia");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS
+ = ;
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Inprim. Zenbaketa");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Inprim. denbora");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Imprimatze luzeena");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Estruituta guztira");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Inprimatze");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Guztira");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Luzeena");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Estrusio");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Tenp. Minimoa");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Tenp. Maximoa");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Elikadura-iturria");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Driver-aren potentzia");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Idatzi DAC EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("HARIZPIA ALDATU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("HARIZPIA KARGATU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("HARIZPIA DESKARGATU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ALDAKETA AUKERAK:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Inprima. jarraitu");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Pita: ");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Hasi. huts egin du");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Neurketak huts egin du");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: hotzegi");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Inprimagailu okerra");
+
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Mesedez, itxaron..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Deskargatzen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sartu eta click egin"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Berotzen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Kargatzen..."));
+}
diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h
index 917496e200..0b6385c213 100644
--- a/Marlin/src/lcd/language/language_fi.h
+++ b/Marlin/src/lcd/language/language_fi.h
@@ -30,142 +30,136 @@
*/
#define DISPLAY_CHARSET_ISO10646_1
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" valmis.")
-#define MSG_MEDIA_INSERTED _UxGT("Kortti asetettu")
-#define MSG_MEDIA_REMOVED _UxGT("Kortti poistettu")
-#define MSG_MAIN _UxGT("Palaa")
-#define MSG_AUTOSTART _UxGT("Automaatti")
-#define MSG_DISABLE_STEPPERS _UxGT("Vapauta moottorit")
-#define MSG_AUTO_HOME _UxGT("Aja referenssiin")
-#define MSG_LEVEL_BED_HOMING _UxGT("Homing XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Click to Begin")
-#define MSG_LEVEL_BED_DONE _UxGT("Leveling Done!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Set home offsets")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets applied")
-#define MSG_SET_ORIGIN _UxGT("Aseta origo")
-#define MSG_PREHEAT_1 _UxGT("Esilämmitä " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Esilämmitä " PREHEAT_1_LABEL " ")
-#define MSG_PREHEAT_1_ALL _UxGT("Esilä. " PREHEAT_1_LABEL " Kaikki")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Esilä. " PREHEAT_1_LABEL " Alusta")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Esilämm. " PREHEAT_1_LABEL " konf")
-#define MSG_PREHEAT_2 _UxGT("Esilämmitä " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Esilämmitä " PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL _UxGT("Esilä. " PREHEAT_2_LABEL " Kaikki")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Esilä. " PREHEAT_2_LABEL " Alusta")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Esilämm. " PREHEAT_2_LABEL " konf")
-#define MSG_COOLDOWN _UxGT("Jäähdytä")
-#define MSG_SWITCH_PS_ON _UxGT("Virta päälle")
-#define MSG_SWITCH_PS_OFF _UxGT("Virta pois")
-#define MSG_EXTRUDE _UxGT("Pursota")
-#define MSG_RETRACT _UxGT("Vedä takaisin")
-#define MSG_MOVE_AXIS _UxGT("Liikuta akseleita")
-#define MSG_MOVE_X _UxGT("Liikuta X")
-#define MSG_MOVE_Y _UxGT("Liikuta Y")
-#define MSG_MOVE_Z _UxGT("Liikuta Z")
-#define MSG_MOVE_E _UxGT("Extruder")
-#define MSG_MOVE_Z_DIST _UxGT("Liikuta %smm")
-#define MSG_MOVE_01MM _UxGT("Liikuta 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Liikuta 1mm")
-#define MSG_MOVE_10MM _UxGT("Liikuta 10mm")
-#define MSG_SPEED _UxGT("Nopeus")
-#define MSG_NOZZLE _UxGT("Suutin")
-#define MSG_BED _UxGT("Alusta")
-#define MSG_FAN_SPEED _UxGT("Tuul. nopeus")
-#define MSG_FLOW _UxGT("Virtaus")
-#define MSG_CONTROL _UxGT("Kontrolli")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Kerr")
-#define MSG_AUTOTEMP _UxGT("Autotemp")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_ACC _UxGT("Kiihtyv")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VLiike min")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-peruuta")
-#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Asteps/mm")
- #define MSG_BSTEPS _UxGT("Bsteps/mm")
- #define MSG_CSTEPS _UxGT("Csteps/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xsteps/mm")
- #define MSG_BSTEPS _UxGT("Ysteps/mm")
- #define MSG_CSTEPS _UxGT("Zsteps/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Esteps/mm")
-#define MSG_E0_STEPS _UxGT("E1steps/mm")
-#define MSG_E1_STEPS _UxGT("E2steps/mm")
-#define MSG_E2_STEPS _UxGT("E3steps/mm")
-#define MSG_E3_STEPS _UxGT("E4steps/mm")
-#define MSG_E4_STEPS _UxGT("E5steps/mm")
-#define MSG_E5_STEPS _UxGT("E6steps/mm")
-#define MSG_TEMPERATURE _UxGT("Lämpötila")
-#define MSG_MOTION _UxGT("Liike")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm³")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_CONTRAST _UxGT("LCD kontrasti")
-#define MSG_STORE_EEPROM _UxGT("Tallenna muistiin")
-#define MSG_LOAD_EEPROM _UxGT("Lataa muistista")
-#define MSG_RESTORE_FAILSAFE _UxGT("Palauta oletus")
-#define MSG_REFRESH _UxGT("Päivitä")
-#define MSG_WATCH _UxGT("Seuraa")
-#define MSG_PREPARE _UxGT("Valmistele")
-#define MSG_TUNE _UxGT("Säädä")
-#define MSG_PAUSE_PRINT _UxGT("Keskeytä tulostus")
-#define MSG_RESUME_PRINT _UxGT("Jatka tulostusta")
-#define MSG_STOP_PRINT _UxGT("Pysäytä tulostus")
-#define MSG_MEDIA_MENU _UxGT("Korttivalikko")
-#define MSG_NO_MEDIA _UxGT("Ei korttia")
-#define MSG_DWELL _UxGT("Nukkumassa...")
-#define MSG_USERWAIT _UxGT("Odotet. valintaa")
-#define MSG_PRINT_ABORTED _UxGT("Print aborted")
-#define MSG_NO_MOVE _UxGT("Ei liiketta.")
-#define MSG_KILLED _UxGT("KILLED. ")
-#define MSG_STOPPED _UxGT("STOPPED. ")
-#define MSG_CONTROL_RETRACT _UxGT("Vedä mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Va. Vedä mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Vedä V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Va. UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_AUTORETRACT _UxGT("AutoVeto.")
-#define MSG_FILAMENTCHANGE _UxGT("Change filament")
-#define MSG_INIT_MEDIA _UxGT("Init. SD-Card")
-#define MSG_CHANGE_MEDIA _UxGT("Change SD-Card")
-#define MSG_ZPROBE_OUT _UxGT("Z probe out. bed")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibrointi")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibroi X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibroi Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibroi Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibroi Center")
+namespace Language_fi {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_EXPECTED_PRINTER _UxGT("Väärä tulostin")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Finnish");
+
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" valmis.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Kortti asetettu");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Kortti poistettu");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Palaa");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Automaatti");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Vapauta moottorit");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Aja referenssiin");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Aseta origo");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Esilämmitä ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT("Suutin ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Kaikki");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Esilä. ") PREHEAT_2_LABEL _UxGT(" Alusta");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Esilämm. ") PREHEAT_2_LABEL _UxGT(" konf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Jäähdytä");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Virta päälle");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Virta pois");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Pursota");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Vedä takaisin");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Liikuta akseleita");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Liikuta X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Liikuta Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Liikuta Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extruder");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extruder ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extruder ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extruder ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extruder ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extruder ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extruder ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Liikuta %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Liikuta 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Liikuta 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Liikuta 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Nopeus");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Suutin");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Suutin ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Suutin ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Suutin ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Suutin ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Suutin ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Suutin ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Alusta");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Tuul. nopeus");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Tuul. nopeus 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Tuul. nopeus 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Tuul. nopeus 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Virtaus");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Virtaus ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Virtaus ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Virtaus ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Virtaus ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Virtaus ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Virtaus ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrolli");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Kerr");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autotemp");
+ PROGMEM Language_Str MSG_ACC = _UxGT("Kiihtyv");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VLiike min");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-peruuta");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Lämpötila");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Liike");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm³");
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD kontrasti");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Tallenna muistiin");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Lataa muistista");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Palauta oletus");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Seuraa");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Valmistele");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Säädä");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Keskeytä tulostus");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Jatka tulostusta");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Pysäytä tulostus");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Korttivalikko");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Ei korttia");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Nukkumassa...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Odotet. valintaa");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Ei liiketta.");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Vedä mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Va. Vedä mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Vedä V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Va. UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoVeto.");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrointi");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibroi X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibroi Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibroi Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibroi Center");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Väärä tulostin");
+}
diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h
index e23c55de94..a770fe46b8 100644
--- a/Marlin/src/lcd/language/language_fr.h
+++ b/Marlin/src/lcd/language/language_fr.h
@@ -30,533 +30,586 @@
*/
#define DISPLAY_CHARSET_ISO10646_1
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" prête.")
-#define MSG_YES _UxGT("Oui")
-#define MSG_NO _UxGT("Non")
-#define MSG_BACK _UxGT("Retour")
-#define MSG_MEDIA_ABORTING _UxGT("Annulation...")
-#define MSG_MEDIA_INSERTED _UxGT("Média inséré")
-#define MSG_MEDIA_REMOVED _UxGT("Média retiré")
-#define MSG_MEDIA_RELEASED _UxGT("Média libéré")
-#define MSG_MEDIA_WAITING _UxGT("Attente média")
-#define MSG_MEDIA_READ_ERROR _UxGT("Err lecture média")
-#define MSG_MEDIA_USB_REMOVED _UxGT("USB débranché")
-#define MSG_MEDIA_USB_FAILED _UxGT("Erreur média USB")
-#define MSG_LCD_ENDSTOPS _UxGT("Butées")
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Butées SW")
-#define MSG_MAIN _UxGT("Menu principal")
-#define MSG_ADVANCED_SETTINGS _UxGT("Config. avancée")
-#define MSG_CONFIGURATION _UxGT("Configuration")
-#define MSG_AUTOSTART _UxGT("Exéc. auto#.gcode")
-#define MSG_DISABLE_STEPPERS _UxGT("Arrêter moteurs")
-#define MSG_DEBUG_MENU _UxGT("Menu debug")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Test barre progress.")
-#define MSG_AUTO_HOME _UxGT("Origine auto")
-#define MSG_AUTO_HOME_X _UxGT("Origine X auto")
-#define MSG_AUTO_HOME_Y _UxGT("Origine Y auto")
-#define MSG_AUTO_HOME_Z _UxGT("Origine Z auto")
-#define MSG_AUTO_Z_ALIGN _UxGT("Align. Z auto")
-#define MSG_LEVEL_BED_HOMING _UxGT("Origine XYZ...")
-#define MSG_LEVEL_BED_WAITING _UxGT("Clic pour commencer")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Point suivant")
-#define MSG_LEVEL_BED_DONE _UxGT("Mise à niveau OK!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Hauteur lissée")
-#define MSG_SET_HOME_OFFSETS _UxGT("Régl. décal origine")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Décalages appliqués")
-#define MSG_SET_ORIGIN _UxGT("Régler origine")
-#define MSG_PREHEAT_1 _UxGT("Préchauffage " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Préchauff. " PREHEAT_1_LABEL " ")
-#define MSG_PREHEAT_1_ALL _UxGT("Préch. " PREHEAT_1_LABEL " Tout")
-#define MSG_PREHEAT_1_END _UxGT("Préch. " PREHEAT_1_LABEL " buse")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Préch. " PREHEAT_1_LABEL " lit")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Régler préch. " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_2 _UxGT("Préchauffage " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Préchauff. " PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL _UxGT("Préch. " PREHEAT_2_LABEL " Tout")
-#define MSG_PREHEAT_2_END _UxGT("Préch. " PREHEAT_2_LABEL " buse")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Préch. " PREHEAT_2_LABEL " lit")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Régler préch. " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_CUSTOM _UxGT("Préchauffage perso")
-#define MSG_COOLDOWN _UxGT("Refroidir")
-#define MSG_LASER_MENU _UxGT("Contrôle Laser")
-#define MSG_LASER_OFF _UxGT("Laser Off")
-#define MSG_LASER_ON _UxGT("Laser On")
-#define MSG_LASER_POWER _UxGT("Puissance")
-#define MSG_SPINDLE_REVERSE _UxGT("Inverser broches")
-#define MSG_SWITCH_PS_ON _UxGT("Allumer alim.")
-#define MSG_SWITCH_PS_OFF _UxGT("Eteindre alim.")
-#define MSG_EXTRUDE _UxGT("Extrusion")
-#define MSG_RETRACT _UxGT("Retrait")
-#define MSG_MOVE_AXIS _UxGT("Déplacer un axe")
-#define MSG_BED_LEVELING _UxGT("Régler Niv. lit")
-#define MSG_LEVEL_BED _UxGT("Niveau du lit")
-#define MSG_LEVEL_CORNERS _UxGT("Niveau des coins")
-#define MSG_NEXT_CORNER _UxGT("Coin suivant")
-#define MSG_MESH_EDITOR _UxGT("Edition Maillage")
-#define MSG_EDIT_MESH _UxGT("Modifier maille")
-#define MSG_EDITING_STOPPED _UxGT("Arrêt édit. maillage")
-#define MSG_PROBING_MESH _UxGT("Mesure point")
-#define MSG_MESH_X _UxGT("Index X")
-#define MSG_MESH_Y _UxGT("Index Y")
-#define MSG_MESH_EDIT_Z _UxGT("Valeur Z")
-#define MSG_USER_MENU _UxGT("Commandes perso")
+namespace Language_fr {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_LCD_TILTING_MESH _UxGT("Touche point")
-#define MSG_M48_TEST _UxGT("Ecart sonde Z M48")
-#define MSG_M48_DEVIATION _UxGT("Ecart")
-#define MSG_M48_POINT _UxGT("Point M48")
-#define MSG_IDEX_MENU _UxGT("Mode IDEX")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplication")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Copie miroir")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Contrôle complet")
-#define MSG_OFFSETS_MENU _UxGT("Offsets Outil")
-#define MSG_X_OFFSET _UxGT("Buse 2 X")
-#define MSG_Y_OFFSET _UxGT("Buse 2 Y")
-#define MSG_Z_OFFSET _UxGT("Buse 2 Z")
-#define MSG_G26_HEATING_BED _UxGT("G26 Chauffe lit")
-#define MSG_G26_HEATING_NOZZLE _UxGT("G26 Chauffe buse")
-#define MSG_G26_MANUAL_PRIME _UxGT("Amorce manuelle...")
-#define MSG_G26_FIXED_LENGTH _UxGT("Amorce longueur fixe")
-#define MSG_G26_PRIME_DONE _UxGT("Amorce terminée")
-#define MSG_G26_CANCELED _UxGT("G26 annulé")
-#define MSG_G26_LEAVING _UxGT("Sortie G26")
-#define MSG_UBL_DOING_G29 _UxGT("G29 en cours")
-#define MSG_UBL_TOOLS _UxGT("Outils UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("Niveau lit unifié")
-#define MSG_UBL_MANUAL_MESH _UxGT("Maillage manuel")
-#define MSG_UBL_BC_INSERT _UxGT("Poser câle & mesurer")
-#define MSG_UBL_BC_INSERT2 _UxGT("Mesure")
-#define MSG_UBL_BC_REMOVE _UxGT("ôter et mesurer lit")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Aller au suivant")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Activer l'UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Désactiver l'UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Température lit")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Température buse")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Editer maille")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Editer maille perso")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Réglage fin maille")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Terminer maille")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Créer maille perso")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Créer maille")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Créer maille " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Créer maille " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Créer maille froide")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Ajuster haut. maille")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Hauteur")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Valider maille")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Valider maille " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Valider maille " PREHEAT_2_LABEL)
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Valider maille perso")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Continuer maille")
-#define MSG_UBL_MESH_LEVELING _UxGT("Niveau par maille")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Niveau à 3 points")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Niveau grille")
-#define MSG_UBL_MESH_LEVEL _UxGT("Maille de niveau")
-#define MSG_UBL_SIDE_POINTS _UxGT("Point latéral")
-#define MSG_UBL_MAP_TYPE _UxGT("Type de carte")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Voir maille")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Voir pour hôte")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Voir pour CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Voir pour sauveg.")
-#define MSG_UBL_INFO_UBL _UxGT("Voir info UBL")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Taux de remplissage")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Remplissage manuel")
-#define MSG_UBL_SMART_FILLIN _UxGT("Remplissage auto")
-#define MSG_UBL_FILLIN_MESH _UxGT("Maille remplissage")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Tout annuler")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Annuler le plus près")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Réglage fin (tous)")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Réglage fin (proche)")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Stockage maille")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Slot mémoire")
-#define MSG_UBL_LOAD_MESH _UxGT("Charger maille")
-#define MSG_UBL_SAVE_MESH _UxGT("Sauver maille")
-#define MSG_MESH_LOADED _UxGT("Maille %i chargée")
-#define MSG_MESH_SAVED _UxGT("Maille %i enreg.")
-#define MSG_UBL_NO_STORAGE _UxGT("Pas de mémoire")
-#define MSG_UBL_SAVE_ERROR _UxGT("Err: Enreg. UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Err: Ouvrir UBL")
-#define MSG_UBL_Z_OFFSET _UxGT("Z-Offset: ")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Décal. Z arrêté")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("UBL Pas à pas")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Français");
-#define MSG_LED_CONTROL _UxGT("Contrôle LED")
-#define MSG_LEDS _UxGT("Lumière")
-#define MSG_LED_PRESETS _UxGT("Préregl. LED")
-#define MSG_SET_LEDS_RED _UxGT("Rouge")
-#define MSG_SET_LEDS_ORANGE _UxGT("Orange")
-#define MSG_SET_LEDS_YELLOW _UxGT("Jaune")
-#define MSG_SET_LEDS_GREEN _UxGT("Vert")
-#define MSG_SET_LEDS_BLUE _UxGT("Bleu")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Violet")
-#define MSG_SET_LEDS_WHITE _UxGT("Blanc")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Defaut")
-#define MSG_CUSTOM_LEDS _UxGT("LEDs perso.")
-#define MSG_INTENSITY_R _UxGT("Intensité rouge")
-#define MSG_INTENSITY_G _UxGT("Intensité vert")
-#define MSG_INTENSITY_B _UxGT("Intensité bleu")
-#define MSG_INTENSITY_W _UxGT("Intensité blanc")
-#define MSG_LED_BRIGHTNESS _UxGT("Luminosité")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" prête.");
+ PROGMEM Language_Str MSG_YES = _UxGT("Oui");
+ PROGMEM Language_Str MSG_NO = _UxGT("Non");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Retour");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Annulation...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Média inséré");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Média retiré");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("Média libéré");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Attente média");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Err lecture média");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("USB débranché");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Erreur média USB");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Butées");
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butées SW");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu principal");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Config. avancée");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Configuration");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Exéc. auto#.gcode");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Arrêter moteurs");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menu debug");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress.");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Origine auto");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Origine X auto");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Origine Y auto");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Origine Z auto");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ...");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Mise à niveau OK!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissée");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Régl. décal origine");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Décalages appliqués");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Régler origine");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Préchauffage ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Régler préch. ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Préchauffage ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Préchauffage ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" buse ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" Tout");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Préch. ") PREHEAT_2_LABEL _UxGT(" lit");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Régler préch. ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Préchauffage perso");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Refroidir");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Contrôle Laser");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Puissance");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Inverser broches");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Allumer alim.");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim.");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrusion");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retrait");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Déplacer un axe");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Régler Niv. lit");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Niveau du lit");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Niveau des coins");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Coin suivant");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Edition Maillage");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Modifier maille");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Arrêt édit. maillage");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Mesure point");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Index X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Index Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Valeur Z");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Commandes perso");
-#define MSG_MOVING _UxGT("Déplacement...")
-#define MSG_FREE_XY _UxGT("Débloquer XY")
-#define MSG_MOVE_X _UxGT("Déplacer X")
-#define MSG_MOVE_Y _UxGT("Déplacer Y")
-#define MSG_MOVE_Z _UxGT("Déplacer Z")
-#define MSG_MOVE_E _UxGT("Extrudeur")
-#define MSG_HOTEND_TOO_COLD _UxGT("Buse trop froide")
-#define MSG_MOVE_Z_DIST _UxGT("Déplacer %smm")
-#define MSG_MOVE_01MM _UxGT("Déplacer 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Déplacer 1mm")
-#define MSG_MOVE_10MM _UxGT("Déplacer 10mm")
-#define MSG_SPEED _UxGT("Vitesse")
-#define MSG_BED_Z _UxGT("Lit Z")
-#define MSG_NOZZLE _UxGT("Buse")
-#define MSG_BED _UxGT("Lit")
-#define MSG_CHAMBER _UxGT("Caisson")
-#define MSG_FAN_SPEED _UxGT("Vitesse ventil.")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Extra V ventil.")
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Touche point");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("Ecart sonde Z M48");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Ecart");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("Point M48");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Mode IDEX");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Contrôle complet");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Offsets Outil");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("Buse 2 X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("Buse 2 Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("Buse 2 Z");
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 Chauffe lit");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 Chauffe buse");
+ PROGMEM Language_Str MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle...");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Amorce terminée");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 annulé");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("Sortie G26");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("G29 en cours");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Outils UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Niveau lit unifié");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Poser câle & mesurer");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Mesure");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("ôter et mesurer lit");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Activer l'UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Désactiver l'UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Température lit");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Température lit");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Température buse");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Température buse");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Editer maille");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Editer maille perso");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Réglage fin maille");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer maille");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Créer maille perso");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Créer maille");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Créer maille ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Créer maille ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Créer maille froide");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. maille");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valider maille");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Valider maille ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Valider maille ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valider maille perso");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Continuer maille");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Niveau par maille");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau à 3 points");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau grille");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Maille de niveau");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Point latéral");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Type de carte");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Voir maille");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Voir pour hôte");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Voir pour CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Voir pour sauveg.");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Voir info UBL");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Taux de remplissage");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Maille remplissage");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Tout annuler");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Annuler le plus près");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Réglage fin (tous)");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Réglage fin (proche)");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage maille");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Slot mémoire");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Charger maille");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Sauver maille");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Maille %i chargée");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Maille %i enreg.");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Pas de mémoire");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Décal. Z arrêté");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Pas à pas");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Créer maille froide");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Remplissage auto");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valider maille");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Réglage fin (tous)");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valider maille");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Réglage fin (tous)");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Sauver maille");
-#define MSG_FLOW _UxGT("Flux")
-#define MSG_CONTROL _UxGT("Contrôler")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Facteur")
-#define MSG_AUTOTEMP _UxGT("Temp. Auto.")
-#define MSG_LCD_ON _UxGT("Marche")
-#define MSG_LCD_OFF _UxGT("Arrêt")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Sélectionner")
-#define MSG_ACC _UxGT("Accélération")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va jerk")
- #define MSG_VB_JERK _UxGT("Vb jerk")
- #define MSG_VC_JERK _UxGT("Vc jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx jerk")
- #define MSG_VB_JERK _UxGT("Vy jerk")
- #define MSG_VC_JERK _UxGT("Vz jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve jerk")
-#define MSG_VELOCITY _UxGT("Vélocité")
-#define MSG_JUNCTION_DEVIATION _UxGT("Déviat. jonct.")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin ")
-#define MSG_VTRAV_MIN _UxGT("V dépl. min")
-#define MSG_ACCELERATION _UxGT("Accélération")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A retrait")
-#define MSG_A_TRAVEL _UxGT("A dépl.")
-#define MSG_STEPS_PER_MM _UxGT("Pas/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A pas/mm")
- #define MSG_BSTEPS _UxGT("B pas/mm")
- #define MSG_CSTEPS _UxGT("C pas/mm")
-#else
- #define MSG_ASTEPS _UxGT("X pas/mm")
- #define MSG_BSTEPS _UxGT("Y pas/mm")
- #define MSG_CSTEPS _UxGT("Z pas/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E pas/mm")
-#define MSG_E0_STEPS _UxGT("E1 pas/mm")
-#define MSG_E1_STEPS _UxGT("E2 pas/mm")
-#define MSG_E2_STEPS _UxGT("E3 pas/mm")
-#define MSG_E3_STEPS _UxGT("E4 pas/mm")
-#define MSG_E4_STEPS _UxGT("E5 pas/mm")
-#define MSG_E5_STEPS _UxGT("E6 pas/mm")
-#define MSG_TEMPERATURE _UxGT("Température")
-#define MSG_MOTION _UxGT("Mouvement")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E en mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Diamètre fil.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Retrait mm")
-#define MSG_FILAMENT_LOAD _UxGT("Charger mm")
-#define MSG_ADVANCE_K _UxGT("Avance K")
-#define MSG_CONTRAST _UxGT("Contraste LCD")
-#define MSG_STORE_EEPROM _UxGT("Enregistrer config.")
-#define MSG_LOAD_EEPROM _UxGT("Charger config.")
-#define MSG_RESTORE_FAILSAFE _UxGT("Restaurer défauts")
-#define MSG_INIT_EEPROM _UxGT("Initialiser EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("MaJ Firmware SD")
-#define MSG_RESET_PRINTER _UxGT("RaZ imprimante")
-#define MSG_REFRESH _UxGT("Actualiser")
-#define MSG_WATCH _UxGT("Surveiller")
-#define MSG_PREPARE _UxGT("Préparer")
-#define MSG_TUNE _UxGT("Régler")
-#define MSG_START_PRINT _UxGT("Démarrer impression")
-#define MSG_BUTTON_NEXT _UxGT("Suivant")
-#define MSG_BUTTON_INIT _UxGT("Init.")
-#define MSG_BUTTON_STOP _UxGT("Stop")
-#define MSG_BUTTON_PRINT _UxGT("Imprimer")
-#define MSG_BUTTON_RESET _UxGT("Reset")
-#define MSG_BUTTON_CANCEL _UxGT("Annuler")
-#define MSG_BUTTON_DONE _UxGT("Terminé")
-#define MSG_PAUSE_PRINT _UxGT("Pause impression")
-#define MSG_RESUME_PRINT _UxGT("Reprendre impr.")
-#define MSG_STOP_PRINT _UxGT("Arrêter impr.")
-#define MSG_OUTAGE_RECOVERY _UxGT("Récupér. coupure")
-#define MSG_MEDIA_MENU _UxGT("Impression SD")
-#define MSG_NO_MEDIA _UxGT("Pas de média")
-#define MSG_DWELL _UxGT("Repos...")
-#define MSG_USERWAIT _UxGT("Attente utilis.")
-#define MSG_PRINT_PAUSED _UxGT("Impr. en pause")
-#define MSG_PRINTING _UxGT("Impression")
-#define MSG_PRINT_ABORTED _UxGT("Impr. annulée")
-#define MSG_NO_MOVE _UxGT("Moteurs bloqués")
-#define MSG_KILLED _UxGT("KILLED")
-#define MSG_STOPPED _UxGT("STOPPÉ")
-#define MSG_CONTROL_RETRACT _UxGT("Retrait mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Ech. Retr. mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retrait V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Saut Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Rappel mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Ech. Rappel mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Rappel V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("Ech. Rappel V")
-#define MSG_AUTORETRACT _UxGT("Retrait auto")
-#define MSG_TOOL_CHANGE _UxGT("Changement outil")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Augmenter Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Vitesse primaire")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Vitesse retrait")
-#define MSG_NOZZLE_STANDBY _UxGT("Attente buse")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Distance retrait")
-#define MSG_FILAMENT_PURGE_LENGTH _UxGT("Longueur de purge")
-#define MSG_FILAMENTCHANGE _UxGT("Changer filament")
-#define MSG_FILAMENTLOAD _UxGT("Charger filament")
-#define MSG_FILAMENTUNLOAD _UxGT("Retrait filament")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Décharger tout")
-#define MSG_INIT_MEDIA _UxGT("Charger le média")
-#define MSG_CHANGE_MEDIA _UxGT("Actualiser média")
-#define MSG_RELEASE_MEDIA _UxGT("Retirer le média")
-#define MSG_ZPROBE_OUT _UxGT("Sonde Z hors lit")
-#define MSG_SKEW_FACTOR _UxGT("Facteur écart")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
-#define MSG_BLTOUCH_STOW _UxGT("Cmd: Ranger")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Déployer")
-#define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: Mode SW")
-#define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: Mode 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: Mode OD")
-#define MSG_BLTOUCH_MODE_STORE _UxGT("Appliquer Mode")
-#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Mise en 5V")
-#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Mise en OD")
-#define MSG_BLTOUCH_MODE_ECHO _UxGT("Afficher Mode")
-#define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#define MSG_TOUCHMI_INIT _UxGT("Init. TouchMI")
-#define MSG_TOUCHMI_ZTEST _UxGT("Test décalage Z")
-#define MSG_TOUCHMI_SAVE _UxGT("Sauvegarde")
-#define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("Déployer TouchMI")
-#define MSG_MANUAL_DEPLOY _UxGT("Déployer Sonde Z")
-#define MSG_MANUAL_STOW _UxGT("Ranger Sonde Z")
-#define MSG_HOME_FIRST _UxGT("Origine %s%s%s Premier")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Décalage Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Total")
-#define MSG_ENDSTOP_ABORT _UxGT("Butée abandon")
-#define MSG_HEATING_FAILED_LCD _UxGT("Err de chauffe")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Err de chauffe lit")
-#define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Err chauffe caisson")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err TEMP. REDONDANTE")
-#define MSG_THERMAL_RUNAWAY _UxGT("Err THERMIQUE")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("Err THERMIQUE LIT")
-#define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("Err THERMIQUE CAISSON")
-#define MSG_ERR_MAXTEMP _UxGT("Err TEMP. MAX")
-#define MSG_ERR_MINTEMP _UxGT("Err TEMP. MIN")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err TEMP. MAX LIT")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err TEMP. MIN LIT")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err MAXTEMP CAISSON")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err MINTEMP CAISSON")
-#define MSG_ERR_Z_HOMING _UxGT("Origine XY Premier")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Contrôle LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Lumière");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Préregl. LED");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Rouge");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Orange");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Jaune");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Vert");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Bleu");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Violet");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Blanc");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Defaut");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("LEDs perso.");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intensité rouge");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intensité vert");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intensité bleu");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intensité blanc");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Luminosité");
-#define MSG_HALTED _UxGT("IMPR. STOPPÉE")
-#define MSG_PLEASE_RESET _UxGT("Redémarrer SVP")
-#define MSG_SHORT_DAY _UxGT("j") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Déplacement...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Débloquer XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Déplacer X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Déplacer Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Déplacer Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrudeur");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrudeur ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrudeur ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrudeur ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrudeur ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrudeur ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrudeur ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Déplacer %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Déplacer 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Déplacer 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Déplacer 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Vitesse");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Lit Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Buse");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Buse ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Buse ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Buse ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Buse ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Buse ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Buse ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Lit");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Caisson");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vitesse ventil.");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Vitesse ventil. 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Vitesse ventil. 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Vitesse ventil. 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra V ventil.");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Extra V ventil. 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Extra V ventil. 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Extra V ventil. 3");
-#define MSG_HEATING _UxGT("En chauffe...")
-#define MSG_COOLING _UxGT("Refroidissement")
-#define MSG_BED_HEATING _UxGT("Lit en chauffe...")
-#define MSG_BED_COOLING _UxGT("Refroid. du lit...")
-#define MSG_CHAMBER_HEATING _UxGT("Chauffe caisson...")
-#define MSG_CHAMBER_COOLING _UxGT("Refroid. caisson...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibration Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrer X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrer Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrer Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrer centre")
-#define MSG_DELTA_SETTINGS _UxGT("Réglages Delta")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Calibration Auto")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Hauteur Delta")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Delta Z sonde")
-#define MSG_DELTA_DIAG_ROD _UxGT("Diagonale")
-#define MSG_DELTA_HEIGHT _UxGT("Hauteur")
-#define MSG_DELTA_RADIUS _UxGT("Rayon")
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flux");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flux ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flux ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flux ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flux ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flux ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flux ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Contrôler");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Temp. Auto.");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Marche");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Arrêt");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Sélectionner");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Sélectionner ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Sélectionner ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Sélectionner ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Sélectionner ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Sélectionner ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Sélectionner ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Accélération");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Jerk");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT(" jerk");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT(" jerk");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT(" jerk");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve jerk");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Vélocité");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Déviat. jonct.");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("V dépl. min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accélération");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A retrait");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A dépl.");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Pas/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E pas/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" pas/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Température");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Mouvement");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Diamètre fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Diamètre fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Diamètre fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Diamètre fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Diamètre fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Diamètre fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Diamètre fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Charger mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Avance K");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("Avance K ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("Avance K ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("Avance K ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("Avance K ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("Avance K ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("Avance K ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Enregistrer config.");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Charger config.");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restaurer défauts");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("RaZ imprimante");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Surveiller");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Préparer");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Régler");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Démarrer impression");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Suivant");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Init.");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Imprimer");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Reset");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Annuler");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Terminé");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pause impression");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Reprendre impr.");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Arrêter impr.");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Récupér. coupure");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Impression SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Pas de média");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Repos...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Attente utilis.");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Impr. en pause");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Impression");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impr. annulée");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Moteurs bloqués");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("KILLED");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("STOPPÉ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retrait mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. Retr. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retrait V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Rappel mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech. Rappel mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Rappel V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Ech. Rappel V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Retrait auto");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Changement outil");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Vitesse primaire");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Vitesse retrait");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Attente buse");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Distance retrait");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Changer filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Changer filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Changer filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Changer filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Changer filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Changer filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Changer filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Charger filament");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Charger filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Charger filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Charger filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Charger filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Charger filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Charger filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Retrait filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Retrait filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Retrait filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Retrait filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Retrait filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Retrait filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Décharger tout");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Charger le média");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Actualiser média");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Retirer le média");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Facteur écart");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Cmd: Self-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Cmd: Reset");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Cmd: Ranger");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Cmd: Déployer");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("Cmd: Mode SW");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("Cmd: Mode 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("Cmd: Mode OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Test décalage Z");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Déployer TouchMI");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Déployer Sonde Z");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Origine %s%s%s Premier");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Décalage Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Total");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Butée abandon");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Err de chauffe");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Origine XY Premier");
-#define MSG_INFO_MENU _UxGT("Infos imprimante")
-#define MSG_INFO_PRINTER_MENU _UxGT("Infos imprimante")
-#define MSG_3POINT_LEVELING _UxGT("Niveau à 3 points")
-#define MSG_LINEAR_LEVELING _UxGT("Niveau linéaire")
-#define MSG_BILINEAR_LEVELING _UxGT("Niveau bilinéaire")
-#define MSG_UBL_LEVELING _UxGT("Niveau lit unifié")
-#define MSG_MESH_LEVELING _UxGT("Niveau maillage")
-#define MSG_INFO_STATS_MENU _UxGT("Stats. imprimante")
-#define MSG_INFO_BOARD_MENU _UxGT("Infos carte")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistances")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrudeurs")
-#define MSG_INFO_BAUDRATE _UxGT("Bauds")
-#define MSG_INFO_PROTOCOL _UxGT("Protocole")
-#define MSG_CASE_LIGHT _UxGT("Lumière caisson")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Luminosité")
+ PROGMEM Language_Str MSG_HALTED = _UxGT("IMPR. STOPPÉE");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Redémarrer SVP");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("j"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
-#define MSG_EXPECTED_PRINTER _UxGT("Imprimante incorrecte")
+ PROGMEM Language_Str MSG_HEATING = _UxGT("En chauffe...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Refroidissement");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Lit en chauffe...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Refroid. du lit...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Réglages Delta");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Hauteur Delta");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Delta Z sonde");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Diagonale");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Hauteur");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Rayon");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Nbre impressions")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Terminées")
- #define MSG_INFO_PRINT_TIME _UxGT("Tps impr. total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Impr. la + longue")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total filament")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Impressions")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Terminées")
- #define MSG_INFO_PRINT_TIME _UxGT("Total")
- #define MSG_INFO_PRINT_LONGEST _UxGT("+ long")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Filament")
-#endif
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Infos imprimante");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Niveau à 3 points");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Niveau linéaire");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Niveau bilinéaire");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Niveau lit unifié");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Niveau maillage");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Infos carte");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Bauds");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocole");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Lumière caisson");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosité");
-#define MSG_INFO_MIN_TEMP _UxGT("Temp Min")
-#define MSG_INFO_MAX_TEMP _UxGT("Temp Max")
-#define MSG_INFO_PSU _UxGT("Alimentation")
-#define MSG_DRIVE_STRENGTH _UxGT("Puiss. moteur ")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
-#define MSG_ERROR_TMC _UxGT("ERREUR CONNEXION TMC")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte");
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("IMPR. PAUSE")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("CHARGER FIL")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("DECHARGER FIL")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPTIONS REPRISE:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purger encore")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Buse: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Capteur fil.")
-#define MSG_ERR_HOMING_FAILED _UxGT("Echec origine")
-#define MSG_ERR_PROBING_FAILED _UxGT("Echec sonde")
-#define MSG_M600_TOO_COLD _UxGT("M600: Trop froid")
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("CHANGER FILAMENT")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("CHOISIR FILAMENT")
-#define MSG_MMU2_MENU _UxGT("MMU")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("Update MMU firmware!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU ne répond plus")
-#define MSG_MMU2_RESUME _UxGT("Continuer impr.")
-#define MSG_MMU2_RESUMING _UxGT("Reprise...")
-#define MSG_MMU2_LOAD_FILAMENT _UxGT("Charger filament")
-#define MSG_MMU2_LOAD_ALL _UxGT("Charger tous")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Charger dans buse")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Ejecter filament")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Ejecter fil. 1")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Ejecter fil. 2")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Ejecter fil. 3")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Ejecter fil. 4")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Ejecter fil. 5")
-#define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Retrait filament")
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Chargem. fil. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Ejection fil...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Retrait fil....")
-#define MSG_MMU2_ALL _UxGT("Tous")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filament 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filament 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filament 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filament 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filament 5")
-#define MSG_MMU2_RESET _UxGT("Réinit. MMU")
-#define MSG_MMU2_RESETTING _UxGT("Réinit. MMU...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Retrait, click")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Impressions");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Total");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("+ long");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Filament");
+ #endif
-#define MSG_MIX _UxGT("Mix")
-#define MSG_MIX_COMPONENT _UxGT("Composante")
-#define MSG_MIXER _UxGT("Mixeur")
-#define MSG_GRADIENT _UxGT("Dégradé")
-#define MSG_FULL_GRADIENT _UxGT("Dégradé complet")
-#define MSG_TOGGLE_MIX _UxGT("Toggle mix")
-#define MSG_CYCLE_MIX _UxGT("Cycle mix")
-#define MSG_GRADIENT_MIX _UxGT("Mix dégradé")
-#define MSG_REVERSE_GRADIENT _UxGT("Inverser dégradé")
-#define MSG_ACTIVE_VTOOL _UxGT("Active V-tool")
-#define MSG_START_VTOOL _UxGT("Début V-tool")
-#define MSG_END_VTOOL _UxGT(" Fin V-tool")
-#define MSG_GRADIENT_ALIAS _UxGT("Alias V-tool")
-#define MSG_RESET_VTOOLS _UxGT("Réinit. V-tools")
-#define MSG_COMMIT_VTOOL _UxGT("Valider Mix V-tool")
-#define MSG_VTOOLS_RESET _UxGT("V-tools réinit. ok")
-#define MSG_START_Z _UxGT("Début Z")
-#define MSG_END_Z _UxGT(" Fin Z")
-#define MSG_GAMES _UxGT("Jeux")
-#define MSG_BRICKOUT _UxGT("Casse-briques")
-#define MSG_INVADERS _UxGT("Invaders")
-#define MSG_SNAKE _UxGT("Sn4k3")
-#define MSG_MAZE _UxGT("Labyrinthe")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temp Min");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temp Max");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Alimentation");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur ");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv.");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Presser bouton")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("pour reprendre")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parking...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attente filament")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("pour démarrer")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insérer filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("et app. bouton")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("pour continuer...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Presser le bouton")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("pour chauffer...")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Buse en chauffe")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Patienter SVP...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Attente")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("retrait du filament")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Attente")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("chargement filament")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Attente")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("Purge filament")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Presser pour finir")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("la purge du filament")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Attente reprise")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("impression")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Clic pour continuer")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Patience...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insérer fil.")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Chauffer ?")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Chauffage...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Retrait fil...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Chargement...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purge...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Terminer ?")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprise...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr.");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Capteur fil.");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Echec origine");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Trop froid");
-#define MSG_TMC_DRIVERS _UxGT("Drivers TMC")
-#define MSG_TMC_CURRENT _UxGT("Courant driver")
-#define MSG_TMC_HYBRID_THRS _UxGT("Seuil hybride")
-#define MSG_TMC_HOMING_THRS _UxGT("Home sans capteur")
-#define MSG_TMC_STEPPING_MODE _UxGT("Mode pas à pas")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop activé")
-#define MSG_SERVICE_RESET _UxGT("Réinit.")
-#define MSG_SERVICE_IN _UxGT(" dans:")
-#define MSG_BACKLASH _UxGT("Backlash")
-#define MSG_BACKLASH_CORRECTION _UxGT("Correction")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Lissage")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne répond plus");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Continuer impr.");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Reprise...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Charger filament");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Charger tous");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter filament");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Ejecter fil. 1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Ejecter fil. 2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Ejecter fil. 3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Ejecter fil. 4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Ejecter fil. 5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil....");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Tous");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filament 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filament 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filament 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filament 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filament 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Réinit. MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Réinit. MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click");
+
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Composante 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Composante 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Composante 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Composante 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Composante 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Composante 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Mixeur");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Dégradé");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Dégradé complet");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Toggle mix");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Cycle mix");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Mix dégradé");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Inverser dégradé");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Active V-tool");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Début V-tool");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT(" Fin V-tool");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Réinit. V-tools");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-tools réinit. ok");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Début Z:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT(" Fin Z:");
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Jeux");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Casse-briques");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Labyrinthe");
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parking..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour démarrer"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insérer filament", "et app. bouton", "pour continuer..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression"));
+ #else // LCD_HEIGHT < 4
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insérer fil."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise..."));
+ #endif // LCD_HEIGHT < 4
+
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Courant driver");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Mode pas à pas");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop activé");
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Réinit.");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" dans:");
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Correction");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Lissage");
+}
diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h
index c1fcc9a12a..554230ca35 100644
--- a/Marlin/src/lcd/language/language_gl.h
+++ b/Marlin/src/lcd/language/language_gl.h
@@ -32,222 +32,241 @@
#define DISPLAY_CHARSET_ISO10646_1
#define NOT_EXTENDED_ISO10646_1_5X7
-#define WELCOME_MSG MACHINE_NAME _UxGT(" lista.")
-#define MSG_MEDIA_INSERTED _UxGT("Tarxeta inserida")
-#define MSG_MEDIA_REMOVED _UxGT("Tarxeta retirada")
-#define MSG_LCD_ENDSTOPS _UxGT("FinCarro")
-#define MSG_MAIN _UxGT("Menu principal")
-#define MSG_AUTOSTART _UxGT("Autoarranque")
-#define MSG_DISABLE_STEPPERS _UxGT("Apagar motores")
-#define MSG_AUTO_HOME _UxGT("Ir a orixe")
-#define MSG_AUTO_HOME_X _UxGT("Ir orixe X")
-#define MSG_AUTO_HOME_Y _UxGT("Ir orixe Y")
-#define MSG_AUTO_HOME_Z _UxGT("Ir orixe Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Ir orixes XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Prema pulsador")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Seguinte punto")
-#define MSG_LEVEL_BED_DONE _UxGT("Nivelado feito")
-#define MSG_SET_HOME_OFFSETS _UxGT("Offsets na orixe")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets fixados")
-#define MSG_SET_ORIGIN _UxGT("Fixar orixe")
-#define MSG_PREHEAT_1 _UxGT("Prequentar " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Prequentar " PREHEAT_1_LABEL " ")
-#define MSG_PREHEAT_1_ALL _UxGT("Preque. " PREHEAT_1_LABEL " Todo")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Preque. " PREHEAT_1_LABEL " Cama")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Preque. " PREHEAT_1_LABEL " conf")
-#define MSG_PREHEAT_2 _UxGT("Prequentar " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Prequentar " PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL _UxGT("Preque. " PREHEAT_2_LABEL " Todo")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Preque. " PREHEAT_2_LABEL " Cama")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Preque. " PREHEAT_2_LABEL " conf")
-#define MSG_COOLDOWN _UxGT("Arrefriar")
-#define MSG_SWITCH_PS_ON _UxGT("Acender")
-#define MSG_SWITCH_PS_OFF _UxGT("Apagar")
-#define MSG_EXTRUDE _UxGT("Extrudir")
-#define MSG_RETRACT _UxGT("Retraer")
-#define MSG_MOVE_AXIS _UxGT("Mover eixe")
-#define MSG_BED_LEVELING _UxGT("Nivelar cama")
-#define MSG_LEVEL_BED _UxGT("Nivelar cama")
-#define MSG_MOVE_X _UxGT("Mover X")
-#define MSG_MOVE_Y _UxGT("Mover Y")
-#define MSG_MOVE_Z _UxGT("Mover Z")
-#define MSG_MOVE_E _UxGT("Extrusor")
-#define MSG_MOVE_Z_DIST _UxGT("Mover %smm")
-#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mover 1mm")
-#define MSG_MOVE_10MM _UxGT("Mover 10mm")
-#define MSG_SPEED _UxGT("Velocidade")
-#define MSG_BED_Z _UxGT("Cama Z")
-#define MSG_NOZZLE _UxGT("Bico")
-#define MSG_BED _UxGT("Cama")
-#define MSG_FAN_SPEED _UxGT("Velocidade vent.")
-#define MSG_FLOW _UxGT("Fluxo")
-//#define MSG_CONTROL _UxGT("Control")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-//#define MSG_AUTOTEMP _UxGT("Autotemp")
-//#define MSG_LCD_ON _UxGT("On")
-//#define MSG_LCD_OFF _UxGT("Off")
-//#define MSG_PID_P _UxGT("PID-P")
-//#define MSG_PID_I _UxGT("PID-I")
-//#define MSG_PID_D _UxGT("PID-D")
-//#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Escolla")
-#define MSG_ACC _UxGT("Acel")
-//#define MSG_JERK _UxGT("Jerk")
-//#if IS_KINEMATIC
-// #define MSG_VA_JERK _UxGT("Va-jerk")
-// #define MSG_VB_JERK _UxGT("Vb-jerk")
-// #define MSG_VC_JERK _UxGT("Vc-jerk")
-//#else
-// #define MSG_VA_JERK _UxGT("Vx-jerk")
-// #define MSG_VB_JERK _UxGT("Vy-jerk")
-// #define MSG_VC_JERK _UxGT("Vz-jerk")
-//#endif
-//#define MSG_VE_JERK _UxGT("Ve-jerk")
-//#define MSG_VMAX _UxGT("Vmax ")
-//#define MSG_VMIN _UxGT("Vmin")
-//#define MSG_VTRAV_MIN _UxGT("VTrav min")
-//#define MSG_AMAX _UxGT("Amax ")
-//#define MSG_A_RETRACT _UxGT("A-retract")
-//#define MSG_A_TRAVEL _UxGT("A-travel")
-#define MSG_STEPS_PER_MM _UxGT("Pasos/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A pasos/mm")
- #define MSG_BSTEPS _UxGT("B pasos/mm")
- #define MSG_CSTEPS _UxGT("C pasos/mm")
-#else
- #define MSG_ASTEPS _UxGT("X pasos/mm")
- #define MSG_BSTEPS _UxGT("Y pasos/mm")
- #define MSG_CSTEPS _UxGT("Z pasos/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E pasos/mm")
-#define MSG_E0_STEPS _UxGT("E1 pasos/mm")
-#define MSG_E1_STEPS _UxGT("E2 pasos/mm")
-#define MSG_E2_STEPS _UxGT("E3 pasos/mm")
-#define MSG_E3_STEPS _UxGT("E4 pasos/mm")
-#define MSG_E4_STEPS _UxGT("E5 pasos/mm")
-#define MSG_E5_STEPS _UxGT("E6 pasos/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movemento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E en mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Diam. fil.")
-#define MSG_CONTRAST _UxGT("Constraste LCD")
-#define MSG_STORE_EEPROM _UxGT("Gardar en memo.")
-#define MSG_LOAD_EEPROM _UxGT("Cargar de memo.")
-#define MSG_RESTORE_FAILSAFE _UxGT("Cargar de firm.")
-#define MSG_REFRESH _UxGT("Volver a cargar")
-#define MSG_WATCH _UxGT("Monitorizacion")
-#define MSG_PREPARE _UxGT("Preparar")
-#define MSG_TUNE _UxGT("Axustar")
-#define MSG_PAUSE_PRINT _UxGT("Pausar impres.")
-#define MSG_RESUME_PRINT _UxGT("Seguir impres.")
-#define MSG_STOP_PRINT _UxGT("Deter impres.")
-#define MSG_MEDIA_MENU _UxGT("Tarxeta SD")
-#define MSG_NO_MEDIA _UxGT("Sen tarxeta SD")
-#define MSG_DWELL _UxGT("En repouso...")
-#define MSG_USERWAIT _UxGT("A espera...")
-#define MSG_PRINT_ABORTED _UxGT("Impre. cancelada")
-#define MSG_NO_MOVE _UxGT("Sen movemento.")
-#define MSG_KILLED _UxGT("PROGRAMA MORTO")
-#define MSG_STOPPED _UxGT("PROGRAMA PARADO")
-#define MSG_CONTROL_RETRACT _UxGT("Retraccion mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Cambio retra. mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retraccion V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Alzar Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Recup. retra. mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Cambio recup. mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Recuperacion V")
-#define MSG_AUTORETRACT _UxGT("Retraccion auto.")
-#define MSG_FILAMENTCHANGE _UxGT("Cambiar filamen.")
-#define MSG_INIT_MEDIA _UxGT("Iniciando SD")
-#define MSG_CHANGE_MEDIA _UxGT("Cambiar SD")
-#define MSG_ZPROBE_OUT _UxGT("Sonda-Z sen cama")
-//#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Comprobar BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("Iniciar BLTouch")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Offset Z")
-#define MSG_BABYSTEP_X _UxGT("Micropaso X")
-#define MSG_BABYSTEP_Y _UxGT("Micropaso Y")
-#define MSG_BABYSTEP_Z _UxGT("Micropaso Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Erro fin carro")
-#define MSG_HEATING_FAILED_LCD _UxGT("Fallo quentando")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Erro temperatura")
-#define MSG_THERMAL_RUNAWAY _UxGT("Temp. excesiva")
-//#define MSG_ERR_MAXTEMP _UxGT("Err: temp. max.")
-//#define MSG_ERR_MINTEMP _UxGT("Err: temp. min.")
-//#define MSG_ERR_MAXTEMP_BED _UxGT("Err: MAXTEMP BED")
-//#define MSG_ERR_MINTEMP_BED _UxGT("Err: MINTEMP BED")
-//#define MSG_ERR_Z_HOMING _UxGT("Home XY first")
-#define MSG_HALTED _UxGT("SISTEMA MORTO")
-#define MSG_PLEASE_RESET _UxGT("Debe reiniciar!")
-//#define MSG_SHORT_DAY _UxGT("d") // One character only
-//#define MSG_SHORT_HOUR _UxGT("h") // One character only
-//#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Quentando...")
-#define MSG_BED_HEATING _UxGT("Quentando cama...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibracion Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
-#define MSG_INFO_MENU _UxGT("Acerca de...")
-#define MSG_INFO_PRINTER_MENU _UxGT("Informacion")
-#define MSG_INFO_STATS_MENU _UxGT("Estadisticas")
-#define MSG_INFO_BOARD_MENU _UxGT("Placa nai")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistores")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrusores")
-#define MSG_INFO_BAUDRATE _UxGT("Baudios")
-#define MSG_INFO_PROTOCOL _UxGT("Protocolo")
-#define MSG_CASE_LIGHT _UxGT("Luz")
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Total traballos")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Total completos")
- #define MSG_INFO_PRINT_TIME _UxGT("Tempo impresion")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Traballo +longo")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total extruido")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Traballos")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completos")
- #define MSG_INFO_PRINT_TIME _UxGT("Tempo")
- #define MSG_INFO_PRINT_LONGEST _UxGT("O +longo")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extruido")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("Fonte alime.")
-#define MSG_DRIVE_STRENGTH _UxGT("Potencia motor")
-#define MSG_DAC_PERCENT _UxGT("Motor %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Garda DAC EEPROM")
+namespace Language_gl {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Galician");
-#define MSG_EXPECTED_PRINTER _UxGT("Impresora incorrecta")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" lista.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Tarxeta inserida");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Tarxeta retirada");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("FinCarro");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu principal");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autoarranque");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Apagar motores");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Ir a orixe");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Ir orixe X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Ir orixe Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Ir orixe Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Ir orixes XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Prema pulsador");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Seguinte punto");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Nivelado feito");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Offsets na orixe");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets fixados");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Fixar orixe");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Prequentar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Prequentar ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Prequentar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Prequentar ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Todo");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" Cama");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Preque. ") PREHEAT_2_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Arrefriar");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Acender");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Apagar");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrudir");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retraer");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mover eixe");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Nivelar cama");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Nivelar cama");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mover X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mover Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mover Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mover %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mover 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mover 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mover 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocidade");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Cama Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Bico");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Cama");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Velocidade vent.");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Velocidade vent. 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Velocidade vent. 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Velocidade vent. 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxo");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Fluxo ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Fluxo ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Fluxo ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Fluxo ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Fluxo ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Fluxo ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Escolla");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Escolla ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Escolla ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Escolla ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Escolla ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Escolla ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Escolla ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Acel");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Pasos/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E pasos/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" pasos/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movemento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Diam. fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Diam. fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Diam. fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Diam. fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Diam. fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Diam. fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Diam. fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Constraste LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Gardar en memo.");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Cargar de memo.");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Cargar de firm.");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Volver a cargar");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Monitorizacion");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Axustar");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausar impres.");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Seguir impres.");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Deter impres.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Tarxeta SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Sen tarxeta SD");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("En repouso...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("A espera...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impre. cancelada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sen movemento.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("PROGRAMA MORTO");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("PROGRAMA PARADO");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retraccion mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Cambio retra. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retraccion V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Alzar Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Recup. retra. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Cambio recup. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Recuperacion V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Retraccion auto.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Cambiar filamen.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Cambiar filamen. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Cambiar filamen. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Cambiar filamen. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Cambiar filamen. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Cambiar filamen. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Cambiar filamen. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Iniciando SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Cambiar SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda-Z sen cama");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Comprobar BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Iniciar BLTouch");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Micropaso X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Micropaso Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Micropaso Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Erro fin carro");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Fallo quentando");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro temperatura");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Temp. excesiva");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("SISTEMA MORTO");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Debe reiniciar!");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Quentando...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Quentando cama...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Acerca de...");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Informacion");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Estadisticas");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Placa nai");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrusores");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baudios");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocolo");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Luz");
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Total traballos");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Total completos");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tempo impresion");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Traballo +longo");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total extruido");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Traballos");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completos");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tempo");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("O +longo");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Fonte alime.");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Potencia motor");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Garda DAC EEPROM");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Agarde para")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("iniciar troco")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("de filamento")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Agarde pola")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("descarga do")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("filamento")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Introduza o")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("filamento e")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("faga click")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Agarde pola")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("carga do")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamento")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Agarde para")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("seguir co")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("traballo")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Agarde...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Descargando...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Introduza e click")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Cargando...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Seguindo...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Segue traballo");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impresora incorrecta");
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Agarde para", "iniciar troco", "de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Agarde para", "seguir co", "traballo"));
+ #else // LCD_HEIGHT < 4
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Agarde..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Descargando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Introduza e click"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Seguindo..."));
+ #endif // LCD_HEIGHT < 4
+}
diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h
index ef65e09fee..06822b3ccf 100644
--- a/Marlin/src/lcd/language/language_hr.h
+++ b/Marlin/src/lcd/language/language_hr.h
@@ -30,223 +30,181 @@
*/
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" spreman.")
-#define MSG_MEDIA_INSERTED _UxGT("SD kartica umetnuta")
-#define MSG_MEDIA_REMOVED _UxGT("SD kartica uklonjena")
-//#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-//#define MSG_MAIN _UxGT("Main")
-#define MSG_AUTOSTART _UxGT("Auto pokretanje")
-#define MSG_DISABLE_STEPPERS _UxGT("Ugasi steppere")
-#define MSG_AUTO_HOME _UxGT("Automatski homing")
-#define MSG_AUTO_HOME_X _UxGT("Home-aj X")
-#define MSG_AUTO_HOME_Y _UxGT("Home-aj Y")
-#define MSG_AUTO_HOME_Z _UxGT("Home-aj Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Home-aj XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Klikni za početak")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Sljedeća točka")
-#define MSG_LEVEL_BED_DONE _UxGT("Niveliranje gotovo!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Postavi home offsete")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets postavljeni")
-#define MSG_SET_ORIGIN _UxGT("Postavi ishodište")
-#define MSG_PREHEAT_1 _UxGT("Predgrij " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Sve")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Bed")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" conf")
-#define MSG_PREHEAT_2 _UxGT("Predgrij " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Sve")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Bed")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" conf")
-#define MSG_COOLDOWN _UxGT("Hlađenje")
-#define MSG_SWITCH_PS_ON _UxGT("Uključi napajanje")
-#define MSG_SWITCH_PS_OFF _UxGT("Isključi napajanje")
-//#define MSG_EXTRUDE _UxGT("Extrude")
-//#define MSG_RETRACT _UxGT("Retract")
-#define MSG_MOVE_AXIS _UxGT("Miči os")
-#define MSG_BED_LEVELING _UxGT("Niveliraj bed")
-#define MSG_LEVEL_BED _UxGT("Niveliraj bed")
-#define MSG_MOVE_X _UxGT("Miči X")
-#define MSG_MOVE_Y _UxGT("Miči Y")
-#define MSG_MOVE_Z _UxGT("Miči Z")
-//#define MSG_MOVE_E _UxGT("Extruder")
-#define MSG_MOVE_Z_DIST _UxGT("Miči %smm")
-#define MSG_MOVE_01MM _UxGT("Miči 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Miči 1mm")
-#define MSG_MOVE_10MM _UxGT("Miči 10mm")
-#define MSG_SPEED _UxGT("Brzina")
-#define MSG_BED_Z _UxGT("Bed Z")
-#define MSG_NOZZLE _UxGT("Dizna")
-#define MSG_BED _UxGT("Bed")
-#define MSG_FAN_SPEED _UxGT("Brzina ventilatora")
-//#define MSG_FLOW _UxGT("Flow")
-//#define MSG_CONTROL _UxGT("Control")
-//#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-//#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-//#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-//#define MSG_AUTOTEMP _UxGT("Autotemp")
-//#define MSG_LCD_ON _UxGT("On")
-//#define MSG_LCD_OFF _UxGT("Off")
-//#define MSG_PID_P _UxGT("PID-P")
-//#define MSG_PID_I _UxGT("PID-I")
-//#define MSG_PID_D _UxGT("PID-D")
-//#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Odaberi")
-//#define MSG_ACC _UxGT("Accel")
-//#define MSG_JERK _UxGT("Jerk")
-//#if IS_KINEMATIC
-// #define MSG_VA_JERK _UxGT("Va-jerk")
-// #define MSG_VB_JERK _UxGT("Vb-jerk")
-// #define MSG_VC_JERK _UxGT("Vc-jerk")
-//#else
-// #define MSG_VA_JERK _UxGT("Vx-jerk")
-// #define MSG_VB_JERK _UxGT("Vy-jerk")
-// #define MSG_VC_JERK _UxGT("Vz-jerk")
-//#endif
-//#define MSG_VE_JERK _UxGT("Ve-jerk")
-//#define MSG_VMAX _UxGT("Vmax ")
-//#define MSG_VMIN _UxGT("Vmin")
-//#define MSG_VTRAV_MIN _UxGT("VTrav min")
-//#define MSG_AMAX _UxGT("Amax ")
-//#define MSG_A_RETRACT _UxGT("A-retract")
-//#define MSG_A_TRAVEL _UxGT("A-travel")
-//#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-//#if IS_KINEMATIC
-// #define MSG_ASTEPS _UxGT("Asteps/mm")
-// #define MSG_BSTEPS _UxGT("Bsteps/mm")
-// #define MSG_CSTEPS _UxGT("Csteps/mm")
-//#else
-// #define MSG_ASTEPS _UxGT("Xsteps/mm")
-// #define MSG_BSTEPS _UxGT("Ysteps/mm")
-// #define MSG_CSTEPS _UxGT("Zsteps/mm")
-//#endif
-//#define MSG_ESTEPS _UxGT("Esteps/mm")
-//#define MSG_E0_STEPS _UxGT("E1steps/mm")
-//#define MSG_E1_STEPS _UxGT("E2steps/mm")
-//#define MSG_E2_STEPS _UxGT("E3steps/mm")
-//#define MSG_E3_STEPS _UxGT("E4steps/mm")
-//#define MSG_E4_STEPS _UxGT("E5steps/mm")
-//#define MSG_E5_STEPS _UxGT("E6steps/mm")
-#define MSG_TEMPERATURE _UxGT("Temperature")
-#define MSG_MOTION _UxGT("Gibanje")
-//#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_CONTRAST _UxGT("Kontrast LCD-a")
-#define MSG_STORE_EEPROM _UxGT("Pohrani u memoriju")
-#define MSG_LOAD_EEPROM _UxGT("Učitaj memoriju")
-#define MSG_RESTORE_FAILSAFE _UxGT("Učitaj failsafe")
-#define MSG_REFRESH _UxGT("Osvježi")
-#define MSG_WATCH _UxGT("Info screen")
-#define MSG_PREPARE _UxGT("Pripremi")
-//#define MSG_TUNE _UxGT("Tune")
-#define MSG_PAUSE_PRINT _UxGT("Pauziraj print")
-#define MSG_RESUME_PRINT _UxGT("Nastavi print")
-#define MSG_STOP_PRINT _UxGT("Zaustavi print")
-#define MSG_MEDIA_MENU _UxGT("Printaj s SD kartice")
-#define MSG_NO_MEDIA _UxGT("Nema SD kartice")
-//#define MSG_DWELL _UxGT("Sleep...")
-#define MSG_USERWAIT _UxGT("Čekaj korisnika...")
-#define MSG_PRINT_ABORTED _UxGT("Print otkazan")
-//#define MSG_NO_MOVE _UxGT("No move.")
-//#define MSG_KILLED _UxGT("KILLED. ")
-#define MSG_STOPPED _UxGT("ZAUSTAVLJEN. ")
-//#define MSG_CONTROL_RETRACT _UxGT("Retract mm")
-//#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Re.mm")
-//#define MSG_CONTROL_RETRACTF _UxGT("Retract V")
-//#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm")
-//#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-//#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-//#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#define MSG_FILAMENTCHANGE _UxGT("Promijeni filament")
-#define MSG_INIT_MEDIA _UxGT("Init. SD karticu")
-#define MSG_CHANGE_MEDIA _UxGT("Promijeni SD karticu")
-//#define MSG_ZPROBE_OUT _UxGT("Z probe out. bed")
-//#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
-//#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-//#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-//#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset")
-//#define MSG_BABYSTEP_X _UxGT("Babystep X")
-//#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-//#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-//#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
-#define MSG_HEATING_FAILED_LCD _UxGT("Grijanje neuspješno")
-//#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: REDUNDANT TEMP")
-//#define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
-//#define MSG_ERR_MAXTEMP _UxGT("Err: MAXTEMP")
-//#define MSG_ERR_MINTEMP _UxGT("Err: MINTEMP")
-//#define MSG_ERR_MAXTEMP_BED _UxGT("Err: MAXTEMP BED")
-//#define MSG_ERR_MINTEMP_BED _UxGT("Err: MINTEMP BED")
-//#define MSG_ERR_Z_HOMING _UxGT("Home XY first")
-//#define MSG_HALTED _UxGT("PRINTER HALTED")
-//#define MSG_PLEASE_RESET _UxGT("Please reset")
-//#define MSG_SHORT_DAY _UxGT("d") // One character only
-//#define MSG_SHORT_HOUR _UxGT("h") // One character only
-//#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Grijanje...")
-#define MSG_BED_HEATING _UxGT("Grijanje Bed-a...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibracija")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibriraj X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibriraj Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibriraj Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibriraj Središte")
-#define MSG_INFO_MENU _UxGT("O printeru")
-#define MSG_INFO_PRINTER_MENU _UxGT("Podaci o printeru")
-#define MSG_INFO_STATS_MENU _UxGT("Statistika printera")
-#define MSG_INFO_BOARD_MENU _UxGT("Podaci o elektronici")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistori")
-#define MSG_INFO_EXTRUDERS _UxGT("Extruderi")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_PROTOCOL _UxGT("Protokol")
-#define MSG_CASE_LIGHT _UxGT("Osvjetljenje")
+namespace Language_hr {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_EXPECTED_PRINTER _UxGT("Neispravan pisač")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Croatian");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Broj printova")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Završeni")
- #define MSG_INFO_PRINT_TIME _UxGT("Ukupno printanja")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najduži print")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrudirano ukupno")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Printovi")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Završeni")
- #define MSG_INFO_PRINT_TIME _UxGT("Ukupno")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najduži")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrudirano")
-#endif
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" spreman.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("SD kartica umetnuta");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("SD kartica uklonjena");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Main");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Auto pokretanje");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Ugasi steppere");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Automatski homing");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Home-aj X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home-aj Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home-aj Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Home-aj XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Klikni za početak");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sljedeća točka");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Niveliranje gotovo!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Postavi home offsete");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets postavljeni");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Postavi ishodište");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Predgrij ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Predgrij ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Predgrij ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Predgrij ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Dizna ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Sve");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" Bed");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Predgrij ") PREHEAT_2_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Hlađenje");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Uključi napajanje");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Isključi napajanje");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Miči os");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Niveliraj bed");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Niveliraj bed");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Miči X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Miči Y");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Miči %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Miči 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Miči 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Miči 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Brzina");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Bed Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Dizna");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Dizna ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Dizna ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Dizna ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Dizna ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Dizna ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Dizna ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Bed");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Brzina ventilatora");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Brzina ventilatora 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Brzina ventilatora 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Brzina ventilatora 3");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Odaberi");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Odaberi ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Odaberi ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Odaberi ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Odaberi ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Odaberi ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Odaberi ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperature");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Gibanje");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD-a");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Pohrani u memoriju");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Učitaj memoriju");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Učitaj failsafe");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info screen");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Pripremi");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pauziraj print");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Nastavi print");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Zaustavi print");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Printaj s SD kartice");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Nema SD kartice");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Čekaj korisnika...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Print otkazan");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ZAUSTAVLJEN. ");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Promijeni filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Promijeni filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Promijeni filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Promijeni filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Promijeni filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Promijeni filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Promijeni filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Init. SD karticu");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Promijeni SD karticu");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Grijanje neuspješno");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Grijanje...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Grijanje Bed-a...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibracija");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriraj X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriraj Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriraj Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriraj Središte");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("O printeru");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Podaci o printeru");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statistika printera");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Podaci o elektronici");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extruderi");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokol");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Osvjetljenje");
-//#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-//#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("Napajanje")
-//#define MSG_DRIVE_STRENGTH _UxGT("Drive Strength")
-//#define MSG_DAC_PERCENT _UxGT("Driver %")
-//#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Neispravan pisač");
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Nastavi print")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Broj printova");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Ukupno printanja");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najduži print");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano ukupno");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Printovi");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Ukupno");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najduži");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano");
+ #endif
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Čekaj početak")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("filamenta")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("promijeni")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Čekaj")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament unload")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Umetni filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("i pritisni tipku")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("za nastavak...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Pričekaj")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
- //#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
- //#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Pričekaj...")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejecting...")
- //#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert and Click")
- //#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Nastavljam...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Napajanje");
+
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Nastavi print");
+
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Čekaj", "filament unload"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Pričekaj", "filament load"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Nastavljam..."));
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak..."));
+ #else
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj...");
+ //PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("?", "?"));
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h
index 3a0654633c..51adadb7a4 100644
--- a/Marlin/src/lcd/language/language_it.h
+++ b/Marlin/src/lcd/language/language_it.h
@@ -31,544 +31,637 @@
#define DISPLAY_CHARSET_ISO10646_1
-#define WELCOME_MSG MACHINE_NAME _UxGT(" pronto.")
-#define MSG_YES _UxGT("SI")
-#define MSG_NO _UxGT("NO")
-#define MSG_BACK _UxGT("Indietro")
-#define MSG_MEDIA_ABORTING _UxGT("Annullando...")
-#define MSG_MEDIA_INSERTED _UxGT("Media inserito")
-#define MSG_MEDIA_REMOVED _UxGT("Media rimosso")
-#define MSG_MEDIA_RELEASED _UxGT("Media rilasciato")
-#define MSG_MEDIA_WAITING _UxGT("Aspettando media")
-#define MSG_MEDIA_READ_ERROR _UxGT("Err.leggendo media")
-#define MSG_MEDIA_USB_REMOVED _UxGT("Dispos.USB rimosso")
-#define MSG_MEDIA_USB_FAILED _UxGT("Avvio USB fallito")
-#define MSG_LCD_ENDSTOPS _UxGT("Finecor.") // Max 8 caratteri
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Finecorsa Soft")
-#define MSG_MAIN _UxGT("Menu principale")
-#define MSG_ADVANCED_SETTINGS _UxGT("Impostaz. avanzate")
-#define MSG_CONFIGURATION _UxGT("Configurazione")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Disabilita Motori")
-#define MSG_DEBUG_MENU _UxGT("Menu di debug")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Test barra avanzam.")
-#define MSG_AUTO_HOME _UxGT("Auto Home")
-#define MSG_AUTO_HOME_X _UxGT("Home asse X")
-#define MSG_AUTO_HOME_Y _UxGT("Home asse Y")
-#define MSG_AUTO_HOME_Z _UxGT("Home asse Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Allineam.automat. Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Home assi XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Premi per iniziare")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Punto successivo")
-#define MSG_LEVEL_BED_DONE _UxGT("Livel. terminato!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Fade Height")
-#define MSG_SET_HOME_OFFSETS _UxGT("Imp. offset home")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offset applicato")
-#define MSG_SET_ORIGIN _UxGT("Imposta Origine")
-#define MSG_PREHEAT_1 _UxGT("Preriscalda " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Preris." PREHEAT_1_LABEL " ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1_N _UxGT("Tutto")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1_N _UxGT("Ugello")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1_N _UxGT("Piatto")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1_N _UxGT("conf")
-#define MSG_PREHEAT_2 _UxGT("Preriscalda " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Preris." PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2_N _UxGT("Tutto")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2_N _UxGT("Ugello")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2_N _UxGT("Piatto")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2_N _UxGT("conf")
-#define MSG_PREHEAT_CUSTOM _UxGT("Prerisc.personal.")
-#define MSG_COOLDOWN _UxGT("Raffredda")
-#define MSG_LASER_MENU _UxGT("Controllo laser")
-#define MSG_LASER_OFF _UxGT("Laser Off")
-#define MSG_LASER_ON _UxGT("Laser On")
-#define MSG_LASER_POWER _UxGT("Potenza laser")
-#define MSG_SPINDLE_MENU _UxGT("Controllo mandrino")
-#define MSG_SPINDLE_OFF _UxGT("Mandrino Off")
-#define MSG_SPINDLE_ON _UxGT("Mandrino On")
-#define MSG_SPINDLE_POWER _UxGT("Potenza mandrino")
-#define MSG_SPINDLE_REVERSE _UxGT("Inverti mandrino")
-#define MSG_SWITCH_PS_ON _UxGT("Accendi aliment.")
-#define MSG_SWITCH_PS_OFF _UxGT("Spegni aliment.")
-#define MSG_EXTRUDE _UxGT("Estrudi")
-#define MSG_RETRACT _UxGT("Ritrai")
-#define MSG_MOVE_AXIS _UxGT("Muovi Asse")
-#define MSG_BED_LEVELING _UxGT("Livella piano")
-#define MSG_LEVEL_BED MSG_BED_LEVELING
-#define MSG_LEVEL_CORNERS _UxGT("Livella spigoli")
-#define MSG_NEXT_CORNER _UxGT("Prossimo spigolo")
-#define MSG_MESH_EDITOR _UxGT("Editor Mesh")
-#define MSG_EDIT_MESH _UxGT("Modifica Mesh")
-#define MSG_EDITING_STOPPED _UxGT("Modif. Mesh Fermata")
-#define MSG_PROBING_MESH _UxGT("Punto sondato")
-#define MSG_MESH_X _UxGT("Indice X")
-#define MSG_MESH_Y _UxGT("Indice Y")
-#define MSG_MESH_EDIT_Z _UxGT("Valore di Z")
-#define MSG_USER_MENU _UxGT("Comandi personaliz.")
-#define MSG_LCD_TILTING_MESH _UxGT("Punto inclinaz.")
-#define MSG_M48_TEST _UxGT("Test sonda M48")
-#define MSG_M48_POINT _UxGT("Punto M48")
-#define MSG_M48_DEVIATION _UxGT("Deviazione")
-#define MSG_IDEX_MENU _UxGT("Modo IDEX")
-#define MSG_OFFSETS_MENU _UxGT("Strumenti Offsets")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplicazione")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Copia speculare")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Pieno controllo")
-#define MSG_X_OFFSET _UxGT("2° ugello X")
-#define MSG_Y_OFFSET _UxGT("2° ugello Y")
-#define MSG_Z_OFFSET _UxGT("2° ugello Z")
-#define MSG_UBL_DOING_G29 _UxGT("G29 in corso")
-#define MSG_UBL_TOOLS _UxGT("Strumenti UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-#define MSG_UBL_MANUAL_MESH _UxGT("Mesh Manuale")
-#define MSG_UBL_BC_INSERT _UxGT("Metti spes. e misura")
-#define MSG_UBL_BC_INSERT2 _UxGT("Misura")
-#define MSG_UBL_BC_REMOVE _UxGT("Rimuovi e mis.piatto")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Spostamento succes.")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Attiva UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Disattiva UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Temp. Piatto")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Temp. Ugello")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Modifica Mesh")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Modif.Mesh personal.")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Ritocca Mesh")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Modif.Mesh fatta")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Crea Mesh personal.")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Crea Mesh")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Crea Mesh " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Crea Mesh " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Crea Mesh a freddo")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Aggiusta Alt. Mesh")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Altezza")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Valida Mesh")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Valida Mesh " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Valida Mesh " PREHEAT_2_LABEL)
-#define MSG_G26_HEATING_BED _UxGT("G26 riscald.letto")
-#define MSG_G26_HEATING_NOZZLE _UxGT("G26 riscald.ugello")
-#define MSG_G26_MANUAL_PRIME _UxGT("Priming manuale...")
-#define MSG_G26_FIXED_LENGTH _UxGT("Prime a lung.fissa")
-#define MSG_G26_PRIME_DONE _UxGT("Priming terminato")
-#define MSG_G26_CANCELED _UxGT("G26 Annullato")
-#define MSG_G26_LEAVING _UxGT("Uscita da G26")
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Valida Mesh pers.")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Continua Mesh")
-#define MSG_UBL_MESH_LEVELING _UxGT("Livell. Mesh")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Livell. 3 Punti")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Livell. Griglia Mesh")
-#define MSG_UBL_MESH_LEVEL _UxGT("Livella Mesh")
-#define MSG_UBL_SIDE_POINTS _UxGT("Punti laterali")
-#define MSG_UBL_MAP_TYPE _UxGT("Tipo di Mappa")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Esporta Mappa")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Esporta per Host")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Esporta in CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Backup esterno")
-#define MSG_UBL_INFO_UBL _UxGT("Esporta Info UBL")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Riempimento")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Riempimento Manuale")
-#define MSG_UBL_SMART_FILLIN _UxGT("Riempimento Smart")
-#define MSG_UBL_FILLIN_MESH _UxGT("Riempimento Mesh")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Invalida Tutto")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalid.Punto Vicino")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Ritocca All")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Ritocca Punto Vicino")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Mesh Salvate")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Slot di memoria")
-#define MSG_UBL_LOAD_MESH _UxGT("Carica Mesh Piatto")
-#define MSG_UBL_SAVE_MESH _UxGT("Salva Mesh Piatto")
-#define MSG_MESH_LOADED _UxGT("Mesh %i caricata")
-#define MSG_MESH_SAVED _UxGT("Mesh %i salvata")
-#define MSG_UBL_NO_STORAGE _UxGT("Nessuna memoria")
-#define MSG_UBL_SAVE_ERROR _UxGT("Err: Salvataggio UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Err: Ripristino UBL")
-#define MSG_UBL_Z_OFFSET _UxGT("Z-Offset: ")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Offset Fermato")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("UBL passo passo")
+namespace Language_it {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_LED_CONTROL _UxGT("Controllo LED")
-#define MSG_LEDS _UxGT("Luci")
-#define MSG_LED_PRESETS _UxGT("Preset luce")
-#define MSG_SET_LEDS_RED _UxGT("Rosso")
-#define MSG_SET_LEDS_ORANGE _UxGT("Arancione")
-#define MSG_SET_LEDS_YELLOW _UxGT("Giallo")
-#define MSG_SET_LEDS_GREEN _UxGT("Verde")
-#define MSG_SET_LEDS_BLUE _UxGT("Blu")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indaco")
-#define MSG_SET_LEDS_VIOLET _UxGT("Viola")
-#define MSG_SET_LEDS_WHITE _UxGT("Bianco")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Predefinito")
-#define MSG_CUSTOM_LEDS _UxGT("Luci personalizzate")
-#define MSG_INTENSITY_R _UxGT("Intensità rosso")
-#define MSG_INTENSITY_G _UxGT("Intensità verde")
-#define MSG_INTENSITY_B _UxGT("Intensità blu")
-#define MSG_INTENSITY_W _UxGT("Intensità bianco")
-#define MSG_LED_BRIGHTNESS _UxGT("Luminosità")
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Italian");
-#define MSG_MOVING _UxGT("In movimento...")
-#define MSG_FREE_XY _UxGT("XY liberi")
-#define MSG_MOVE_X _UxGT("Muovi X")
-#define MSG_MOVE_Y _UxGT("Muovi Y")
-#define MSG_MOVE_Z _UxGT("Muovi Z")
-#define MSG_MOVE_E _UxGT("Estrusore")
-#define MSG_HOTEND_TOO_COLD _UxGT("Ugello freddo")
-#define MSG_MOVE_Z_DIST _UxGT("Muovi di %smm")
-#define MSG_MOVE_01MM _UxGT("Muovi di 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Muovi di 1mm")
-#define MSG_MOVE_10MM _UxGT("Muovi di 10mm")
-#define MSG_SPEED _UxGT("Velocità")
-#define MSG_BED_Z _UxGT("Piatto Z")
-#define MSG_NOZZLE _UxGT("Ugello")
-#define MSG_BED _UxGT("Piatto")
-#define MSG_CHAMBER _UxGT("Camera")
-#define MSG_FAN_SPEED _UxGT("Vel. ventola") // Max 15 caratteri
-#define MSG_EXTRA_FAN_SPEED _UxGT("Extra vel.vent.") // Max 15 caratteri
-#define MSG_FLOW _UxGT("Flusso")
-#define MSG_CONTROL _UxGT("Controllo")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Autotemp")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Seleziona")
-#define MSG_ACC _UxGT("Accel")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_JUNCTION_DEVIATION _UxGT("Deviaz. giunzioni")
-#define MSG_VELOCITY _UxGT("Velocità")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_ACCELERATION _UxGT("Accelerazione")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-Ritrazione")
-#define MSG_A_TRAVEL _UxGT("A-Spostamento")
-#define MSG_STEPS_PER_MM _UxGT("Passi/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Apassi/mm")
- #define MSG_BSTEPS _UxGT("Bpassi/mm")
- #define MSG_CSTEPS _UxGT("Cpassi/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xpassi/mm")
- #define MSG_BSTEPS _UxGT("Ypassi/mm")
- #define MSG_CSTEPS _UxGT("Zpassi/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Epassi/mm")
-#define MSG_E0_STEPS _UxGT("E1passi/mm")
-#define MSG_E1_STEPS _UxGT("E2passi/mm")
-#define MSG_E2_STEPS _UxGT("E3passi/mm")
-#define MSG_E3_STEPS _UxGT("E4passi/mm")
-#define MSG_E4_STEPS _UxGT("E5passi/mm")
-#define MSG_E5_STEPS _UxGT("E6passi/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movimento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm³")
-#define MSG_FILAMENT_DIAM _UxGT("Diam. filo")
-#define MSG_FILAMENT_UNLOAD _UxGT("Rimuovi mm")
-#define MSG_FILAMENT_LOAD _UxGT("Carica mm")
-#define MSG_ADVANCE_K _UxGT("K Avanzamento")
-#define MSG_CONTRAST _UxGT("Contrasto LCD")
-#define MSG_STORE_EEPROM _UxGT("Salva impostazioni")
-#define MSG_LOAD_EEPROM _UxGT("Carica impostazioni")
-#define MSG_RESTORE_FAILSAFE _UxGT("Ripristina imp.")
-#define MSG_INIT_EEPROM _UxGT("Inizializza EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Aggiorna media")
-#define MSG_RESET_PRINTER _UxGT("Resetta stampante")
-#define MSG_REFRESH _UxGT("Aggiorna")
-#define MSG_WATCH _UxGT("Schermata info")
-#define MSG_PREPARE _UxGT("Prepara")
-#define MSG_TUNE _UxGT("Regola")
-#define MSG_START_PRINT _UxGT("Avvia stampa")
-#define MSG_BUTTON_NEXT _UxGT("Prossimo")
-#define MSG_BUTTON_INIT _UxGT("Inizializza")
-#define MSG_BUTTON_STOP _UxGT("Stop")
-#define MSG_BUTTON_PRINT _UxGT("Stampa")
-#define MSG_BUTTON_RESET _UxGT("Resetta")
-#define MSG_BUTTON_CANCEL _UxGT("Annulla")
-#define MSG_BUTTON_DONE _UxGT("Fatto")
-#define MSG_PAUSE_PRINT _UxGT("Pausa stampa")
-#define MSG_RESUME_PRINT _UxGT("Riprendi stampa")
-#define MSG_STOP_PRINT _UxGT("Arresta stampa")
-#define MSG_OUTAGE_RECOVERY _UxGT("Ripresa da PowerLoss")
-#define MSG_MEDIA_MENU _UxGT("Stampa da media")
-#define MSG_NO_MEDIA _UxGT("Media non presente")
-#define MSG_DWELL _UxGT("Sospensione...")
-#define MSG_USERWAIT _UxGT("Premi tasto..")
-#define MSG_PRINT_PAUSED _UxGT("Stampa sospesa")
-#define MSG_PRINTING _UxGT("Stampa...")
-#define MSG_PRINT_ABORTED _UxGT("Stampa annullata")
-#define MSG_NO_MOVE _UxGT("Nessun Movimento")
-#define MSG_KILLED _UxGT("UCCISO. ")
-#define MSG_STOPPED _UxGT("ARRESTATO. ")
-#define MSG_CONTROL_RETRACT _UxGT("Ritrai mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Scamb. Ritrai mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Ritrai V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Salta mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Scamb. UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("AutoRitrai")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Dist. ritrazione")
-#define MSG_FILAMENT_PURGE_LENGTH _UxGT("Lunghezza spurgo")
-#define MSG_TOOL_CHANGE _UxGT("Cambio utensile")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Risalita Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Velocità innesco")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Velocità retrazione")
-#define MSG_NOZZLE_STANDBY _UxGT("Standby ugello")
-#define MSG_FILAMENTCHANGE _UxGT("Cambia filamento")
-#define MSG_FILAMENTLOAD _UxGT("Carica filamento")
-#define MSG_FILAMENTUNLOAD _UxGT("Rimuovi filamento")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Rimuovi tutto")
-#define MSG_INIT_MEDIA _UxGT("Inizializ. media")
-#define MSG_CHANGE_MEDIA _UxGT("Cambia media")
-#define MSG_RELEASE_MEDIA _UxGT("Rilascia media")
-#define MSG_ZPROBE_OUT _UxGT("Z probe fuori piatto")
-#define MSG_SKEW_FACTOR _UxGT("Fattore distorsione")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Autotest BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("Resetta BLTouch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Estendi BLTouch")
-#define MSG_BLTOUCH_SW_MODE _UxGT("BLTouch modo SW")
-#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch modo 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch modo OD")
-#define MSG_BLTOUCH_MODE_STORE _UxGT("BLTouch modo mem.")
-#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Metti BLTouch a 5V")
-#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Metti BLTouch a OD")
-#define MSG_BLTOUCH_MODE_ECHO _UxGT("Segnala modo")
-#define MSG_BLTOUCH_MODE_CHANGE _UxGT("PERICOLO: Impostazioni errate possono cause danni! Procedo comunque?")
-#define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#define MSG_TOUCHMI_INIT _UxGT("Inizializ.TouchMI")
-#define MSG_TOUCHMI_ZTEST _UxGT("Test Z offset")
-#define MSG_TOUCHMI_SAVE _UxGT("Memorizzare")
-#define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("Estendi TouchMI")
-#define MSG_MANUAL_DEPLOY _UxGT("Estendi Sonda-Z")
-#define MSG_BLTOUCH_STOW _UxGT("Ritrai BLTouch")
-#define MSG_MANUAL_STOW _UxGT("Ritrai Sonda-Z")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s prima")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Offset sonda Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Totali")
-#define MSG_ENDSTOP_ABORT _UxGT("Finecorsa annullati")
-#define MSG_HEATING_FAILED_LCD _UxGT("Riscald. Fallito")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Risc. piatto fallito")
-#define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Risc. camera fallito")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: TEMP RIDONDANTE")
-#define MSG_THERMAL_RUNAWAY _UxGT("TEMP FUORI CONTROLLO")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("TEMP PIAT.FUORI CTRL")
-#define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("T.CAMERA FUORI CTRL")
-#define MSG_ERR_MAXTEMP _UxGT("Err: TEMP MASSIMA")
-#define MSG_ERR_MINTEMP _UxGT("Err: TEMP MINIMA")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err: TEMP MAX PIATTO")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err: TEMP MIN PIATTO")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err: TEMP MAX CAMERA")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err: TEMP MIN CAMERA")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY prima")
-#define MSG_HALTED _UxGT("STAMPANTE FERMATA")
-#define MSG_PLEASE_RESET _UxGT("Riavviare prego")
-#define MSG_SHORT_DAY _UxGT("g") // Un solo carattere
-#define MSG_SHORT_HOUR _UxGT("h") // Un solo carattere
-#define MSG_SHORT_MINUTE _UxGT("m") // Un solo carattere
-#define MSG_HEATING _UxGT("Riscaldamento...")
-#define MSG_COOLING _UxGT("Raffreddamento..")
-#define MSG_BED_HEATING _UxGT("Risc. piatto...")
-#define MSG_BED_COOLING _UxGT("Raffr. piatto...")
-#define MSG_CHAMBER_HEATING _UxGT("Risc. camera...")
-#define MSG_CHAMBER_COOLING _UxGT("Raffr. camera...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibraz. Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibra X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibra Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibra Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibra centro")
-#define MSG_DELTA_SETTINGS _UxGT("Impostaz. Delta")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto calibrazione")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Imp. altezza Delta")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Offset sonda-Z")
-#define MSG_DELTA_DIAG_ROD _UxGT("Barra Diagonale")
-#define MSG_DELTA_HEIGHT _UxGT("Altezza")
-#define MSG_DELTA_RADIUS _UxGT("Raggio")
-#define MSG_INFO_MENU _UxGT("Riguardo stampante")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info. stampante")
-#define MSG_3POINT_LEVELING _UxGT("Livel. a 3 punti")
-#define MSG_LINEAR_LEVELING _UxGT("Livel. Lineare")
-#define MSG_BILINEAR_LEVELING _UxGT("Livel. Bilineare")
-#define MSG_UBL_LEVELING _UxGT("Livel.piatto unific.")
-#define MSG_MESH_LEVELING _UxGT("Livel. Mesh")
-#define MSG_INFO_STATS_MENU _UxGT("Statistiche")
-#define MSG_INFO_BOARD_MENU _UxGT("Info. scheda")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistori")
-#define MSG_INFO_EXTRUDERS _UxGT("Estrusori")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_PROTOCOL _UxGT("Protocollo")
-#define MSG_INFO_RUNAWAY_OFF _UxGT("Controllo fuga: OFF")
-#define MSG_INFO_RUNAWAY_ON _UxGT("Controllo fuga: ON")
-#define MSG_CASE_LIGHT _UxGT("Luci Case")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Luminosità Luci")
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Contat. stampa")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completati")
- #define MSG_INFO_PRINT_TIME _UxGT("Tempo totale")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Lavoro più lungo")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Totale estruso")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Stampe")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completati")
- #define MSG_INFO_PRINT_TIME _UxGT("Durata")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Più lungo")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Estruso")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Temp min")
-#define MSG_INFO_MAX_TEMP _UxGT("Temp max")
-#define MSG_INFO_PSU _UxGT("Alimentatore")
-#define MSG_DRIVE_STRENGTH _UxGT("Potenza Drive")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_ERROR_TMC _UxGT("ERR.CONNESSIONE TMC")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CAMBIO FILAMENTO")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("STAMPA IN PAUSA")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("CARICA FILAMENTO")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("RIMUOVI FILAMENTO")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPZIONI RIPRESA:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Spurga di più")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Ugello: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Sens.filo termin.") // Max 17 caratteri
-#define MSG_RUNOUT_DISTANCE_MM _UxGT("Dist mm filo term.")
-#define MSG_ERR_HOMING_FAILED _UxGT("Home fallito")
-#define MSG_ERR_PROBING_FAILED _UxGT("Sondaggio fallito")
-#define MSG_M600_TOO_COLD _UxGT("M600:Troppo freddo")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" pronto.");
+ PROGMEM Language_Str MSG_YES = _UxGT("SI");
+ PROGMEM Language_Str MSG_NO = _UxGT("NO");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Indietro");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Annullando...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Media inserito");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Media rimosso");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("Media rilasciato");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Aspettando media");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Err.leggendo media");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("Dispos.USB rimosso");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Avvio USB fallito");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Finecor."); // Max 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Finecorsa Soft");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu principale");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Impostaz. avanzate");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Configurazione");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Disabilita Motori");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menu di debug");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test barra avanzam.");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Auto Home");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Home asse X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home asse Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home asse Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Allineam.automat. Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Home assi XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Premi per iniziare");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Punto successivo");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Livel. terminato!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Fade Height");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Imp. offset home");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset applicato");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Imposta Origine");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Preriscalda ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Ugello ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Tutto");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" Piatto");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Preriscalda ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Preriscalda ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Ugello ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Tutto");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" Piatto");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Preris.") PREHEAT_2_LABEL _UxGT(" conf");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Prerisc.personal.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Raffredda");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Controllo laser");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Laser Off");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Laser On");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Potenza laser");
+ PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Controllo mandrino");
+ PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Mandrino Off");
+ PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Mandrino On");
+ PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Potenza mandrino");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Inverti mandrino");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Accendi aliment.");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Spegni aliment.");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Estrudi");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Ritrai");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Muovi Asse");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Livella piano");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Livella piano");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Livella spigoli");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Prossimo spigolo");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Editor Mesh");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Modifica Mesh");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Modif. Mesh Fermata");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Punto sondato");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Indice X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Indice Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Valore di Z");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Comandi personaliz.");
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Punto inclinaz.");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("Test sonda M48");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("Punto M48");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Deviazione");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Modo IDEX");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Strumenti Offsets");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicazione");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia speculare");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pieno controllo");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2° ugello X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2° ugello Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2° ugello Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("G29 in corso");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Strumenti UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Unified Bed Leveling");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Mesh Manuale");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Metti spes. e misura");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Misura");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Rimuovi e mis.piatto");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Spostamento succes.");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Attiva UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Disattiva UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Piatto");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. Piatto");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Ugello");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. Ugello");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Modifica Mesh");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif.Mesh personal.");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Ritocca Mesh");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Modif.Mesh fatta");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crea Mesh personal.");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Crea Mesh");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Crea Mesh ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Crea Mesh ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Crea Mesh a freddo");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Aggiusta Alt. Mesh");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altezza");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valida Mesh");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Valida Mesh ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Valida Mesh ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 riscald.letto");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 riscald.ugello");
+ PROGMEM Language_Str MSG_G26_MANUAL_PRIME = _UxGT("Priming manuale...");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Prime a lung.fissa");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Priming terminato");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 Annullato");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("Uscita da G26");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valida Mesh pers.");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Continua Mesh");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Livell. Mesh");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Livell. 3 Punti");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Livell. Griglia Mesh");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Livella Mesh");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Punti laterali");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Tipo di Mappa");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Esporta Mappa");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Esporta per Host");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Esporta in CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Backup esterno");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Esporta Info UBL");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Riempimento");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Riempimento Manuale");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Riempimento Smart");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Riempimento Mesh");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Invalida Tutto");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalid.Punto Vicino");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Ritocca All");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ritocca Punto Vicino");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Salvate");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Slot di memoria");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Carica Mesh Piatto");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Salva Mesh Piatto");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Mesh %i caricata");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Mesh %i salvata");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Nessuna memoria");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Err: Salvataggio UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ripristino UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset Fermato");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo passo");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crea Mesh a freddo");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Riempimento Smart");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valida Mesh");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ritocca All");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valida Mesh");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ritocca All");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Salva Mesh Piatto");
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("CAMBIO FILAMENTO")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("SCELTA FILAMENTO")
-#define MSG_MMU2_MENU _UxGT("MMU")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("Agg.firmware MMU!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU chiede attenz.")
-#define MSG_MMU2_RESUME _UxGT("Riprendi stampa")
-#define MSG_MMU2_RESUMING _UxGT("Ripresa...")
-#define MSG_MMU2_LOAD_FILAMENT _UxGT("Carica filamento")
-#define MSG_MMU2_LOAD_ALL _UxGT("Carica tutto")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Carica fino ugello")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Espelli filamento")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Espelli filam.1")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Espelli filam.2")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Espelli filam.3")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Espelli filam.4")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Espelli filam.5")
-#define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Scarica filamento")
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Caric.fil. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Esplus.filam. ...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Scaric.filam. ...")
-#define MSG_MMU2_ALL _UxGT("Tutto")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filamento 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filamento 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filamento 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filamento 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filamento 5")
-#define MSG_MMU2_RESET _UxGT("Azzera MMU")
-#define MSG_MMU2_RESETTING _UxGT("Azzeramento MMU...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Rimuovi, click")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Controllo LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Luci");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Preset luce");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Rosso");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Arancione");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Giallo");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Verde");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Blu");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indaco");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Viola");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Bianco");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Predefinito");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Luci personalizzate");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intensità rosso");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intensità verde");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intensità blu");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intensità bianco");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Luminosità");
-#define MSG_MIX _UxGT("Miscela")
-#define MSG_MIX_COMPONENT _UxGT("Componente")
-#define MSG_MIXER _UxGT("Miscelatore")
-#define MSG_GRADIENT _UxGT("Gradiente")
-#define MSG_FULL_GRADIENT _UxGT("Gradiente pieno")
-#define MSG_TOGGLE_MIX _UxGT("Alterna miscela")
-#define MSG_CYCLE_MIX _UxGT("Ciclo miscela")
-#define MSG_GRADIENT_MIX _UxGT("Miscela gradiente")
-#define MSG_REVERSE_GRADIENT _UxGT("Inverti gradiente")
-#define MSG_ACTIVE_VTOOL _UxGT("V-tool attivo")
-#define MSG_START_VTOOL _UxGT("V-tool iniziale")
-#define MSG_END_VTOOL _UxGT("V-tool finale")
-#define MSG_GRADIENT_ALIAS _UxGT("V-tool alias")
-#define MSG_RESET_VTOOLS _UxGT("Ripristina V-tools")
-#define MSG_COMMIT_VTOOL _UxGT("Commit mix V-tool")
-#define MSG_VTOOLS_RESET _UxGT("V-tools ripristin.")
-#define MSG_START_Z _UxGT("Z inizio")
-#define MSG_END_Z _UxGT("Z fine")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("In movimento...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("XY liberi");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Muovi X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Muovi Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Muovi Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Estrusore");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Estrusore ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Estrusore ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Estrusore ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Estrusore ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Estrusore ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Estrusore ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Ugello freddo");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Muovi di %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Muovi di 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Muovi di 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Muovi di 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocità");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Piatto Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Ugello");
+ PROGMEM Language_Str MSG_NOZZLE_E0 = _UxGT("Ugello ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_NOZZLE_E1 = _UxGT("Ugello ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_NOZZLE_E2 = _UxGT("Ugello ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_NOZZLE_E3 = _UxGT("Ugello ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_NOZZLE_E4 = _UxGT("Ugello ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_NOZZLE_E5 = _UxGT("Ugello ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Piatto");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Camera");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Max 15 characters
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Vel. ventola 1"); // Max 15 characters
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Vel. ventola 2"); // Max 15 characters
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Vel. ventola 3"); // Max 15 characters
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Max 15 characters
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flusso");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flusso ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flusso ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flusso ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flusso ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flusso ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flusso ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Controllo");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autotemp");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("On");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Off");
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Seleziona");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Seleziona ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Seleziona ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Seleziona ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Seleziona ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Seleziona ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Seleziona ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Accel");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Jerk");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-jerk");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-jerk");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-jerk");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-jerk");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Deviaz. giunzioni");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Velocità");
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vmin");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VTrav min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Accelerazione");
+ PROGMEM Language_Str MSG_AMAX = _UxGT("Amax ");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-Ritrazione");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-Spostamento");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Passi/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Epassi/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("passi/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movimento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Diam. filo");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Diam. filo ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Diam. filo ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Diam. filo ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Diam. filo ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Diam. filo ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Diam. filo ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Rimuovi mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Carica mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K Avanzamento");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K Avanzamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K Avanzamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K Avanzamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K Avanzamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K Avanzamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K Avanzamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contrasto LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Salva impostazioni");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carica impostazioni");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Ripristina imp.");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aggiorna media");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetta stampante");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aggiorna");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Schermata info");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Prepara");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Regola");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Avvia stampa");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Prossimo");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Inizializza");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Stop");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Stampa");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Resetta");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Annulla");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Fatto");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausa stampa");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Riprendi stampa");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Arresta stampa");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Ripresa da PowerLoss");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Stampa da media");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Media non presente");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Sospensione...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Premi tasto..");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Stampa sospesa");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Stampa...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Stampa annullata");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Nessun Movimento");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("UCCISO. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ARRESTATO. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Ritrai mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Scamb. Ritrai mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Ritrai V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Salta mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Scamb. UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRitrai");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Dist. ritrazione");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Lunghezza spurgo");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Cambio utensile");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Risalita Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Velocità innesco");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Velocità retrazione");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Standby ugello");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Cambia filamento");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Cambia filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Cambia filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Cambia filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Cambia filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Cambia filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Cambia filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Carica filamento");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Carica filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Carica filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Carica filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Carica filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Carica filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Carica filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD = _UxGT("Rimuovi filamento");
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Rimuovi filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Rimuovi filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Rimuovi filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Rimuovi filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Rimuovi filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Rimuovi filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Rimuovi tutto");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Inizializ. media");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Cambia media");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Rilascia media");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z probe fuori piatto");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Fattore distorsione");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Autotest BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Resetta BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Estendi BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("BLTouch modo SW");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch modo 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch modo OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("BLTouch modo mem.");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Metti BLTouch a 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Metti BLTouch a OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Segnala modo");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("PERICOLO: Impostazioni errate possono cause danni! Procedo comunque?");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Inizializ.TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Test Z offset");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Memorizzare");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estendi TouchMI");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Estendi Sonda-Z");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Ritrai BLTouch");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Ritrai Sonda-Z");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s prima");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Offset sonda Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Totali");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Finecorsa annullati");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Riscald. Fallito");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Risc. piatto fallito");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_CHAMBER = _UxGT("Risc. camera fallito");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP RIDONDANTE");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("TEMP FUORI CONTROLLO");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("TEMP PIAT.FUORI CTRL");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("T.CAMERA FUORI CTRL");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MASSIMA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err: TEMP MAX PIATTO");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err: TEMP MIN PIATTO");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Err: TEMP MAX CAMERA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Err: TEMP MIN CAMERA");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY prima");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("STAMPANTE FERMATA");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Riavviare prego");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("g"); // Un solo carattere
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // Un solo carattere
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // Un solo carattere
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Riscaldamento...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Raffreddamento..");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Risc. piatto...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Raffr. piatto...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Risc. camera...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Raffr. camera...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibraz. Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra centro");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Impostaz. Delta");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto calibrazione");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Imp. altezza Delta");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Offset sonda-Z");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonale");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Altezza");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Raggio");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Riguardo stampante");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info. stampante");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Livel. a 3 punti");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Livel. Lineare");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Livel. Bilineare");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Livel.piatto unific.");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Livel. Mesh");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statistiche");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info. scheda");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Estrusori");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocollo");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_OFF = _UxGT("Controllo fuga: OFF");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_ON = _UxGT("Controllo fuga: ON");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Luci Case");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosità Luci");
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Contat. stampa");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completati");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tempo totale");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Lavoro più lungo");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Totale estruso");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Stampe");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Completati");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Durata");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Più lungo");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Estruso");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temp min");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temp max");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Alimentatore");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Potenza Drive");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("ERR.CONNESSIONE TMC");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Scrivi DAC EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIO FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("STAMPA IN PAUSA");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARICA FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("RIMUOVI FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPZIONI RIPRESA:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Spurga di più");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Riprendi stampa");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Ugello: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Sens.filo termin."); // Max 17 characters
+ PROGMEM Language_Str MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm filo term.");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Home fallito");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Sondaggio fallito");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600:Troppo freddo");
-#define MSG_GAMES _UxGT("Giochi")
-#define MSG_BRICKOUT _UxGT("Brickout")
-#define MSG_INVADERS _UxGT("Invaders")
-#define MSG_SNAKE _UxGT("Sn4k3")
-#define MSG_MAZE _UxGT("Maze")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("SCELTA FILAMENTO");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("Agg.firmware MMU!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU chiede attenz.");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Riprendi stampa");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Ripresa...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Carica filamento");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Carica tutto");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Carica fino ugello");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Espelli filamento");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Espelli filam.1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Espelli filam.2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Espelli filam.3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Espelli filam.4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Espelli filam.5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Scarica filamento");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Caric.fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Esplus.filam. ...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Scaric.filam. ...");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Tutto");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filamento 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filamento 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filamento 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filamento 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filamento 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Azzera MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Azzeramento MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Rimuovi, click");
-#define MSG_EXPECTED_PRINTER _UxGT("Stampante errata")
+ PROGMEM Language_Str MSG_MIX = _UxGT("Miscela");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Componente 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Componente 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Componente 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Componente 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Componente 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Componente 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Miscelatore");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradiente");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Gradiente pieno");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Alterna miscela");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Ciclo miscela");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Miscela gradiente");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Inverti gradiente");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("V-tool attivo");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("V-tool iniziale");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT("V-tool finale");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("V-tool alias");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Ripristina V-tools");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Commit mix V-tool");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-tools ripristin.");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Z inizio:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT("Z fine:");
-//
-// Le schermate di Cambio Filamento possono visualizzare fino a 3 linee su un display a 4 righe
-// ...o fino a 2 linee su un display a 3 righe.
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Premi per")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("riprendere")
- #define MSG_ADVANCED_PAUSE_WAITING_3 _UxGT("la stampa")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parcheggiando...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attendere avvio")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("del cambio")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("di filamento")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserisci il")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("filamento e premi")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("per continuare")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Premi per")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("riscaldare ugello")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Riscaldam. ugello")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Attendere prego...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Attendere")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("l'espulsione")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("del filamento")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Attendere")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("il caricamento")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("del filamento")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Attendere")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("lo spurgo")
- #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("del filamento")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Premi x terminare")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("lo spurgo")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_3 _UxGT("del filamento")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Attendere")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("la ripresa")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("della stampa...")
-#else // LCD_HEIGHT < 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Premi x continuare")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attendere...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserisci e premi")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Riscalda ugello")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Riscaldamento...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Espulsione...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Caricamento...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Spurgo filamento")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Premi x terminare")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Ripresa...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Giochi");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Brickout");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Invaders");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Sn4k3");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Maze");
-#define MSG_TMC_DRIVERS _UxGT("Drivers TMC")
-#define MSG_TMC_CURRENT _UxGT("Driver in uso")
-#define MSG_TMC_HYBRID_THRS _UxGT("Soglia modo ibrido")
-#define MSG_TMC_HOMING_THRS _UxGT("Azzer. sensorless")
-#define MSG_TMC_STEPPING_MODE _UxGT("Modo stepping")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop abil.")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Stampante errata");
-#define MSG_SERVICE_RESET _UxGT("Resetta")
-#define MSG_SERVICE_IN _UxGT(" tra:")
+ //
+ // Le schermate di Cambio Filamento possono visualizzare fino a 3 linee su un display a 4 righe
+ // ...o fino a 2 linee su un display a 3 righe.
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parcheggiando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Riscaldam. ugello", "Attendere prego..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Attendere", "l'espulsione", "del filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Attendere", "il caricamento", "del filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Attendere", "lo spurgo", "del filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Premi x terminare", "lo spurgo", "del filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Attendere", "la ripresa", "della stampa..."));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premi x continuare"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Attendere..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserisci e premi"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Riscalda ugello"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Riscaldamento..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Espulsione..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Caricamento..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spurgo filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Premi x terminare"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Ripresa..."));
+ #endif // LCD_HEIGHT < 4
-#define MSG_BACKLASH _UxGT("Gioco")
-#define MSG_BACKLASH_CORRECTION _UxGT("Correzione")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Smoothing")
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Drivers TMC");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Driver in uso");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Soglia modo ibrido");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Azzer. sensorless");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Modo stepping");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop abil.");
+
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Resetta");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" tra:");
+
+ PROGMEM Language_Str MSG_BACKLASH = _UxGT("Gioco");
+ PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
+ PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
+ PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Correzione");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing");
+}
diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h
index 00403054db..d9538c5251 100644
--- a/Marlin/src/lcd/language/language_jp_kana.h
+++ b/Marlin/src/lcd/language/language_jp_kana.h
@@ -31,224 +31,284 @@
*/
//#define DISPLAY_CHARSET_ISO10646_KANA
-#define CHARSIZE 3
-// This just to show the potential benefit of unicode.
-// This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF.
+namespace Language_jp_kana {
+ using namespace Language_en; // Inherit undefined strings from English
-// 片仮名表示定義
-#define WELCOME_MSG MACHINE_NAME _UxGT(" ジュンビカンリョウ")
-#define MSG_MEDIA_INSERTED _UxGT("メディアガソウニュウサレマシタ") // "Card inserted"
-#define MSG_MEDIA_REMOVED _UxGT("メディアガアリマセン") // "Card removed"
-#define MSG_RELEASE_MEDIA _UxGT("メディアノトリダシ")
-#define MSG_MEDIA_RELEASED _UxGT("メディアガアリマセン")
-#define MSG_LCD_ENDSTOPS _UxGT("エンドストップ") // "Endstops" // Max length 8 characters
-#define MSG_MAIN _UxGT("メイン") // "Main"
-#define MSG_AUTOSTART _UxGT("ジドウカイシ") // "Autostart"
-#define MSG_DISABLE_STEPPERS _UxGT("モーターデンゲン オフ") // "Disable steppers"
-#define MSG_DEBUG_MENU _UxGT("デバッグメニュー") // "Debug Menu"
-#define MSG_PROGRESS_BAR_TEST _UxGT("プログレスバー テスト") // "Progress Bar Test"
-#define MSG_AUTO_HOME _UxGT("ゲンテンフッキ") // "Auto home"
-#define MSG_AUTO_HOME_X _UxGT("Xジク ゲンテンフッキ") // "Home X"
-#define MSG_AUTO_HOME_Y _UxGT("Yジク ゲンテンフッキ") // "Home Y"
-#define MSG_AUTO_HOME_Z _UxGT("Zジク ゲンテンフッキ") // "Home Z"
-#define MSG_LEVEL_BED_HOMING _UxGT("ゲンテンフッキチュウ") // "Homing XYZ"
-#define MSG_LEVEL_BED_WAITING _UxGT("レベリングカイシ") // "Click to Begin"
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("ツギノソクテイテンヘ") // "Next Point"
-#define MSG_LEVEL_BED_DONE _UxGT("レベリングカンリョウ") // "Leveling Done!"
-#define MSG_SET_HOME_OFFSETS _UxGT("キジュンオフセットセッテイ") // "Set home offsets"
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("オフセットガテキヨウサレマシタ") // "Offsets applied"
-#define MSG_SET_ORIGIN _UxGT("キジュンセット") // "Set origin"
-#define MSG_PREHEAT_1 _UxGT(PREHEAT_1_LABEL " ヨネツ") // "Preheat " PREHEAT_1_LABEL
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL _UxGT(PREHEAT_1_LABEL " スベテヨネツ") // " All"
-#define MSG_PREHEAT_1_BEDONLY _UxGT(PREHEAT_1_LABEL " ベッドヨネツ") // " Bed"
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT("セッテイ") // " conf"
-#define MSG_PREHEAT_2 _UxGT(PREHEAT_2_LABEL " ヨネツ") // "Preheat " PREHEAT_2_LABEL
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL _UxGT(PREHEAT_2_LABEL " スベテヨネツ") // " All"
-#define MSG_PREHEAT_2_BEDONLY _UxGT(PREHEAT_2_LABEL " ベッドヨネツ") // " Bed"
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT("セッテイ") // " conf"
-#define MSG_COOLDOWN _UxGT("カネツテイシ") // "Cooldown"
-#define MSG_SWITCH_PS_ON _UxGT("デンゲン オン") // "Switch power on"
-#define MSG_SWITCH_PS_OFF _UxGT("デンゲン オフ") // "Switch power off"
-#define MSG_EXTRUDE _UxGT("オシダシ") // "Extrude"
-#define MSG_RETRACT _UxGT("ヒキコミセッテイ") // "Retract"
-#define MSG_MOVE_AXIS _UxGT("ジクイドウ") // "Move axis"
-#define MSG_BED_LEVELING _UxGT("ベッドレベリング") // "Bed leveling"
-#define MSG_LEVEL_BED _UxGT("ベッドレベリング") // "Level bed"
+ constexpr uint8_t CHARSIZE = 3;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Japanese");
-#define MSG_MOVING _UxGT("イドウチュウ") // "Moving..."
-#define MSG_FREE_XY _UxGT("XYジク カイホウ") // "Free XY"
-#define MSG_MOVE_X _UxGT("Xジク イドウ") // "Move X"
-#define MSG_MOVE_Y _UxGT("Yジク イドウ") // "Move Y"
-#define MSG_MOVE_Z _UxGT("Zジク イドウ") // "Move Z"
-#define MSG_MOVE_E _UxGT("エクストルーダー") // "Extruder"
-#define MSG_MOVE_Z_DIST _UxGT("%smm イドウ") // "Move 0.025mm"
-#define MSG_MOVE_01MM _UxGT("0.1mm イドウ") // "Move 0.1mm"
-#define MSG_MOVE_1MM _UxGT(" 1mm イドウ") // "Move 1mm"
-#define MSG_MOVE_10MM _UxGT(" 10mm イドウ") // "Move 10mm"
-#define MSG_SPEED _UxGT("ソクド") // "Speed"
-#define MSG_BED_Z _UxGT("Zオフセット") // "Bed Z"
-#define MSG_NOZZLE _UxGT("ノズル") // "Nozzle"
-#define MSG_BED _UxGT("ベッド") // "Bed"
-#define MSG_FAN_SPEED _UxGT("ファンソクド") // "Fan speed"
-#define MSG_FLOW _UxGT("トシュツリョウ") // "Flow"
-#define MSG_CONTROL _UxGT("セイギョ") // "Control"
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" サイテイ") // " Min"
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" サイコウ") // " Max"
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" ファクター") // " Fact"
-#define MSG_AUTOTEMP _UxGT("ジドウオンドセイギョ") // "Autotemp"
-#define MSG_LCD_ON _UxGT("オン") // "On"
-#define MSG_LCD_OFF _UxGT("オフ") // "Off"
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("センタク") // "Select"
-#define MSG_ACC _UxGT("カソクド mm/s²") // "Accel"
-#define MSG_JERK _UxGT("ヤクドウ mm/s") // "Jerk"
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Aジク ヤクドウ mm/s") // "Va-jerk"
- #define MSG_VB_JERK _UxGT("Bジク ヤクドウ mm/s") // "Vb-jerk"
- #define MSG_VC_JERK _UxGT("Cジク ヤクドウ mm/s") // "Vc-jerk"
- #define MSG_ASTEPS _UxGT("Aステップ/mm")
- #define MSG_BSTEPS _UxGT("Bステップ/mm")
- #define MSG_CSTEPS _UxGT("Cステップ/mm")
-#else
- #define MSG_VA_JERK _UxGT("Xジク ヤクドウ mm/s") // "Vx-jerk"
- #define MSG_VB_JERK _UxGT("Yジク ヤクドウ mm/s") // "Vy-jerk"
- #define MSG_VC_JERK _UxGT("Zジク ヤクドウ mm/s") // "Vz-jerk"
- #define MSG_ASTEPS _UxGT("Xステップ/mm")
- #define MSG_BSTEPS _UxGT("Yステップ/mm")
- #define MSG_CSTEPS _UxGT("Zステップ/mm")
-#endif
-#define MSG_VE_JERK _UxGT("エクストルーダー ヤクド") // "Ve-jerk"
-#define MSG_VMAX _UxGT("サイダイオクリソクド ") // "Vmax "
-#define MSG_VMIN _UxGT("サイショウオクリソクド") // "Vmin"
-#define MSG_VTRAV_MIN _UxGT("サイショウイドウソクド") // "VTrav min"
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("サイダイカソクド ") // "Amax "
-#define MSG_A_RETRACT _UxGT("ヒキコミカソクド") // "A-retract"
-#define MSG_A_TRAVEL _UxGT("イドウカソクド") // "A-travel"
-#define MSG_TEMPERATURE _UxGT("オンド") // "Temperature"
-#define MSG_MOTION _UxGT("ウゴキセッテイ") // "Motion"
-#define MSG_FILAMENT _UxGT("フィラメント") // "Filament"
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm³")
-#define MSG_FILAMENT_DIAM _UxGT("フィラメントチョッケイ") // "Fil. Dia."
-#define MSG_CONTRAST _UxGT("LCDコントラスト") // "LCD contrast"
-#define MSG_STORE_EEPROM _UxGT("EEPROMヘホゾン") // "Store memory"
-#define MSG_LOAD_EEPROM _UxGT("EEPROMカラヨミコミ") // "Load memory"
-#define MSG_RESTORE_FAILSAFE _UxGT("セッテイリセット") // "Restore failsafe"
-#define MSG_REFRESH _UxGT("リフレッシュ") // "Refresh"
-#define MSG_WATCH _UxGT("ジョウホウガメン") // "Info screen"
-#define MSG_PREPARE _UxGT("ジュンビセッテイ") // "Prepare"
-#define MSG_TUNE _UxGT("チョウセイ") // "Tune"
-#define MSG_PAUSE_PRINT _UxGT("イチジテイシ") // "Pause print"
-#define MSG_RESUME_PRINT _UxGT("プリントサイカイ") // "Resume print"
-#define MSG_STOP_PRINT _UxGT("プリントテイシ") // "Stop print"
-#define MSG_MEDIA_MENU _UxGT("メディアカラプリント") // "Print from SD"
-#define MSG_NO_MEDIA _UxGT("メディアガアリマセン") // "No SD card"
-#define MSG_DWELL _UxGT("キュウシ") // "Sleep..."
-#define MSG_USERWAIT _UxGT("シバラクオマチクダサイ") // "Wait for user..."
-//#define MSG_USERWAIT _UxGT("ツヅケルニハクリックシテクダサイ")
-#define MSG_PRINT_ABORTED _UxGT("プリントガチュウシサレマシタ") // "Print aborted"
-#define MSG_NO_MOVE _UxGT("ウゴキマセン") // "No move."
-#define MSG_KILLED _UxGT("ヒジョウテイシ") // "KILLED. "
-#define MSG_STOPPED _UxGT("テイシシマシタ") // "STOPPED. "
-#define MSG_CONTROL_RETRACT _UxGT("ヒキコミリョウ mm") // "Retract mm"
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("ヒキコミリョウS mm") // "Swap Re.mm"
-#define MSG_CONTROL_RETRACTF _UxGT("ヒキコミソクド mm/s") // "Retract V"
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("ノズルタイヒ mm") // "Hop mm"
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("ホショウリョウ mm") // "UnRet mm"
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("ホショウリョウS mm") // "S UnRet mm"
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("ホショウソクド mm/s") // "UnRet V"
-#define MSG_AUTORETRACT _UxGT("ジドウヒキコミ") // "AutoRetr."
-#define MSG_FILAMENTCHANGE _UxGT("フィラメントコウカン") // "Change filament"
-#define MSG_INIT_MEDIA _UxGT("メディアサイヨミコミ") // "Init. SD card"
-#define MSG_CHANGE_MEDIA _UxGT("メディアコウカン") // "Change SD card"
-#define MSG_ZPROBE_OUT _UxGT("Zプローブ ベッドガイ") // "Z probe out. bed"
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch ジコシンダン") // "BLTouch Self-Test"
-#define MSG_BLTOUCH_RESET _UxGT("BLTouch リセット") // "Reset BLTouch"
-#define MSG_HOME_FIRST _UxGT("サキニ %s%s%s ヲフッキサセテクダサイ") // "Home ... first"
-#define MSG_ZPROBE_ZOFFSET _UxGT("Zオフセット") // "Z Offset"
-#define MSG_BABYSTEP_X _UxGT("Xジク ビドウ") // "Babystep X"
-#define MSG_BABYSTEP_Y _UxGT("Yジク ビドウ") // "Babystep Y"
-#define MSG_BABYSTEP_Z _UxGT("Zジク ビドウ") // "Babystep Z"
-#define MSG_ENDSTOP_ABORT _UxGT("イドウゲンカイケンチキノウ") // "Endstop abort"
-#define MSG_HEATING_FAILED_LCD _UxGT("カネツシッパイ") // "Heating failed"
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("エラー:ジョウチョウサーミスターキノウ") // "Err: REDUNDANT TEMP"
-#define MSG_THERMAL_RUNAWAY _UxGT("ネツボウソウ") // "THERMAL RUNAWAY"
-#define MSG_ERR_MAXTEMP _UxGT("エラー:サイコウオンチョウカ") // "Err: MAXTEMP"
-#define MSG_ERR_MINTEMP _UxGT("エラー:サイテイオンミマン") // "Err: MINTEMP"
-#define MSG_ERR_MAXTEMP_BED _UxGT("エラー:ベッド サイコウオンチョウカ") // "Err: MAXTEMP BED"
-#define MSG_ERR_MINTEMP_BED _UxGT("エラー:ベッド サイテイオンミマン") // "Err: MINTEMP BED"
-#define MSG_ERR_Z_HOMING _UxGT("サキニ XY ヲフッキサセテクダサイ") // "Home XY first"
-#define MSG_HALTED _UxGT("プリンターハテイシシマシタ") // "PRINTER HALTED"
-#define MSG_PLEASE_RESET _UxGT("リセットシテクダサイ") // "Please reset"
-#define MSG_SHORT_DAY _UxGT("d") // One character only
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("カネツチュウ") // "Heating..."
-#define MSG_BED_HEATING _UxGT("ベッド カネツチュウ") // "Bed Heating..."
-#define MSG_DELTA_CALIBRATE _UxGT("デルタ コウセイ") // "Delta Calibration"
-#define MSG_DELTA_CALIBRATE_X _UxGT("Xジク コウセイ") // "Calibrate X"
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Yジク コウセイ") // "Calibrate Y"
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Zジク コウセイ") // "Calibrate Z"
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("チュウシン コウセイ") // "Calibrate Center"
-#define MSG_INFO_MENU _UxGT("コノプリンターニツイテ") // "About Printer"
-#define MSG_INFO_PRINTER_MENU _UxGT("プリンタージョウホウ") // "Printer Info"
-#define MSG_INFO_STATS_MENU _UxGT("プリントジョウキョウ") // "Printer Stats"
-#define MSG_INFO_BOARD_MENU _UxGT("セイギョケイジョウホウ") // "Board Info"
-#define MSG_INFO_THERMISTOR_MENU _UxGT("サーミスター") // "Thermistors"
-#define MSG_INFO_EXTRUDERS _UxGT("エクストルーダースウ") // "Extruders"
-#define MSG_INFO_BAUDRATE _UxGT("ボーレート") // "Baud"
-#define MSG_INFO_PROTOCOL _UxGT("プロトコル") // "Protocol"
-#define MSG_CASE_LIGHT _UxGT("キョウタイナイショウメイ") // "Case light"
-#define MSG_INFO_PRINT_COUNT _UxGT("プリントスウ ") // "Print Count"
-#define MSG_INFO_COMPLETED_PRINTS _UxGT("カンリョウスウ") // "Completed"
-#define MSG_INFO_PRINT_TIME _UxGT("プリントジカンルイケイ") // "Total print time"
-#define MSG_INFO_PRINT_LONGEST _UxGT("サイチョウプリントジカン") // "Longest job time"
-#define MSG_INFO_PRINT_FILAMENT _UxGT("フィラメントシヨウリョウルイケイ") // "Extruded total"
-#define MSG_INFO_MIN_TEMP _UxGT("セッテイサイテイオン") // "Min Temp"
-#define MSG_INFO_MAX_TEMP _UxGT("セッテイサイコウオン") // "Max Temp"
-#define MSG_INFO_PSU _UxGT("デンゲンシュベツ") // "Power Supply"
-#define MSG_DRIVE_STRENGTH _UxGT("モータークドウリョク") // "Drive Strength"
-#define MSG_DAC_PERCENT _UxGT("DACシュツリョク %") // "Driver %"
-#define MSG_DAC_EEPROM_WRITE MSG_STORE_EEPROM // "DAC EEPROM Write"
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("イチジテイシ")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("プリントサイカイ") // "Resume print"
-#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("コウカンヲカイシシマス") // "Wait for start"
-#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("シバラクオマチクダサイ") // "of the filament"
-#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("フィラメントヌキダシチュウ") // "Wait for"
-#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("シバラクオマチクダサイ") // "filament unload"
-#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("フィラメントヲソウニュウシ,") // "Insert filament"
-#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("クリックスルトゾッコウシマス") // "and press button"
-#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("フィラメントソウテンチュウ") // "Wait for"
-#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("シバラクオマチクダサイ") // "filament load"
-#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("プリントヲサイカイシマス") // "Wait for print"
-#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("シバラクオマチクダサイ") // "to resume"
+ // This is just to show the potential benefit of Unicode.
+ // This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF.
-#define MSG_EXPECTED_PRINTER _UxGT("マチガッタプリンター") // "Wrong printer"
+ // 片仮名表示定義
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" ジュンビカンリョウ");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("メディアガソウニュウサレマシタ"); // "Card inserted"
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // "Card removed"
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("メディアノトリダシ");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("メディアガアリマセン"); // "Card removed"
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // "Endstops" // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("メイン"); // "Main"
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("ジドウカイシ"); // "Autostart"
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // "Disable steppers"
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // "Debug Menu"
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("プログレスバー テスト"); // "Progress Bar Test"
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("ゲンテンフッキ"); // "Auto home"
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Xジク ゲンテンフッキ"); // "Home X"
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Yジク ゲンテンフッキ"); // "Home Y"
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Zジク ゲンテンフッキ"); // "Home Z"
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("ゲンテンフッキチュウ"); // "Homing XYZ"
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("レベリングカイシ"); // "Click to Begin"
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("ツギノソクテイテンヘ"); // "Next Point"
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // "Leveling Done!"
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets"
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied"
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("キジュンセット"); // "Set origin"
+ PROGMEM Language_Str MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N0; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N1; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N2; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N3; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N4; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = PREHEAT_1_LABEL _UxGT(" ヨネツ ") LCD_STR_N5; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N0; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N1; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N2; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N3; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N4; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N5; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All"
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf"
+ PROGMEM Language_Str MSG_PREHEAT_2 = PREHEAT_2_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N0; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N1; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N2; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N3; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N4; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = PREHEAT_2_LABEL _UxGT(" ヨネツ ") LCD_STR_N5; // "Preheat " PREHEAT_1_LABEL
+ PROGMEM Language_Str MSG_PREHEAT_2_END = PREHEAT_2_LABEL _UxGT(" ヨネツノズル"); // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N0; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N1; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N2; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N3; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N4; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = PREHEAT_2_LABEL _UxGT(" ヨネツノズル ") LCD_STR_N5; // " Nozzle"
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = PREHEAT_2_LABEL _UxGT(" スベテヨネツ"); // " All"
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = PREHEAT_2_LABEL _UxGT(" ベッドヨネツ"); // " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = PREHEAT_2_LABEL _UxGT(" ヨネツセッテイ"); // " conf"
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("カネツテイシ"); // "Cooldown"
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // "Switch power on"
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // "Switch power off"
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("オシダシ"); // "Extrude"
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("ヒキコミセッテイ"); // "Retract"
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("ジクイドウ"); // "Move axis"
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("ベッドレベリング"); // "Bed leveling"
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("ベッドレベリング"); // "Level bed"
-#define MSG_CONFIGURATION _UxGT("セッテイカンリ")
-#define MSG_ADVANCED_SETTINGS _UxGT("ショウサイセッテイ")
-#define MSG_OUTAGE_RECOVERY _UxGT("コショカイフク")
-#define MSG_INIT_EEPROM _UxGT("EEPROMショキカ")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("イドウチュウ"); // "Moving..."
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("XYジク カイホウ"); // "Free XY"
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Xジク イドウ"); // "Move X"
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Yジク イドウ"); // "Move Y"
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Zジク イドウ"); // "Move Z"
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("エクストルーダー"); // "Extruder"
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("%smm イドウ"); // "Move 0.025mm"
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("0.1mm イドウ"); // "Move 0.1mm"
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT(" 1mm イドウ"); // "Move 1mm"
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT(" 10mm イドウ"); // "Move 10mm"
+ PROGMEM Language_Str MSG_SPEED = _UxGT("ソクド"); // "Speed"
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Zオフセット"); // "Bed Z"
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle"
+ PROGMEM Language_Str MSG_BED = _UxGT("ベッド"); // "Bed"
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("ファンソクド"); // "Fan speed"
+ PROGMEM Language_Str MSG_FLOW = _UxGT("トシュツリョウ"); // "Flow"
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("セイギョ"); // "Control"
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" サイテイ"); // " Min"
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" サイコウ"); // " Max"
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" ファクター"); // " Fact"
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("ジドウオンドセイギョ"); // "Autotemp"
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("オン"); // "On"
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("オフ"); // "Off"
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("センタク"); // "Select"
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("センタク ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("センタク ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("センタク ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("センタク ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("センタク ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("センタク ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("カソクド mm/s²"); // "Accel"
+ PROGMEM Language_Str MSG_JERK = _UxGT("ヤクドウ mm/s"); // "Jerk"
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("ジク ヤクドウ mm/s") LCD_STR_A; // "Va-jerk"
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("ジク ヤクドウ mm/s") LCD_STR_B; // "Vb-jerk"
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("ジク ヤクドウ mm/s") LCD_STR_C; // "Vc-jerk"
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("ステップ/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("ステップ/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("ステップ/mm");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("エクストルーダー ヤクド"); // "Ve-jerk"
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("サイダイオクリソクド ") LCD_STR_A; // "Vmax A"
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("サイダイオクリソクド ") LCD_STR_A; // "Vmax B"
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("サイダイオクリソクド ") LCD_STR_A; // "Vmax C"
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("サイダイオクリソクド ") LCD_STR_A; // "Vmax E"
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("サイダイオクリソクド ") LCD_STR_E0; // "Vmax E1"
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("サイダイオクリソクド ") LCD_STR_E1; // "Vmax E2"
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("サイダイオクリソクド ") LCD_STR_E2; // "Vmax E3"
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("サイダイオクリソクド ") LCD_STR_E3; // "Vmax E4"
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("サイダイオクリソクド ") LCD_STR_E4; // "Vmax E5"
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("サイダイオクリソクド ") LCD_STR_E5; // "Vmax E6"
+ PROGMEM Language_Str MSG_VMIN = _UxGT("サイショウオクリソクド"); // "Vmin"
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("サイショウイドウソクド"); // "VTrav min"
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("カソクド mm/s²"); // "Accel"
+ PROGMEM Language_Str MSG_AMAX = _UxGT("サイダイカソクド "); // "Amax "
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("ヒキコミカソクド"); // "A-retract"
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("イドウカソクド"); // "A-travel"
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("オンド"); // "Temperature"
+ PROGMEM Language_Str MSG_MOTION = _UxGT("ウゴキセッテイ"); // "Motion"
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("フィラメント"); // "Filament"
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("フィラメントチョッケイ"); // "Fil. Dia."
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("フィラメントチョッケイ ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("フィラメントチョッケイ ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("フィラメントチョッケイ ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("フィラメントチョッケイ ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("フィラメントチョッケイ ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("フィラメントチョッケイ ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCDコントラスト"); // "LCD contrast"
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // "Store memory"
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // "Load memory"
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("セッテイリセット"); // "Restore failsafe"
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // "Refresh"
+ PROGMEM Language_Str MSG_WATCH = _UxGT("ジョウホウガメン"); // "Info screen"
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("ジュンビセッテイ"); // "Prepare"
+ PROGMEM Language_Str MSG_TUNE = _UxGT("チョウセイ"); // "Tune"
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("イチジテイシ"); // "Pause print"
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("プリントサイカイ"); // "Resume print"
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("プリントテイシ"); // "Stop print"
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("メディアカラプリント"); // "Print from SD"
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("メディアガアリマセン"); // "Card removed"
+ PROGMEM Language_Str MSG_DWELL = _UxGT("キュウシ"); // "Sleep..."
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("ツヅケルニハクリックシテクダサイ"); // "Wait for user..."
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("プリントガチュウシサレマシタ"); // "Print aborted"
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("ウゴキマセン"); // "No move."
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ヒジョウテイシ"); // "KILLED. "
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("テイシシマシタ"); // "STOPPED. "
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("ヒキコミリョウ mm"); // "Retract mm"
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("ヒキコミリョウS mm"); // "Swap Re.mm"
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("ヒキコミソクド mm/s"); // "Retract V"
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("ノズルタイヒ mm"); // "Hop mm"
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("ホショウリョウ mm"); // "UnRet mm"
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("ホショウリョウS mm"); // "S UnRet mm"
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("ホショウソクド mm/s"); // "UnRet V"
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("ジドウヒキコミ"); // "AutoRetr."
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("フィラメントコウカン"); // "Change filament"
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("メディアサイヨミコミ"); // "Init. SD card"
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("メディアコウカン"); // "Change SD card"
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Zプローブ ベッドガイ"); // "Z probe out. bed"
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // "BLTouch Self-Test"
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // "Reset BLTouch"
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("サキニ %s%s%s ヲフッキサセテクダサイ"); // "Home ... first"
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // "Z Offset"
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // "Babystep X"
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // "Babystep Y"
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Zジク ビドウ"); // "Babystep Z"
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("イドウゲンカイケンチキノウ"); // "Endstop abort"
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("カネツシッパイ"); // "Heating failed"
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("エラー:ジョウチョウサーミスターキノウ"); // "Err: REDUNDANT TEMP"
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ネツボウソウ"); // "THERMAL RUNAWAY"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("エラー:サイコウオンチョウカ"); // "Err: MAXTEMP"
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("エラー:サイテイオンミマン"); // "Err: MINTEMP"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("エラー:ベッド サイコウオンチョウカ"); // "Err: MAXTEMP BED"
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("エラー:ベッド サイテイオンミマン"); // "Err: MINTEMP BED"
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("サキニ XY ヲフッキサセテクダサイ"); // "Home XY first"
+ PROGMEM Language_Str MSG_HALTED = _UxGT("プリンターハテイシシマシタ"); // "PRINTER HALTED"
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("リセットシテクダサイ"); // "Please reset"
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("カネツチュウ"); // "Heating..."
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("ベッド カネツチュウ"); // "Bed Heating..."
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("デルタ コウセイ"); // "Delta Calibration"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Xジク コウセイ"); // "Calibrate X"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Yジク コウセイ"); // "Calibrate Y"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Zジク コウセイ"); // "Calibrate Z"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("チュウシン コウセイ"); // "Calibrate Center"
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("コノプリンターニツイテ"); // "About Printer"
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("プリンタージョウホウ"); // "Printer Info"
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("プリントジョウキョウ"); // "Printer Stats"
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("セイギョケイジョウホウ"); // "Board Info"
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("サーミスター"); // "Thermistors"
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("エクストルーダースウ"); // "Extruders"
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("ボーレート"); // "Baud"
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("プロトコル"); // "Protocol"
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("キョウタイナイショウメイ"); // "Case light"
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("プリントスウ "); // "Print Count"
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("カンリョウスウ"); // "Completed"
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("プリントジカンルイケイ"); // "Total print time"
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("サイチョウプリントジカン"); // "Longest job time"
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("フィラメントシヨウリョウルイケイ"); // "Extruded total"
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("セッテイサイテイオン"); // "Min Temp"
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("セッテイサイコウオン"); // "Max Temp"
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("デンゲンシュベツ"); // "Power Supply"
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("モータークドウリョク"); // "Drive Strength"
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("DACシュツリョク %"); // "Driver %"
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("EEPROMヘホゾン"); // "Store memory"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("イチジテイシ");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("プリントサイカイ"); // "Resume print"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ")); // "Wait for start of the filament"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ")); // "Wait for filament unload"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス")); // "Insert filament and press button"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ")); // "Wait for filament load"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ")); // "Wait for print to resume"
-#define MSG_BUTTON_NEXT _UxGT("ツギヘ")
-#define MSG_BUTTON_INIT _UxGT("ショキカ")
-#define MSG_BUTTON_STOP _UxGT("ストップ")
-#define MSG_BUTTON_PRINT _UxGT("プリント")
-#define MSG_BUTTON_RESET _UxGT("リセット")
-#define MSG_BUTTON_CANCEL _UxGT("キャンセル")
-#define MSG_BUTTON_DONE _UxGT("カンリョウ")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // "Wrong printer"
-#define MSG_YES _UxGT("ハイ")
-#define MSG_NO _UxGT("イイエ")
-#define MSG_BACK _UxGT("モドリ")
-#define MSG_VELOCITY _UxGT("ソクド")
-#define MSG_STEPS_PER_MM _UxGT("ステップ/mm")
-#define MSG_USER_MENU _UxGT("ユーザーコマンド")
-#define MSG_PRINT_PAUSED _UxGT("プリントガイチジテイシサレマシタ")
-#define MSG_PRINTING _UxGT("プリントチュウ...")
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("セッテイカンリ");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("ショウサイセッテイ");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("コショカイフク");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROMショキカ");
+
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("ツギヘ");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("ショキカ");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("ストップ");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("プリント");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("リセット");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("キャンセル");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("カンリョウ");
+
+ PROGMEM Language_Str MSG_YES = _UxGT("ハイ");
+ PROGMEM Language_Str MSG_NO = _UxGT("イイエ");
+ PROGMEM Language_Str MSG_BACK = _UxGT("モドリ");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("ソクド");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("ステップ/mm");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("ユーザーコマンド");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("プリントガイチジテイシサレマシタ");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("プリントチュウ...");
+}
diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h
index 574490c7f5..15173a93d5 100644
--- a/Marlin/src/lcd/language/language_ko_KR.h
+++ b/Marlin/src/lcd/language/language_ko_KR.h
@@ -28,386 +28,106 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_ko_KR {
+ using namespace Language_en; // Inherit undefined strings from English
-#define CHARSIZE 1
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Korean");
-#define WELCOME_MSG MACHINE_NAME _UxGT(" 준비.")
-#define MSG_BACK _UxGT("뒤로")
-#define MSG_MEDIA_INSERTED _UxGT("카드 삽입됨")
-#define MSG_MEDIA_REMOVED _UxGT("카드 제거됨")
-#define MSG_LCD_ENDSTOPS _UxGT("엔드스탑")
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("소프트 엔드스탑")
-#define MSG_MAIN _UxGT("뒤로")
-#define MSG_ADVANCED_SETTINGS _UxGT("고급 설정")
-#define MSG_CONFIGURATION _UxGT("설정")
-#define MSG_AUTOSTART _UxGT("자동 시작")
-#define MSG_DISABLE_STEPPERS _UxGT("모터 정지")
-#define MSG_DEBUG_MENU _UxGT("디버깅 메뉴")
-#define MSG_PROGRESS_BAR_TEST _UxGT("프로그레스바 테스트")
-#define MSG_AUTO_HOME _UxGT("오토홈")
-#define MSG_AUTO_HOME_X _UxGT("X 홈으로")
-#define MSG_AUTO_HOME_Y _UxGT("Y 홈으로")
-#define MSG_AUTO_HOME_Z _UxGT("Z 홈으로")
-#define MSG_LEVEL_BED_HOMING _UxGT("XYZ 홈으로")
-#define MSG_LEVEL_BED_WAITING _UxGT("누르면 시작합니다")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("다음 Point")
-#define MSG_LEVEL_BED_DONE _UxGT("레벨링 완료!")
-//#define MSG_Z_FADE_HEIGHT _UxGT("Fade Height")
-//#define MSG_SET_HOME_OFFSETS _UxGT("Set home offsets")
-//#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets applied")
-//#define MSG_SET_ORIGIN _UxGT("Set origin")
-#define MSG_PREHEAT_1 _UxGT("예열하기 - " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" 모두")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" 노즐만")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" 베드만")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" conf")
-#define MSG_PREHEAT_2 _UxGT("예열하기 - " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" 모두")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" 노즐만")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" 베드만")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" conf")
-#define MSG_PREHEAT_CUSTOM _UxGT("Custom 예열")
-#define MSG_COOLDOWN _UxGT("식히기")
-#define MSG_SWITCH_PS_ON _UxGT("스위치 전원 켜기")
-#define MSG_SWITCH_PS_OFF _UxGT("스위치 전원 끄기")
-#define MSG_EXTRUDE _UxGT("밀어내기")
-#define MSG_RETRACT _UxGT("당기기")
-#define MSG_MOVE_AXIS _UxGT("축 이동")
-#define MSG_BED_LEVELING _UxGT("베드 레벨링")
-//#define MSG_LEVEL_BED _UxGT("Level bed")
-//#define MSG_LEVEL_CORNERS _UxGT("Level corners")
-//#define MSG_NEXT_CORNER _UxGT("Next corner")
-//#define MSG_EDIT_MESH _UxGT("Edit Mesh")
-//#define MSG_EDITING_STOPPED _UxGT("Mesh Editing Stopped")
-//#define MSG_USER_MENU _UxGT("Custom User Commands")
-//#define MSG_IDEX_MENU _UxGT("IDEX Mode")
-//#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
-//#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplication")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("미러 사본")
-//#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Full control")
-//#define MSG_X_OFFSET _UxGT("2nd nozzle X")
-//#define MSG_Y_OFFSET _UxGT("2nd nozzle Y")
-//#define MSG_Z_OFFSET _UxGT("2nd nozzle Z")
-#define MSG_UBL_DOING_G29 _UxGT("오토레벨링 하기")
-//#define MSG_UBL_TOOLS _UxGT("UBL Tools")
-//#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
-//#define MSG_UBL_MANUAL_MESH _UxGT("Manually Build Mesh")
-//#define MSG_UBL_BC_INSERT _UxGT("Place shim & measure")
-//#define MSG_UBL_BC_INSERT2 _UxGT("Measure")
-//#define MSG_UBL_BC_REMOVE _UxGT("Remove & measure bed")
-//#define MSG_UBL_MOVING_TO_NEXT _UxGT("Moving to next")
-//#define MSG_UBL_ACTIVATE_MESH _UxGT("Activate UBL")
-//#define MSG_UBL_DEACTIVATE_MESH _UxGT("Deactivate UBL")
-//#define MSG_UBL_SET_TEMP_BED _UxGT("Bed Temp")
-//#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-//#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Hotend Temp")
-//#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-//#define MSG_UBL_MESH_EDIT _UxGT("Mesh Edit")
-//#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Edit Custom Mesh")
-//#define MSG_UBL_FINE_TUNE_MESH _UxGT("Fine Tuning Mesh")
-//#define MSG_UBL_DONE_EDITING_MESH _UxGT("Done Editing Mesh")
-//#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Build Custom Mesh")
-//#define MSG_UBL_BUILD_MESH_MENU _UxGT("Build Mesh")
-//#define MSG_UBL_BUILD_MESH_M1 _UxGT("Build Mesh (" PREHEAT_1_LABEL ")")
-//#define MSG_UBL_BUILD_MESH_M2 _UxGT("Build Mesh (" PREHEAT_2_LABEL ")")
-//#define MSG_UBL_BUILD_COLD_MESH _UxGT("Build Cold Mesh")
-//#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Adjust Mesh Height")
-//#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Height Amount")
-//#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Validate Mesh")
-//#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Validate " PREHEAT_1_LABEL " Mesh")
-//#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Validate Mesh (" PREHEAT_2_LABEL ")")
-//#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Validate Custom Mesh")
-//#define MSG_UBL_CONTINUE_MESH _UxGT("Continue Bed Mesh")
-//#define MSG_UBL_MESH_LEVELING _UxGT("Mesh Leveling")
-//#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Point Leveling")
-//#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Grid Mesh Leveling")
-//#define MSG_UBL_MESH_LEVEL _UxGT("Level Mesh")
-//#define MSG_UBL_SIDE_POINTS _UxGT("Side Points")
-//#define MSG_UBL_MAP_TYPE _UxGT("Map Type")
-//#define MSG_UBL_OUTPUT_MAP _UxGT("Output Mesh Map")
-//#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Output for Host")
-//#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Output for CSV")
-//#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Off Printer Backup")
-//#define MSG_UBL_INFO_UBL _UxGT("Output UBL Info")
-//#define MSG_UBL_FILLIN_AMOUNT _UxGT("Fill-in Amount")
-//#define MSG_UBL_MANUAL_FILLIN _UxGT("Manual Fill-in")
-//#define MSG_UBL_SMART_FILLIN _UxGT("Smart Fill-in")
-//#define MSG_UBL_FILLIN_MESH _UxGT("Fill-in Mesh")
-//#define MSG_UBL_INVALIDATE_ALL _UxGT("Invalidate All")
-//#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalidate Closest")
-//#define MSG_UBL_FINE_TUNE_ALL _UxGT("Fine Tune All")
-//#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Fine Tune Closest")
-//#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Mesh Storage")
-//#define MSG_UBL_STORAGE_SLOT _UxGT("Memory Slot")
-//#define MSG_UBL_LOAD_MESH _UxGT("Load Bed Mesh")
-//#define MSG_UBL_SAVE_MESH _UxGT("Save Bed Mesh")
-//#define MSG_MESH_LOADED _UxGT("Mesh %i loaded")
-//#define MSG_MESH_SAVED _UxGT("Mesh %i saved")
-//#define MSG_UBL_NO_STORAGE _UxGT("No storage")
-//#define MSG_UBL_SAVE_ERROR _UxGT("Err: UBL Save")
-//#define MSG_UBL_RESTORE_ERROR _UxGT("Err: UBL Restore")
-//#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Offset Stopped")
-//#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Step-By-Step UBL")
-
-//#define MSG_LED_CONTROL _UxGT("LED Control")
-//#define MSG_LEDS _UxGT("Lights")
-//#define MSG_LED_PRESETS _UxGT("Light Presets")
-//#define MSG_SET_LEDS_RED _UxGT("Red")
-//#define MSG_SET_LEDS_ORANGE _UxGT("Orange")
-//#define MSG_SET_LEDS_YELLOW _UxGT("Yellow")
-//#define MSG_SET_LEDS_GREEN _UxGT("Green")
-//#define MSG_SET_LEDS_BLUE _UxGT("Blue")
-//#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-//#define MSG_SET_LEDS_VIOLET _UxGT("Violet")
-//#define MSG_SET_LEDS_WHITE _UxGT("White")
-//#define MSG_SET_LEDS_DEFAULT _UxGT("Default")
-//#define MSG_CUSTOM_LEDS _UxGT("Custom Lights")
-//#define MSG_INTENSITY_R _UxGT("Red Intensity")
-//#define MSG_INTENSITY_G _UxGT("Green Intensity")
-//#define MSG_INTENSITY_B _UxGT("Blue Intensity")
-//#define MSG_INTENSITY_W _UxGT("White Intensity")
-//#define MSG_LED_BRIGHTNESS _UxGT("Brightness")
-
-//#define MSG_MOVING _UxGT("Moving...")
-//#define MSG_FREE_XY _UxGT("Free XY")
-//#define MSG_MOVE_X _UxGT("Move X")
-//#define MSG_MOVE_Y _UxGT("Move Y")
-//#define MSG_MOVE_Z _UxGT("Move Z")
-//#define MSG_MOVE_E _UxGT("Extruder")
-//#define MSG_MOVE_Z_DIST _UxGT("Move %smm")
-//#define MSG_MOVE_01MM _UxGT("Move 0.1mm")
-//#define MSG_MOVE_1MM _UxGT("Move 1mm")
-//#define MSG_MOVE_10MM _UxGT("Move 10mm")
-//#define MSG_SPEED _UxGT("Speed")
-//#define MSG_BED_Z _UxGT("Bed Z")
-#define MSG_NOZZLE _UxGT("노즐")
-#define MSG_BED _UxGT("베드")
-#define MSG_FAN_SPEED _UxGT("펜 속도")
-#define MSG_EXTRA_FAN_SPEED _UxGT("엑스트라 펜 속도")
-//#define MSG_FLOW _UxGT("Flow")
-//#define MSG_CONTROL _UxGT("Control")
-//#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-//#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-//#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-//#define MSG_AUTOTEMP _UxGT("Autotemp")
-//#define MSG_LCD_ON _UxGT("On")
-//#define MSG_LCD_OFF _UxGT("Off")
-//#define MSG_PID_P _UxGT("PID-P")
-//#define MSG_PID_I _UxGT("PID-I")
-//#define MSG_PID_D _UxGT("PID-D")
-//#define MSG_PID_C _UxGT("PID-C")
-//#define MSG_SELECT _UxGT("Select")
-//#define MSG_ACC _UxGT("Accel")
-//#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- //#define MSG_VA_JERK _UxGT("Va-jerk")
- //#define MSG_VB_JERK _UxGT("Vb-jerk")
- //#define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- //#define MSG_VA_JERK _UxGT("Vx-jerk")
- //#define MSG_VB_JERK _UxGT("Vy-jerk")
- //#define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-//#define MSG_VE_JERK _UxGT("Ve-jerk")
-//#define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev")
-//#define MSG_VELOCITY _UxGT("Velocity")
-//#define MSG_VMAX _UxGT("Vmax ")
-//#define MSG_VMIN _UxGT("Vmin")
-//#define MSG_VTRAV_MIN _UxGT("VTrav min")
-//#define MSG_ACCELERATION _UxGT("Acceleration")
-//#define MSG_AMAX _UxGT("Amax ")
-//#define MSG_A_RETRACT _UxGT("A-retract")
-//#define MSG_A_TRAVEL _UxGT("A-travel")
-//#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#if IS_KINEMATIC
- //#define MSG_ASTEPS _UxGT("Asteps/mm")
- //#define MSG_BSTEPS _UxGT("Bsteps/mm")
- //#define MSG_CSTEPS _UxGT("Csteps/mm")
-#else
- //#define MSG_ASTEPS _UxGT("Xsteps/mm")
- //#define MSG_BSTEPS _UxGT("Ysteps/mm")
- //#define MSG_CSTEPS _UxGT("Zsteps/mm")
-#endif
-//#define MSG_ESTEPS _UxGT("Esteps/mm")
-//#define MSG_E0_STEPS _UxGT("E1steps/mm")
-//#define MSG_E1_STEPS _UxGT("E2steps/mm")
-//#define MSG_E2_STEPS _UxGT("E3steps/mm")
-//#define MSG_E3_STEPS _UxGT("E4steps/mm")
-//#define MSG_E4_STEPS _UxGT("E5steps/mm")
-//#define MSG_E5_STEPS _UxGT("E6steps/mm")
-#define MSG_TEMPERATURE _UxGT("온도")
-#define MSG_MOTION _UxGT("동작")
-//#define MSG_FILAMENT _UxGT("Filament")
-//#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
-//#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-//#define MSG_FILAMENT_UNLOAD _UxGT("Unload mm")
-//#define MSG_FILAMENT_LOAD _UxGT("Load mm")
-//#define MSG_ADVANCE_K _UxGT("Advance K")
-//#define MSG_CONTRAST _UxGT("LCD contrast")
-#define MSG_STORE_EEPROM _UxGT("설정 저장하기")
-#define MSG_LOAD_EEPROM _UxGT("설정 읽어오기")
-#define MSG_RESTORE_FAILSAFE _UxGT("설정 되돌리기")
-#define MSG_INIT_EEPROM _UxGT("EEPROM 초기화")
-#define MSG_REFRESH _UxGT("새로고침")
-#define MSG_WATCH _UxGT("처음으로")
-#define MSG_PREPARE _UxGT("준비하기")
-//#define MSG_TUNE _UxGT("Tune")
-#define MSG_PAUSE_PRINT _UxGT("일시정지")
-#define MSG_RESUME_PRINT _UxGT("재시작")
-#define MSG_STOP_PRINT _UxGT("출력중지")
-//#define MSG_OUTAGE_RECOVERY _UxGT("Outage Recovery")
-#define MSG_MEDIA_MENU _UxGT("SD 카드출력")
-#define MSG_NO_MEDIA _UxGT("SD 카드없음")
-#define MSG_DWELL _UxGT("슬립모드...")
-//#define MSG_USERWAIT _UxGT("Click to resume...")
-#define MSG_PRINT_PAUSED _UxGT("일시 정지됨")
-#define MSG_PRINTING _UxGT("출력중...")
-#define MSG_PRINT_ABORTED _UxGT("취소됨")
-//#define MSG_NO_MOVE _UxGT("No move.")
-#define MSG_KILLED _UxGT("죽음. ")
-#define MSG_STOPPED _UxGT("멈춤. ")
-//#define MSG_CONTROL_RETRACT _UxGT("Retract mm")
-//#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Re.mm")
-//#define MSG_CONTROL_RETRACTF _UxGT("Retract V")
-//#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm")
-//#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-//#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-//#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-//#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-//#define MSG_FILAMENTCHANGE _UxGT("Change filament")
-//#define MSG_FILAMENTLOAD _UxGT("Load filament")
-//#define MSG_FILAMENTUNLOAD _UxGT("Unload filament")
-//#define MSG_FILAMENTUNLOAD_ALL _UxGT("Unload All")
-//#define MSG_INIT_MEDIA _UxGT("Init. SD card")
-//#define MSG_CHANGE_MEDIA _UxGT("Change SD card")
-//#define MSG_ZPROBE_OUT _UxGT("Z Probe past bed")
-//#define MSG_SKEW_FACTOR _UxGT("Skew Factor")
-//#define MSG_BLTOUCH _UxGT("BLTouch")
-//#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
-//#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-//#define MSG_BLTOUCH_DEPLOY _UxGT("Deploy BLTouch")
-//#define MSG_BLTOUCH_STOW _UxGT("Stow BLTouch")
-//#define MSG_MANUAL_DEPLOY _UxGT("Deploy Z-Probe")
-//#define MSG_MANUAL_STOW _UxGT("Stow Z-Probe")
-//#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-//#define MSG_ZPROBE_ZOFFSET _UxGT("Probe Z Offset")
-//#define MSG_BABYSTEP_X _UxGT("Babystep X")
-//#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-//#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-//#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
-//#define MSG_HEATING_FAILED_LCD _UxGT("Heating failed")
-//#define MSG_HEATING_FAILED_LCD_BED _UxGT("Bed heating failed")
-//#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: REDUNDANT TEMP")
-//#define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
-//#define MSG_THERMAL_RUNAWAY_BED _UxGT("BED THERMAL RUNAWAY")
-//#define MSG_ERR_MAXTEMP _UxGT("Err: MAXTEMP")
-//#define MSG_ERR_MINTEMP _UxGT("Err: MINTEMP")
-//#define MSG_ERR_MAXTEMP_BED _UxGT("Err: MAXTEMP BED")
-//#define MSG_ERR_MINTEMP_BED _UxGT("Err: MINTEMP BED")
-//#define MSG_ERR_Z_HOMING _UxGT("Home XY first")
-//#define MSG_HALTED _UxGT("PRINTER HALTED")
-//#define MSG_PLEASE_RESET _UxGT("Please reset")
-//#define MSG_SHORT_DAY _UxGT("d") // One character only
-//#define MSG_SHORT_HOUR _UxGT("h") // One character only
-//#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-//#define MSG_HEATING _UxGT("Heating...")
-//#define MSG_COOLING _UxGT("Cooling...")
-//#define MSG_BED_HEATING _UxGT("Bed heating...")
-//#define MSG_BED_COOLING _UxGT("Bed cooling...")
-//#define MSG_DELTA_CALIBRATE _UxGT("Delta Calibration")
-//#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrate X")
-//#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrate Y")
-//#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrate Z")
-//#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrate Center")
-//#define MSG_DELTA_SETTINGS _UxGT("Delta Settings")
-//#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto Calibration")
-//#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Set Delta Height")
-//#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Probe Z-offset")
-//#define MSG_DELTA_DIAG_ROD _UxGT("Diag Rod")
-//#define MSG_DELTA_HEIGHT _UxGT("Height")
-//#define MSG_DELTA_RADIUS _UxGT("Radius")
-//#define MSG_INFO_MENU _UxGT("About Printer")
-//#define MSG_INFO_PRINTER_MENU _UxGT("Printer Info")
-//#define MSG_3POINT_LEVELING _UxGT("3-Point Leveling")
-//#define MSG_LINEAR_LEVELING _UxGT("Linear Leveling")
-//#define MSG_BILINEAR_LEVELING _UxGT("Bilinear Leveling")
-//#define MSG_UBL_LEVELING _UxGT("Unified Bed Leveling")
-//#define MSG_MESH_LEVELING _UxGT("Mesh Leveling")
-//#define MSG_INFO_STATS_MENU _UxGT("Printer Stats")
-//#define MSG_INFO_BOARD_MENU _UxGT("Board Info")
-//#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
-//#define MSG_INFO_EXTRUDERS _UxGT("Extruders")
-//#define MSG_INFO_BAUDRATE _UxGT("Baud")
-//#define MSG_INFO_PROTOCOL _UxGT("Protocol")
-//#define MSG_CASE_LIGHT _UxGT("Case light")
-//#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Light Brightness")
-
-#define MSG_EXPECTED_PRINTER _UxGT("잘못된 프린터")
-
-#if LCD_WIDTH >= 20
- //#define MSG_INFO_PRINT_COUNT _UxGT("Print Count")
- //#define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed")
- //#define MSG_INFO_PRINT_TIME _UxGT("Total print time")
- //#define MSG_INFO_PRINT_LONGEST _UxGT("Longest job time")
- //#define MSG_INFO_PRINT_FILAMENT _UxGT("Extruded total")
-#else
- //#define MSG_INFO_PRINT_COUNT _UxGT("Prints")
- //#define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed")
- //#define MSG_INFO_PRINT_TIME _UxGT("Total")
- //#define MSG_INFO_PRINT_LONGEST _UxGT("Longest")
- //#define MSG_INFO_PRINT_FILAMENT _UxGT("Extruded")
-#endif
-//#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-//#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-//#define MSG_INFO_PSU _UxGT("PSU")
-//#define MSG_DRIVE_STRENGTH _UxGT("Drive Strength")
-//#define MSG_DAC_PERCENT _UxGT("Driver %")
-//#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
-//#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("PRINT PAUSED")
-//#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("LOAD FILAMENT")
-//#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("UNLOAD FILAMENT")
-//#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-//#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purge more")
-//#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continue")
-//#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozzle: ")
-//#define MSG_RUNOUT_SENSOR _UxGT("Runout Sensor")
-//#define MSG_ERR_HOMING_FAILED _UxGT("Homing failed")
-//#define MSG_ERR_PROBING_FAILED _UxGT("Probing failed")
-//#define MSG_M600_TOO_COLD _UxGT("M600: Too cold")
-
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- //#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wait for start")
- //#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("of the filament")
- //#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("change")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament unload")
- //#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert filament")
- //#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("and press button")
- //#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("to continue...")
- //#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Press button to")
- //#define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("heat nozzle.")
- //#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heating nozzle")
- //#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Please wait...")
- //#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
- //#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for")
- //#define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("filament purge")
- //#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
- //#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume")
-#else // LCD_HEIGHT < 4
- //#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Please wait...")
- //#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejecting...")
- //#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert and Click")
- //#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Click to heat")
- //#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heating...")
- //#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
- //#define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
- //#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" 준비.");
+ PROGMEM Language_Str MSG_BACK = _UxGT("뒤로");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("카드 삽입됨");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("카드 제거됨");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("엔드스탑");
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("소프트 엔드스탑");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("뒤로");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("고급 설정");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("설정");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("자동 시작");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("모터 정지");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("디버깅 메뉴");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("프로그레스바 테스트");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("오토홈");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("X 홈으로");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Y 홈으로");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Z 홈으로");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("XYZ 홈으로");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("누르면 시작합니다");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("다음 Point");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("레벨링 완료!");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("예열하기 - ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("예열하기 - ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("예열하기 - ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("예열하기 - ") PREHEAT_2_LABEL _UxGT(" 노즐 ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Custom 예열");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("식히기");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("스위치 전원 켜기");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("스위치 전원 끄기");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("밀어내기");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("당기기");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("축 이동");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("베드 레벨링");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("미러 사본");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("오토레벨링 하기");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("노즐");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("노즐 ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("노즐 ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("노즐 ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("노즐 ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("노즐 ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("노즐 ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("베드");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("펜 속도");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("펜 속도 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("펜 속도 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("펜 속도 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("엑스트라 펜 속도");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("엑스트라 펜 속도 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("엑스트라 펜 속도 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("엑스트라 펜 속도 3");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("온도");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("동작");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("설정 저장하기");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("설정 읽어오기");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("설정 되돌리기");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM 초기화");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("처음으로");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("준비하기");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("일시정지");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("재시작");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("출력중지");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("SD 카드출력");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("SD 카드없음");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("슬립모드...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("일시 정지됨");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("출력중...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("취소됨");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("죽음. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("멈춤. ");
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("잘못된 프린터");
+}
diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h
index bcfbc73fe8..7555194eb8 100644
--- a/Marlin/src/lcd/language/language_nl.h
+++ b/Marlin/src/lcd/language/language_nl.h
@@ -32,252 +32,270 @@
#define DISPLAY_CHARSET_ISO10646_1
#define NOT_EXTENDED_ISO10646_1_5X7
-#define WELCOME_MSG MACHINE_NAME _UxGT(" gereed.")
-#define MSG_BACK _UxGT("Terug")
-#define MSG_MEDIA_INSERTED _UxGT("Kaart ingestoken")
-#define MSG_MEDIA_REMOVED _UxGT("Kaart verwijderd")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstops") // Max length 8 characters
-#define MSG_MAIN _UxGT("Hoofdmenu")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Motoren uit")
-#define MSG_DEBUG_MENU _UxGT("Debug Menu") //accepted English terms
-#define MSG_PROGRESS_BAR_TEST _UxGT("Vooruitgang Test")
-#define MSG_AUTO_HOME _UxGT("Auto home")
-#define MSG_AUTO_HOME_X _UxGT("Home X")
-#define MSG_AUTO_HOME_Y _UxGT("Home Y")
-#define MSG_AUTO_HOME_Z _UxGT("Home Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Homing XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Klik voor begin")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Volgende Plaats")
-#define MSG_LEVEL_BED_DONE _UxGT("Bed level kompl.")
-#define MSG_SET_HOME_OFFSETS _UxGT("Zet home offsets")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("H offset toegep.")
-#define MSG_SET_ORIGIN _UxGT("Nulpunt instellen")
-#define MSG_PREHEAT_1 _UxGT(PREHEAT_1_LABEL " voorverwarmen")
-#define MSG_PREHEAT_1_N _UxGT(PREHEAT_1_LABEL " voorverw. ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1_N _UxGT("aan")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Einde")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1_N _UxGT("Bed")
-#define MSG_PREHEAT_1_SETTINGS _UxGT(PREHEAT_1_LABEL " verw. conf")
-#define MSG_PREHEAT_2 _UxGT(PREHEAT_2_LABEL " voorverwarmen")
-#define MSG_PREHEAT_2_N _UxGT(PREHEAT_2_LABEL " voorverw. ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2_N _UxGT("aan")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Einde")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2_N _UxGT("Bed")
-#define MSG_PREHEAT_2_SETTINGS _UxGT(PREHEAT_2_LABEL " verw. conf")
-#define MSG_COOLDOWN _UxGT("Afkoelen")
-#define MSG_SWITCH_PS_ON _UxGT("Stroom aan")
-#define MSG_SWITCH_PS_OFF _UxGT("Stroom uit")
-#define MSG_EXTRUDE _UxGT("Extrude")
-#define MSG_RETRACT _UxGT("Retract")
-#define MSG_MOVE_AXIS _UxGT("As verplaatsen")
-#define MSG_BED_LEVELING _UxGT("Bed Leveling")
-#define MSG_LEVEL_BED _UxGT("Level bed")
+namespace Language_nl {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_MOVING _UxGT("Verplaatsen...")
-#define MSG_FREE_XY _UxGT("Vrij XY")
-#define MSG_MOVE_X _UxGT("Verplaats X")
-#define MSG_MOVE_Y _UxGT("Verplaats Y")
-#define MSG_MOVE_Z _UxGT("Verplaats Z")
-#define MSG_MOVE_E _UxGT("Extruder")
-#define MSG_MOVE_Z_DIST _UxGT("Verplaats %smm")
-#define MSG_MOVE_01MM _UxGT("Verplaats 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Verplaats 1mm")
-#define MSG_MOVE_10MM _UxGT("Verplaats 10mm")
-#define MSG_SPEED _UxGT("Snelheid")
-#define MSG_BED_Z _UxGT("Bed Z")
-#define MSG_NOZZLE _UxGT("Nozzle")
-#define MSG_BED _UxGT("Bed")
-#define MSG_FAN_SPEED _UxGT("Fan snelheid")
-#define MSG_FLOW _UxGT("Flow")
-#define MSG_CONTROL _UxGT("Control")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Autotemp")
-#define MSG_LCD_ON _UxGT("Aan")
-#define MSG_LCD_OFF _UxGT("Uit")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Selecteer")
-#define MSG_ACC _UxGT("Versn")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retract")
-#define MSG_A_TRAVEL _UxGT("A-travel")
-#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Asteps/mm")
- #define MSG_BSTEPS _UxGT("Bsteps/mm")
- #define MSG_CSTEPS _UxGT("Csteps/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xsteps/mm")
- #define MSG_BSTEPS _UxGT("Ysteps/mm")
- #define MSG_CSTEPS _UxGT("Zsteps/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Esteps/mm")
-#define MSG_E0_STEPS _UxGT("E1steps/mm")
-#define MSG_E1_STEPS _UxGT("E2steps/mm")
-#define MSG_E2_STEPS _UxGT("E3steps/mm")
-#define MSG_E3_STEPS _UxGT("E4steps/mm")
-#define MSG_E4_STEPS _UxGT("E5steps/mm")
-#define MSG_E5_STEPS _UxGT("E6steps/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatuur")
-#define MSG_MOTION _UxGT("Beweging")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_ADVANCE_K _UxGT("Advance K") //accepted english dutch
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
-#define MSG_CONTRAST _UxGT("LCD contrast")
-#define MSG_STORE_EEPROM _UxGT("Geheugen opslaan")
-#define MSG_LOAD_EEPROM _UxGT("Geheugen laden")
-#define MSG_RESTORE_FAILSAFE _UxGT("Noodstop reset")
-#define MSG_REFRESH _UxGT("Ververs")
-#define MSG_WATCH _UxGT("Info scherm")
-#define MSG_PREPARE _UxGT("Voorbereiden")
-#define MSG_TUNE _UxGT("Afstellen")
-#define MSG_PAUSE_PRINT _UxGT("Print pauzeren")
-#define MSG_RESUME_PRINT _UxGT("Print hervatten")
-#define MSG_STOP_PRINT _UxGT("Print stoppen")
-#define MSG_MEDIA_MENU _UxGT("Print van SD")
-#define MSG_NO_MEDIA _UxGT("Geen SD kaart")
-#define MSG_DWELL _UxGT("Slapen...")
-#define MSG_USERWAIT _UxGT("Wachten...")
-#define MSG_PRINT_ABORTED _UxGT("Print afgebroken")
-#define MSG_NO_MOVE _UxGT("Geen beweging.")
-#define MSG_KILLED _UxGT("Afgebroken. ")
-#define MSG_STOPPED _UxGT("Gestopt. ")
-#define MSG_CONTROL_RETRACT _UxGT("Retract mm") //accepted English term in Dutch
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Ruil Retract mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retract F")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Ruil UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet F")
-#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#define MSG_FILAMENTCHANGE _UxGT("Verv. Filament")
-#define MSG_INIT_MEDIA _UxGT("Init. SD kaart")
-#define MSG_CHANGE_MEDIA _UxGT("Verv. SD Kaart")
-#define MSG_ZPROBE_OUT _UxGT("Z probe uit. bed")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Zelf-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s Eerst")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset") //accepted English term in Dutch
-#define MSG_BABYSTEP_X _UxGT("Babystap X")
-#define MSG_BABYSTEP_Y _UxGT("Babystap Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystap Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop afbr.")
-#define MSG_HEATING_FAILED_LCD _UxGT("Voorverw. fout")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Redun. temp fout")
-#define MSG_THERMAL_RUNAWAY _UxGT("Therm. wegloop")
-#define MSG_ERR_MAXTEMP _UxGT("Err: Max. temp")
-#define MSG_ERR_MINTEMP _UxGT("Err: Min. temp")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err: Max.tmp bed")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err: Min.tmp bed")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY Eerst")
-#define MSG_HALTED _UxGT("PRINTER GESTOPT")
-#define MSG_PLEASE_RESET _UxGT("Reset A.U.B.")
-#define MSG_SHORT_DAY _UxGT("d") // One character only. Keep English standard
-#define MSG_SHORT_HOUR _UxGT("h") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Voorwarmen...")
-#define MSG_BED_HEATING _UxGT("Bed voorverw...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Calibratie")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibreer X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibreer Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibreer Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibreer Midden")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto Calibratie")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Zet Delta Hoogte")
+ constexpr uint8_t CHARSIZE = 1;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Dutch");
-#define MSG_INFO_STATS_MENU _UxGT("Printer Stats")
-#define MSG_INFO_BOARD_MENU _UxGT("Board Info") //accepted English term in Dutch
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
-#define MSG_INFO_EXTRUDERS _UxGT("Extruders")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_MENU _UxGT("Over Printer")
-#define MSG_INFO_PRINTER_MENU _UxGT("Printer Info")
-#define MSG_INFO_PROTOCOL _UxGT("Protocol")
-#define MSG_CASE_LIGHT _UxGT("Case licht")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" gereed.");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Terug");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Kaart ingestoken");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Kaart verwijderd");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Hoofdmenu");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Motoren uit");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Debug Menu"); //accepted English terms
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Vooruitgang Test");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Auto home");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Home X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Klik voor begin");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Volgende Plaats");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Bed level kompl.");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Zet home offsets");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("H offset toegep.");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Nulpunt instellen");
+ PROGMEM Language_Str MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" voorverwarmen");
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = PREHEAT_1_LABEL _UxGT(" voorverw. ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" voorverw. Einde");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" voorverw. aan");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" voorverw. Bed");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" verw. conf");
+ PROGMEM Language_Str MSG_PREHEAT_2 = PREHEAT_2_LABEL _UxGT(" voorverwarmen");
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = PREHEAT_2_LABEL _UxGT(" voorverw. ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = PREHEAT_2_LABEL _UxGT(" voorverw. Einde");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = PREHEAT_2_LABEL _UxGT(" voorverw. Einde ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = PREHEAT_2_LABEL _UxGT(" voorverw. aan");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = PREHEAT_2_LABEL _UxGT(" voorverw. Bed");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = PREHEAT_2_LABEL _UxGT(" verw. conf");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Afkoelen");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Stroom aan");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Stroom uit");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrude");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retract");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("As verplaatsen");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Bed Leveling");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Level bed");
-#define MSG_EXPECTED_PRINTER _UxGT("Onjuiste printer")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Verplaatsen...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Vrij XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Verplaats X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Verplaats Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Verplaats Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extruder");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extruder ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extruder ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extruder ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extruder ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extruder ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extruder ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Verplaats %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Verplaats 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Verplaats 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Verplaats 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Snelheid");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Bed Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Nozzle");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Nozzle ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Nozzle ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Nozzle ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Nozzle ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Nozzle ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Nozzle ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Bed");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan snelheid");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Fan snelheid 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Fan snelheid 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Fan snelheid 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Flow");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Flow ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Flow ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Flow ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Flow ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Flow ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Flow ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Control");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Autotemp");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Aan");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Uit");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Selecteer");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Selecteer ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Selecteer ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Selecteer ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Selecteer ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Selecteer ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Selecteer ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Versn");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatuur");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Beweging");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Advance K"); //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("Advance K ") LCD_STR_E0; //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("Advance K ") LCD_STR_E1; //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("Advance K ") LCD_STR_E2; //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("Advance K ") LCD_STR_E3; //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("Advance K ") LCD_STR_E4; //accepted english dutch
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("Advance K ") LCD_STR_E5; //accepted english dutch
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Dia.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Dia. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Dia. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Dia. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Dia. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Dia. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Dia. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD contrast");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Geheugen opslaan");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Geheugen laden");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Noodstop reset");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info scherm");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Voorbereiden");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Afstellen");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Print pauzeren");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Print hervatten");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Print stoppen");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Print van SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Geen SD kaart");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Slapen...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Wachten...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Print afgebroken");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Geen beweging.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("Afgebroken. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("Gestopt. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retract mm"); //accepted English term in Dutch
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Ruil Retract mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retract F");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ruil UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet F");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Verv. Filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Verv. Filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Verv. Filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Verv. Filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Verv. Filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Verv. Filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Verv. Filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Init. SD kaart");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Verv. SD Kaart");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z probe uit. bed");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Zelf-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s Eerst");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); //accepted English term in Dutch
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystap X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystap Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystap Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Endstop afbr.");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Voorverw. fout");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Redun. temp fout");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Therm. wegloop");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: Max. temp");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: Min. temp");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err: Max.tmp bed");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err: Min.tmp bed");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY Eerst");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("PRINTER GESTOPT");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Reset A.U.B.");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only. Keep English standard
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Voorwarmen...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Bed voorverw...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Calibratie");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibreer X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibreer Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibreer Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibreer Midden");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibratie");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Zet Delta Hoogte");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Printed Aantal")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Totaal Voltooid")
- #define MSG_INFO_PRINT_TIME _UxGT("Totale Printtijd")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Langste Printtijd")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Totaal Extrudeert")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Aantal")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Voltooid")
- #define MSG_INFO_PRINT_TIME _UxGT("Printtijd ")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Langste")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Extrud.")
-#endif
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Printer Stats");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Board Info"); //accepted English term in Dutch
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extruders");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Over Printer");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Printer Info");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocol");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Case licht");
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("PSU") //accepted English term in Dutch
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Onjuiste printer");
-#define MSG_DRIVE_STRENGTH _UxGT("Motorstroom")
-#define MSG_DAC_PERCENT _UxGT("Driver %") //accepted English term in Dutch
-#define MSG_DAC_EEPROM_WRITE _UxGT("DAC Opslaan")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Hervat print")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozzle: ") //accepeted English term
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- // Up to 3 lines
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wacht voor start")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("filament te")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("verwisselen")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament uit")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("te laden")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klik knop om...")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("verw. nozzle.") //nozzle accepted English term
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nozzle verw.")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Wacht a.u.b.")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laad filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("en druk knop")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("om verder...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament te")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("laden")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wacht voor print")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("om verder")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("te gaan")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("start...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("uitladen...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Klik knop om...")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("verw. nozzle.") //nozzle accepted English term
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Verwarmen...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laad filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("en druk knop")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("inladen...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("printing...")
-#endif // LCD_HEIGHT < 4
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Printed Aantal");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Totaal Voltooid");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Totale Printtijd");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Langste Printtijd");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Totaal Extrudeert");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Aantal");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Voltooid");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Printtijd ");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Langste");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud.");
+ #endif
+
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("PSU"); //accepted English term in Dutch
+
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Motorstroom");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Driver %"); //accepted English term in Dutch
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC Opslaan");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Hervat print");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); //accepeted English term
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wacht voor start", "filament te", "verwisselen"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament uit", "te laden"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle verw.", "Wacht a.u.b."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Laad filament", "en druk knop", "om verder..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament te", "laden"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Wacht voor print", "om verder", "te gaan"));
+ #else
+ // Up to 2 lines
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Wacht voor", "start..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wacht voor", "uitladen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Verwarmen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Laad filament", "en druk knop"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wacht voor", "inladen..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wacht voor", "printing..."));
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h
index 52bb419337..1acee61f24 100644
--- a/Marlin/src/lcd/language/language_pl.h
+++ b/Marlin/src/lcd/language/language_pl.h
@@ -27,228 +27,263 @@
#define DISPLAY_CHARSET_ISO10646_PL
-#define CHARSIZE 2
+namespace Language_pl {
+ using namespace Language_en; // Inherit undefined strings from English
-#define WELCOME_MSG MACHINE_NAME _UxGT(" gotowy.")
-#define MSG_MEDIA_INSERTED _UxGT("Karta włożona")
-#define MSG_MEDIA_REMOVED _UxGT("Karta usunięta")
-#define MSG_LCD_ENDSTOPS _UxGT("Kranców.") // Max length 8 characters
-#define MSG_MAIN _UxGT("Menu główne")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Wyłącz silniki")
-#define MSG_AUTO_HOME _UxGT("Pozycja zerowa")
-#define MSG_AUTO_HOME_X _UxGT("Zeruj X")
-#define MSG_AUTO_HOME_Y _UxGT("Zeruj Y")
-#define MSG_AUTO_HOME_Z _UxGT("Zeruj Z")
-#define MSG_LEVEL_BED _UxGT("Poziom. stołu")
-#define MSG_LEVEL_BED_HOMING _UxGT("Pozycja zerowa")
-#define MSG_LEVEL_BED_WAITING _UxGT("Kliknij by rozp.")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Następny punkt")
-#define MSG_LEVEL_BED_DONE _UxGT("Wypoziomowano!")
-#define MSG_USER_MENU _UxGT("Własne Polecenia")
-#define MSG_SET_HOME_OFFSETS _UxGT("Ust. poz. zer.")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Poz. zerowa ust.")
-#define MSG_SET_ORIGIN _UxGT("Ustaw punkt zero")
-#define MSG_PREHEAT_1 _UxGT("Rozgrzej " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" wsz.")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Rozgrzej stół " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Ustaw. rozg. " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_2 _UxGT("Rozgrzej " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" wsz.")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Rozgrzej stół " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Ustaw. rozg. " PREHEAT_2_LABEL)
-#define MSG_COOLDOWN _UxGT("Chłodzenie")
-#define MSG_SWITCH_PS_ON _UxGT("Włącz zasilacz")
-#define MSG_SWITCH_PS_OFF _UxGT("Wyłącz zasilacz")
-#define MSG_EXTRUDE _UxGT("Ekstruzja")
-#define MSG_RETRACT _UxGT("Wycofanie")
-#define MSG_MOVE_AXIS _UxGT("Ruch osi")
-#define MSG_BED_LEVELING _UxGT("Poziom. stołu")
-#define MSG_MOVE_X _UxGT("Przesuń w X")
-#define MSG_MOVE_Y _UxGT("Przesuń w Y")
-#define MSG_MOVE_Z _UxGT("Przesuń w Z")
-#define MSG_MOVE_E _UxGT("Ekstruzja (os E)")
-#define MSG_MOVE_Z_DIST _UxGT("Przesuń co %smm")
-#define MSG_MOVE_01MM _UxGT("Przesuń co .1mm")
-#define MSG_MOVE_1MM _UxGT("Przesuń co 1mm")
-#define MSG_MOVE_10MM _UxGT("Przesuń co 10mm")
-#define MSG_SPEED _UxGT("Predkość")
-#define MSG_BED_Z _UxGT("Stół Z")
-#define MSG_NOZZLE _UxGT("Dysza")
-#define MSG_BED _UxGT("Stół")
-#define MSG_FAN_SPEED _UxGT("Obroty wiatraka")
-#define MSG_FLOW _UxGT("Przepływ")
-#define MSG_CONTROL _UxGT("Ustawienia")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Mnożnik")
-#define MSG_AUTOTEMP _UxGT("Auto. temperatura")
-#define MSG_LCD_ON _UxGT("Wł.")
-#define MSG_LCD_OFF _UxGT("Wył.")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Select")
-#define MSG_ACC _UxGT("Przyśpieszenie")
-#define MSG_JERK _UxGT("Zryw")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Zryw Va")
- #define MSG_VB_JERK _UxGT("Zryw Vb")
- #define MSG_VC_JERK _UxGT("Zryw Vc")
-#else
- #define MSG_VA_JERK _UxGT("Zryw Vx")
- #define MSG_VB_JERK _UxGT("Zryw Vy")
- #define MSG_VC_JERK _UxGT("Zryw Vz")
-#endif
-#define MSG_VE_JERK _UxGT("Zryw Ve")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("Vskok min")
-#define MSG_ACCELERATION MSG_ACC
-#define MSG_AMAX _UxGT("Amax")
-#define MSG_A_RETRACT _UxGT("A-wycofanie")
-#define MSG_A_TRAVEL _UxGT("A-przesuń.")
-#define MSG_STEPS_PER_MM _UxGT("kroki/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("krokiA/mm")
- #define MSG_BSTEPS _UxGT("krokiB/mm")
- #define MSG_CSTEPS _UxGT("krokiC/mm")
-#else
- #define MSG_ASTEPS _UxGT("krokiX/mm")
- #define MSG_BSTEPS _UxGT("krokiY/mm")
- #define MSG_CSTEPS _UxGT("krokiZ/mm")
-#endif
-#define MSG_ESTEPS _UxGT("krokiE/mm")
-#define MSG_E0_STEPS _UxGT("krokiE1/mm")
-#define MSG_E1_STEPS _UxGT("krokiE2/mm")
-#define MSG_E2_STEPS _UxGT("krokiE3/mm")
-#define MSG_E3_STEPS _UxGT("krokiE4/mm")
-#define MSG_E4_STEPS _UxGT("krokiE5/mm")
-#define MSG_E5_STEPS _UxGT("krokiE6/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Ruch")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E w mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Śr. fil.")
-#define MSG_CONTRAST _UxGT("Kontrast LCD")
-#define MSG_STORE_EEPROM _UxGT("Zapisz w pamięci")
-#define MSG_LOAD_EEPROM _UxGT("Wczytaj z pamięci")
-#define MSG_RESTORE_FAILSAFE _UxGT("Ustaw. fabryczne")
-#define MSG_REFRESH _UxGT("Odswież")
-#define MSG_WATCH _UxGT("Ekran główny")
-#define MSG_PREPARE _UxGT("Przygotuj")
-#define MSG_TUNE _UxGT("Strojenie")
-#define MSG_PAUSE_PRINT _UxGT("Pauza")
-#define MSG_RESUME_PRINT _UxGT("Wznowienie")
-#define MSG_STOP_PRINT _UxGT("Stop")
-#define MSG_MEDIA_MENU _UxGT("Karta SD")
-#define MSG_NO_MEDIA _UxGT("Brak karty")
-#define MSG_DWELL _UxGT("Uśpij...")
-#define MSG_USERWAIT _UxGT("Oczekiwanie...")
-#define MSG_PRINT_ABORTED _UxGT("Druk przerwany")
-#define MSG_NO_MOVE _UxGT("Brak ruchu")
-#define MSG_KILLED _UxGT("Ubity. ")
-#define MSG_STOPPED _UxGT("Zatrzymany. ")
-#define MSG_CONTROL_RETRACT _UxGT("Wycofaj mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Z Wycof. mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Wycofaj V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Skok Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Cof. wycof. mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Z Cof. wyc. mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Cof. wycof. V")
-#define MSG_AUTORETRACT _UxGT("Auto. wycofanie")
-#define MSG_FILAMENTCHANGE _UxGT("Zmień filament")
-#define MSG_INIT_MEDIA _UxGT("Inicjal. karty SD")
-#define MSG_CHANGE_MEDIA _UxGT("Zmiana karty SD")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z za stołem")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Offset Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Błąd krańcówki")
-#define MSG_HEATING_FAILED_LCD _UxGT("Rozgrz. nieudane")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Błąd temperatury")
-#define MSG_THERMAL_RUNAWAY _UxGT("Zanik temp.")
-#define MSG_ERR_MAXTEMP _UxGT("Err max temp")
-#define MSG_ERR_MINTEMP _UxGT("Err min temp")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err max temp stołu")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err min temp stołu")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY first")
-#define MSG_HALTED _UxGT("Drukarka zatrzym.")
-#define MSG_PLEASE_RESET _UxGT("Proszę zresetować")
-#define MSG_SHORT_DAY _UxGT("d") // One character only
-#define MSG_SHORT_HOUR _UxGT("g") // One character only
-#define MSG_SHORT_MINUTE _UxGT("m") // One character only
-#define MSG_HEATING _UxGT("Rozgrzewanie...")
-#define MSG_BED_HEATING _UxGT("Rozgrzewanie stołu...")
-#define MSG_DELTA_CALIBRATE _UxGT("Kalibrowanie Delty")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibruj X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibruj Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibruj Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibruj środek")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Polish");
-#define MSG_INFO_MENU _UxGT("O drukarce")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info drukarki")
-#define MSG_INFO_STATS_MENU _UxGT("Statystyki")
-#define MSG_INFO_BOARD_MENU _UxGT("Board Info")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistory")
-#define MSG_INFO_EXTRUDERS _UxGT("Ekstrudery")
-#define MSG_INFO_BAUDRATE _UxGT("Predkość USB")
-#define MSG_INFO_PROTOCOL _UxGT("Protokół")
-#define MSG_CASE_LIGHT _UxGT("Oświetlenie")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" gotowy.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Karta włożona");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Karta usunięta");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Kranców."); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu główne");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Autostart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Wyłącz silniki");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Pozycja zerowa");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Zeruj X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Zeruj Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Zeruj Z");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Poziom. stołu");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Pozycja zerowa");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknij by rozp.");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Następny punkt");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Wypoziomowano!");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Własne Polecenia");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Ust. poz. zer.");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust.");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ustaw punkt zero");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz.");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Rozgrzej stół ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Ustaw. rozg. ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" Dysza ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Rozgrzej ") PREHEAT_2_LABEL _UxGT(" wsz.");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Rozgrzej stół ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Ustaw. rozg. ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Chłodzenie");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Włącz zasilacz");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Wyłącz zasilacz");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Ekstruzja");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Wycofanie");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Ruch osi");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Poziom. stołu");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Przesuń w X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Przesuń w Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Przesuń w Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Ekstruzja (os E)");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Ekstruzja (os E) ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Ekstruzja (os E) ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Ekstruzja (os E) ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Ekstruzja (os E) ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Ekstruzja (os E) ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Ekstruzja (os E) ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Przesuń co %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Przesuń co .1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Przesuń co 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Przesuń co 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Predkość");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Stół Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Dysza");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Dysza ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Dysza ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Dysza ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Dysza ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Dysza ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Dysza ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Stół");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Obroty wiatraka");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Obroty wiatraka 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Obroty wiatraka 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Obroty wiatraka 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Przepływ");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Przepływ ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Przepływ ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Przepływ ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Przepływ ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Przepływ ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Przepływ ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Ustawienia");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto. temperatura");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Wł.");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Wył.");
+ PROGMEM Language_Str MSG_ACC = _UxGT("Przyśpieszenie");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Zryw");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("Zryw V") LCD_STR_A;
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("Zryw V") LCD_STR_B;
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("Zryw V") LCD_STR_C;
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Zryw Ve");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vskok min");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-wycofanie");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-przesuń.");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("kroki/mm");
+ PROGMEM Language_Str MSG_A_STEPS = _UxGT("kroki") LCD_MSG_A _UxGT("/mm");
+ PROGMEM Language_Str MSG_B_STEPS = _UxGT("kroki") LCD_MSG_B _UxGT("/mm");
+ PROGMEM Language_Str MSG_C_STEPS = _UxGT("kroki") LCD_MSG_C _UxGT("/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("krokiE/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("kroki ") LCD_STR_E0 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("kroki ") LCD_STR_E1 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("kroki ") LCD_STR_E2 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("kroki ") LCD_STR_E3 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("kroki ") LCD_STR_E4 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("kroki ") LCD_STR_E5 _UxGT("/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Ruch");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E w mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Śr. fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Śr. fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Śr. fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Śr. fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Śr. fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Śr. fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Śr. fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Ustaw. fabryczne");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Ekran główny");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Przygotuj");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Strojenie");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pauza");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Wznowienie");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Stop");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Karta SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Brak karty");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Uśpij...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Oczekiwanie...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Druk przerwany");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Brak ruchu");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("Ubity. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("Zatrzymany. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Wycofaj mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Z Wycof. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Wycofaj V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Skok Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Cof. wycof. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Z Cof. wyc. mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Cof. wycof. V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Auto. wycofanie");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Zmień filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Zmień filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Zmień filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Zmień filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Zmień filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Zmień filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Zmień filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Inicjal. karty SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Zmiana karty SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z za stołem");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s first");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Błąd krańcówki");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Rozgrz. nieudane");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Błąd temperatury");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Zanik temp.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err max temp");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err min temp");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err max temp stołu");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err min temp stołu");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY first");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("Drukarka zatrzym.");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Proszę zresetować");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("g"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Rozgrzewanie...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Rozgrzewanie stołu...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Kalibrowanie Delty");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibruj X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibruj Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibruj Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibruj środek");
-#define MSG_EXPECTED_PRINTER _UxGT("Niepoprawna drukarka")
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("O drukarce");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info drukarki");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Statystyki");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Board Info");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistory");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Ekstrudery");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Predkość USB");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokół");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Oświetlenie");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Wydrukowano")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Ukończono")
- #define MSG_INFO_PRINT_TIME _UxGT("Czas druku")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najdł. druk")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Użyty fil.")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Wydrukowano")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Ukończono")
- #define MSG_INFO_PRINT_TIME _UxGT("Razem")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najdł. druk")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Użyty fil.")
-#endif
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Niepoprawna drukarka");
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("Zasilacz")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Czas druku");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil.");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Razem");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil.");
+ #endif
-#define MSG_DRIVE_STRENGTH _UxGT("Siła silnika")
-#define MSG_DAC_PERCENT _UxGT("Siła %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Temp");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Temp");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Zasilacz");
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("ZMIEŃ FILAMENT")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEŃ OPCJE:")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznów drukowanie")
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Siła silnika");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Siła %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Zapisz DAC EEPROM");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Czekam na ")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("zmianę filamentu")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("wyjęcie filamentu")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Włóz filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("i naciśnij przycisk")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuować...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("włożenie filamentu")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Proszę czekać...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Włóż i naciśnij prz.")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ładowanie...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ZMIEŃ FILAMENT");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ZMIEŃ OPCJE:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Wznów drukowanie");
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Czekam na ", "zmianę filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Włóz filament", "i naciśnij przycisk", "aby kontynuować..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Czekam na", "wznowienie druku"));
+ #else
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Proszę czekać..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Wysuwanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Włóż i naciśnij prz."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ładowanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznowienie..."));
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h
index f90999a357..7f3288f155 100644
--- a/Marlin/src/lcd/language/language_pt.h
+++ b/Marlin/src/lcd/language/language_pt.h
@@ -30,159 +30,186 @@
*
*/
-#define DISPLAY_CHARSET_ISO10646_1
-#define CHARSIZE 2
+ #define DISPLAY_CHARSET_ISO10646_1
-#define WELCOME_MSG MACHINE_NAME _UxGT(" pronta.")
-#define MSG_MEDIA_INSERTED _UxGT("Cartão inserido")
-#define MSG_MEDIA_REMOVED _UxGT("Cartão removido")
-#define MSG_MAIN _UxGT("Menu principal")
-#define MSG_AUTOSTART _UxGT("Autostart")
-#define MSG_DISABLE_STEPPERS _UxGT("Desactivar motores")
-#define MSG_AUTO_HOME _UxGT("Ir para origem")
-#define MSG_AUTO_HOME_X _UxGT("Ir para origem X")
-#define MSG_AUTO_HOME_Y _UxGT("Ir para origem Y")
-#define MSG_AUTO_HOME_Z _UxGT("Ir para origem Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Indo para origem")
-#define MSG_LEVEL_BED_WAITING _UxGT("Click para iniciar")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Próximo ponto")
-#define MSG_LEVEL_BED_DONE _UxGT("Pronto !")
-#define MSG_SET_HOME_OFFSETS _UxGT("Definir desvio")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets aplicados")
-#define MSG_SET_ORIGIN _UxGT("Definir origem")
-#define MSG_PREHEAT_1 _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_ALL _UxGT("Pre-aq. " PREHEAT_1_LABEL " Tudo")
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Pre-aq. " PREHEAT_1_LABEL " ") LCD_STR_THERMOMETER _UxGT("Base")
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Definições " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_2 _UxGT("Pre-aquecer " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N _UxGT("Pre-aquecer " PREHEAT_2_LABEL " ")
-#define MSG_PREHEAT_2_ALL _UxGT("Pre-aq. " PREHEAT_2_LABEL " Tudo")
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Pre-aq. " PREHEAT_2_LABEL " ") LCD_STR_THERMOMETER _UxGT("Base")
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Definições " PREHEAT_2_LABEL)
-#define MSG_COOLDOWN _UxGT("Arrefecer")
-#define MSG_SWITCH_PS_ON _UxGT("Ligar")
-#define MSG_SWITCH_PS_OFF _UxGT("Desligar")
-#define MSG_EXTRUDE _UxGT("Extrudir")
-#define MSG_RETRACT _UxGT("Retrair")
-#define MSG_MOVE_AXIS _UxGT("Mover eixo")
-#define MSG_MOVE_X _UxGT("Mover X")
-#define MSG_MOVE_Y _UxGT("Mover Y")
-#define MSG_MOVE_Z _UxGT("Mover Z")
-#define MSG_MOVE_E _UxGT("Mover Extrusor")
-#define MSG_MOVE_Z_DIST _UxGT("Mover %smm")
-#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mover 1mm")
-#define MSG_MOVE_10MM _UxGT("Mover 10mm")
-#define MSG_SPEED _UxGT("Velocidade")
-#define MSG_BED_Z _UxGT("Base Z")
-#define MSG_NOZZLE _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Bico")
-#define MSG_BED _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Base")
-#define MSG_FAN_SPEED _UxGT("Vel. ventoinha")
-#define MSG_FLOW _UxGT("Fluxo")
-#define MSG_CONTROL _UxGT("Controlo")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fact")
-#define MSG_AUTOTEMP _UxGT("Temp. Automática")
-#define MSG_LCD_ON _UxGT("On")
-#define MSG_LCD_OFF _UxGT("Off")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_ACC _UxGT("Acc")
-#define MSG_JERK _UxGT("Jerk")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-jerk")
- #define MSG_VB_JERK _UxGT("Vb-jerk")
- #define MSG_VC_JERK _UxGT("Vc-jerk")
-#else
- #define MSG_VA_JERK _UxGT("Vx-jerk")
- #define MSG_VB_JERK _UxGT("Vy-jerk")
- #define MSG_VC_JERK _UxGT("Vz-jerk")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-jerk")
-#define MSG_VMAX _UxGT(" Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retracção")
-#define MSG_A_TRAVEL _UxGT("A-movimento")
-#define MSG_STEPS_PER_MM _UxGT("Passo/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A passo/mm")
- #define MSG_BSTEPS _UxGT("B passo/mm")
- #define MSG_CSTEPS _UxGT("C passo/mm")
-#else
- #define MSG_ASTEPS _UxGT("X passo/mm")
- #define MSG_BSTEPS _UxGT("Y passo/mm")
- #define MSG_CSTEPS _UxGT("Z passo/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E passo/mm")
-#define MSG_E0_STEPS _UxGT("E1 passo/mm")
-#define MSG_E1_STEPS _UxGT("E2 passo/mm")
-#define MSG_E2_STEPS _UxGT("E3 passo/mm")
-#define MSG_E3_STEPS _UxGT("E4 passo/mm")
-#define MSG_E4_STEPS _UxGT("E5 passo/mm")
-#define MSG_E5_STEPS _UxGT("E6 passo/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movimento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E em mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Fil. Diam.")
-#define MSG_CONTRAST _UxGT("Contraste")
-#define MSG_STORE_EEPROM _UxGT("Guardar na memoria")
-#define MSG_LOAD_EEPROM _UxGT("Carregar da memoria")
-#define MSG_RESTORE_FAILSAFE _UxGT("Rest. de emergen.")
-#define MSG_REFRESH LCD_STR_REFRESH _UxGT(" Recarregar")
-#define MSG_WATCH _UxGT("Monitorizar")
-#define MSG_PREPARE _UxGT("Preparar")
-#define MSG_TUNE _UxGT("Afinar")
-#define MSG_PAUSE_PRINT _UxGT("Pausar impressão")
-#define MSG_RESUME_PRINT _UxGT("Retomar impressão")
-#define MSG_STOP_PRINT _UxGT("Parar impressão")
-#define MSG_MEDIA_MENU _UxGT("Imprimir do SD")
-#define MSG_NO_MEDIA _UxGT("Sem cartão SD")
-#define MSG_DWELL _UxGT("Em espera...")
-#define MSG_USERWAIT _UxGT("Á espera de ordem")
-#define MSG_PRINT_ABORTED _UxGT("Impressão cancelada")
-#define MSG_NO_MOVE _UxGT("Sem movimento")
-#define MSG_KILLED _UxGT("EMERGÊNCIA. ")
-#define MSG_STOPPED _UxGT("PARADO. ")
-#define MSG_CONTROL_RETRACT _UxGT(" Retrair mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Troca Retrair mm")
-#define MSG_CONTROL_RETRACTF _UxGT(" Retrair V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT(" Levantar mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT(" DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Troca DesRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT(" DesRet V")
-#define MSG_AUTORETRACT _UxGT(" AutoRetr.")
-#define MSG_FILAMENTCHANGE _UxGT("Trocar filamento")
-#define MSG_INIT_MEDIA _UxGT("Inici. cartão SD")
-#define MSG_CHANGE_MEDIA _UxGT("Trocar cartão SD")
-#define MSG_ZPROBE_OUT _UxGT("Sensor fora/base")
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s first")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Desvio Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Fim de curso")
-#define MSG_HEATING_FAILED_LCD _UxGT("Aquecimento falhou")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: REDUNDANT TEMP")
-#define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
-#define MSG_ERR_MAXTEMP _UxGT("Err: T Máxima")
-#define MSG_ERR_MINTEMP _UxGT("Err: T Mínima")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Err: T Base Máxima")
-#define MSG_ERR_MINTEMP_BED _UxGT("Err: T Base Mínima")
-#define MSG_HEATING _UxGT("Aquecendo...")
-#define MSG_BED_HEATING _UxGT("Aquecendo base...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibração Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
+namespace Language_pt {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_LCD_ENDSTOPS _UxGT("Fim de curso")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Portuguese");
-#define MSG_EXPECTED_PRINTER _UxGT("Impressora Incorreta")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" pronta.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Cartão inserido");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Cartão removido");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu principal");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Desactivar motores");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Ir para origem");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Ir para origem X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Ir para origem Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Ir para origem Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Click para iniciar");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo ponto");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Pronto !");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Definir desvio");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets aplicados");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Definir origem");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Definições ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL _UxGT(" Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" Tudo");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_2_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Definições ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Arrefecer");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Ligar");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Desligar");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrudir");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retrair");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mover eixo");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mover X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mover Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mover Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Mover Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Mover Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Mover Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Mover Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Mover Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Mover Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Mover Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mover %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mover 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mover 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mover 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocidade");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Base Z");
+ PROGMEM Language_Str MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Bico");
+ PROGMEM Language_Str MSG_NOZZLE_0 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = " " LCD_STR_THERMOMETER _UxGT(" Bico ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Base");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. ventoinha");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Vel. ventoinha 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Vel. ventoinha 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Vel. ventoinha 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Fluxo");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Fluxo ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Fluxo ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Fluxo ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Fluxo ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Fluxo ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Fluxo ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Controlo");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-retracção");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-movimento");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Passo/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E passo/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" passo/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movimento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E em mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Fil. Diam.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Fil. Diam. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Fil. Diam. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Fil. Diam. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Fil. Diam. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Fil. Diam. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Fil. Diam. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Guardar na memoria");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Carregar da memoria");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Rest. de emergen.");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Recarregar");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Monitorizar");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Afinar");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausar impressão");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Retomar impressão");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Parar impressão");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Imprimir do SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Sem cartão SD");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Em espera...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Á espera de ordem");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impressão cancelada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sem movimento");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("EMERGÊNCIA. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("PARADO. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT(" Retrair mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Troca Retrair mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT(" Retrair V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT(" Levantar mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT(" DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Troca DesRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT(" DesRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT(" AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Trocar filamento");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Trocar filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Trocar filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Trocar filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Trocar filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Trocar filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Trocar filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Inici. cartão SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Trocar cartão SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sensor fora/base");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Desvio Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Fim de curso");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Aquecimento falhou");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Err: T Máxima");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Err: T Mínima");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Err: T Base Máxima");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Err: T Base Mínima");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Aquecendo...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Aquecendo base...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibração Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro");
+
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Fim de curso");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impressora Incorreta");
+}
diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h
index f6da0b700f..548ba4cd97 100644
--- a/Marlin/src/lcd/language/language_pt_br.h
+++ b/Marlin/src/lcd/language/language_pt_br.h
@@ -29,416 +29,464 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_pt_br {
+ using namespace Language_en; // Inherit undefined strings from English
-// Put characters here that should be displayed with M117
-//_UxGT("áãàçÉéêíóõ")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Portuguese (BR)");
-#define CHARSIZE 2
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" pronto.");
-#define WELCOME_MSG MACHINE_NAME _UxGT(" pronto.")
+ PROGMEM Language_Str MSG_BACK = _UxGT("Voltar");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Cartão inserido");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Cartão removido");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Fins de curso");
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Fins curso");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Menu principal");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Config. Avançada");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Configuração");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Início automático");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Desabilit. motores");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menu Debug");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Testar Barra Progres");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Ir a origem XYZ");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Ir na origem X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Ir na origem Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Ir na origem Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto alinhar Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Clique para Iniciar");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo Ponto");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Fim nivelação!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Suavizar altura");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Compensar origem");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Alteração aplicada");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Ajustar Origem");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Extrusora ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Extrusora ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Ajustar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Pre-aquecer ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Extrusora ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Extrusora ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Ajustar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Customizar Pre-aq.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Esfriar");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Ligar");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Desligar");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrusar");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Retrair");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Mover eixo");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Nivelação Mesa");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Nivelar Mesa");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Nivelar Cantos");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Próximo Canto");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Editar Malha");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Fim da Edição");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Índice X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Índice Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Valor Z");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Comando customizado");
-#define MSG_BACK _UxGT("Voltar")
-#define MSG_MEDIA_INSERTED _UxGT("Cartão inserido")
-#define MSG_MEDIA_REMOVED _UxGT("Cartão removido")
-#define MSG_LCD_ENDSTOPS _UxGT("Fins de curso")
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft Fins curso")
-#define MSG_MAIN _UxGT("Menu principal")
-#define MSG_ADVANCED_SETTINGS _UxGT("Config. Avançada")
-#define MSG_CONFIGURATION _UxGT("Configuração")
-#define MSG_AUTOSTART _UxGT("Início automático")
-#define MSG_DISABLE_STEPPERS _UxGT("Desabilit. motores")
-#define MSG_DEBUG_MENU _UxGT("Menu Debug")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Testar Barra Progres")
-#define MSG_AUTO_HOME _UxGT("Ir a origem XYZ")
-#define MSG_AUTO_HOME_X _UxGT("Ir na origem X")
-#define MSG_AUTO_HOME_Y _UxGT("Ir na origem Y")
-#define MSG_AUTO_HOME_Z _UxGT("Ir na origem Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Auto alinhar Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Indo para origem")
-#define MSG_LEVEL_BED_WAITING _UxGT("Clique para Iniciar")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Próximo Ponto")
-#define MSG_LEVEL_BED_DONE _UxGT("Fim nivelação!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Suavizar altura")
-#define MSG_SET_HOME_OFFSETS _UxGT("Compensar origem")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Alteração aplicada")
-#define MSG_SET_ORIGIN _UxGT("Ajustar Origem")
-#define MSG_PREHEAT_1 _UxGT("Pre-aquecer " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL _UxGT("Pre-aq.Todo " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_END _UxGT("Extrusora " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_BEDONLY _UxGT("Pre-aq.Mesa " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_SETTINGS _UxGT("Ajustar " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_2 _UxGT("Pre-aquecer " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL _UxGT("Pre-aq.Todo " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_END _UxGT("Extrusora " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_BEDONLY _UxGT("Pre-aq.Mesa " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_SETTINGS _UxGT("Ajustar " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_CUSTOM _UxGT("Customizar Pre-aq.")
-#define MSG_COOLDOWN _UxGT("Esfriar")
-#define MSG_SWITCH_PS_ON _UxGT("Ligar")
-#define MSG_SWITCH_PS_OFF _UxGT("Desligar")
-#define MSG_EXTRUDE _UxGT("Extrusar")
-#define MSG_RETRACT _UxGT("Retrair")
-#define MSG_MOVE_AXIS _UxGT("Mover eixo")
-#define MSG_BED_LEVELING _UxGT("Nivelação Mesa")
-#define MSG_LEVEL_BED _UxGT("Nivelar Mesa")
-#define MSG_LEVEL_CORNERS _UxGT("Nivelar Cantos")
-#define MSG_NEXT_CORNER _UxGT("Próximo Canto")
-#define MSG_EDIT_MESH _UxGT("Editar Malha")
-#define MSG_EDITING_STOPPED _UxGT("Fim da Edição")
-#define MSG_MESH_X _UxGT("Índice X")
-#define MSG_MESH_Y _UxGT("Índice Y")
-#define MSG_MESH_EDIT_Z _UxGT("Valor Z")
-#define MSG_USER_MENU _UxGT("Comando customizado")
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("Modo IDEX");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Estacionar");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicação");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Cópia espelhada");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle Total");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2o bico X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2o bico Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2o bico Z");
-#define MSG_IDEX_MENU _UxGT("Modo IDEX")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Estacionar")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplicação")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Cópia espelhada")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Controle Total")
-#define MSG_X_OFFSET _UxGT("2o bico X")
-#define MSG_Y_OFFSET _UxGT("2o bico Y")
-#define MSG_Z_OFFSET _UxGT("2o bico Z")
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Executando G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Ferramentas UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Nivel. Mesa Unif.");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Fazer malha manual");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Calçar e calibrar");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Medir");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Remover e calibrar");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Movendo para Próximo");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Ativar UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Desativar UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Mesa");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Extrusora");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Editar Malha");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Editar Malha Custom");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste Fino da Malha");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Fim da Edição");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Montar Malha Custom");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Montar ");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Montar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Montar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Montar Malha fria");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar Altura");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Quant. de Altura");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Malha");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Checar ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Checar ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validar Malha Custom");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Continuar Malha");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Nivelação da Malha");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelação 3 pontos");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivelação Grid");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Nivelar Malha");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Cantos");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Tipo de Mapa");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Salvar Mapa da Malha");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Enviar Para Host");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salvar Malha CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Salvar Backup");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Informação do UBL");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Qtd de Enchimento");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Enchimento Manual");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Enchimento Smart");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Preencher malha");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar tudo");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar próximo");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajuste Fino de Todos");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Mais Próximo");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Armazenamento Malha");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Slot de Memória");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Ler Malha");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Salvar Malha");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Malha %i carregada");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Malha %i salva");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Sem armazenamento");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Erro ao salvar UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Erro no restauro UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Compensação Z parou");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo a passo");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Montar Malha fria");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Enchimento Smart");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Validar Malha");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajuste Fino de Todos");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Validar Malha");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajuste Fino de Todos");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Salvar Malha");
-#define MSG_UBL_DOING_G29 _UxGT("Executando G29")
-#define MSG_UBL_TOOLS _UxGT("Ferramentas UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("Nivel. Mesa Unif.")
-#define MSG_UBL_MANUAL_MESH _UxGT("Fazer malha manual")
-#define MSG_UBL_BC_INSERT _UxGT("Calçar e calibrar")
-#define MSG_UBL_BC_INSERT2 _UxGT("Medir")
-#define MSG_UBL_BC_REMOVE _UxGT("Remover e calibrar")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Movendo para Próximo")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Ativar UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Desativar UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Temp. Mesa")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Temp. Extrusora")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Editar Malha")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Editar Malha Custom")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Ajuste Fino da Malha")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Fim da Edição")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Montar Malha Custom")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Montar ")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Montar " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Montar " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Montar Malha fria")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Ajustar Altura")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Quant. de Altura")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Validar Malha")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Checar " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Checar " PREHEAT_2_LABEL)
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Validar Malha Custom")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Continuar Malha")
-#define MSG_UBL_MESH_LEVELING _UxGT("Nivelação da Malha")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Nivelação 3 pontos")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Nivelação Grid")
-#define MSG_UBL_MESH_LEVEL _UxGT("Nivelar Malha")
-#define MSG_UBL_SIDE_POINTS _UxGT("Cantos")
-#define MSG_UBL_MAP_TYPE _UxGT("Tipo de Mapa")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Salvar Mapa da Malha")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Enviar Para Host")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Salvar Malha CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Salvar Backup")
-#define MSG_UBL_INFO_UBL _UxGT("Informação do UBL")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Qtd de Enchimento")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Enchimento Manual")
-#define MSG_UBL_SMART_FILLIN _UxGT("Enchimento Smart")
-#define MSG_UBL_FILLIN_MESH _UxGT("Preencher malha")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Invalidar tudo")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Invalidar próximo")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Ajuste Fino de Todos")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Ajustar Mais Próximo")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Armazenamento Malha")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Slot de Memória")
-#define MSG_UBL_LOAD_MESH _UxGT("Ler Malha")
-#define MSG_UBL_SAVE_MESH _UxGT("Salvar Malha")
-#define MSG_MESH_LOADED _UxGT("Malha %i carregada")
-#define MSG_MESH_SAVED _UxGT("Malha %i salva")
-#define MSG_UBL_NO_STORAGE _UxGT("Sem armazenamento")
-#define MSG_UBL_SAVE_ERROR _UxGT("Erro ao salvar UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Erro no restauro UBL")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Compensação Z parou")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("UBL passo a passo")
-#define MSG_LED_CONTROL _UxGT("Controle do LED")
-#define MSG_LEDS _UxGT("Luz")
-#define MSG_LED_PRESETS _UxGT("Configuração da Luz")
-#define MSG_SET_LEDS_RED _UxGT("Luz Vermelha")
-#define MSG_SET_LEDS_ORANGE _UxGT("Luz Laranja")
-#define MSG_SET_LEDS_YELLOW _UxGT("Luz Amarela")
-#define MSG_SET_LEDS_GREEN _UxGT("Luz Verde")
-#define MSG_SET_LEDS_BLUE _UxGT("Luz Azul")
-#define MSG_SET_LEDS_INDIGO _UxGT("Luz Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Luz Violeta")
-#define MSG_SET_LEDS_WHITE _UxGT("Luz Branca")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Luz Padrão")
-#define MSG_CUSTOM_LEDS _UxGT("Luz Customizada")
-#define MSG_INTENSITY_R _UxGT("Intensidade Vermelho")
-#define MSG_INTENSITY_G _UxGT("Intensidade Verde")
-#define MSG_INTENSITY_B _UxGT("Intensidade Azul")
-#define MSG_INTENSITY_W _UxGT("Intensidade Branco")
-#define MSG_LED_BRIGHTNESS _UxGT("Brilho")
-#define MSG_MOVING _UxGT("Movendo...")
-#define MSG_FREE_XY _UxGT("Liberar XY")
-#define MSG_MOVE_X _UxGT("Mover X")
-#define MSG_MOVE_Y _UxGT("Mover Y")
-#define MSG_MOVE_Z _UxGT("Mover Z")
-#define MSG_MOVE_E _UxGT("Mover Extrusor")
-#define MSG_HOTEND_TOO_COLD _UxGT("Extrus. mto fria")
-#define MSG_MOVE_Z_DIST _UxGT("Mover %smm")
-#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Mover 1mm")
-#define MSG_MOVE_10MM _UxGT("Mover 10mm")
-#define MSG_SPEED _UxGT("Velocidade")
-#define MSG_BED_Z _UxGT("Base Z")
-#define MSG_NOZZLE _UxGT("Bocal")
-#define MSG_BED _UxGT("Mesa")
-#define MSG_FAN_SPEED _UxGT("Vel. Ventoinha")
-#define MSG_EXTRA_FAN_SPEED _UxGT("+Vel. Ventoinha")
-#define MSG_FLOW _UxGT("Vazão")
-#define MSG_CONTROL _UxGT("Controle")
-#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Máx")
-#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Fator")
-#define MSG_AUTOTEMP _UxGT("Temp. Automática")
-#define MSG_LCD_ON _UxGT("Ligado")
-#define MSG_LCD_OFF _UxGT("Desligado")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Selecionar")
-#define MSG_ACC _UxGT("Acel.")
-#define MSG_JERK _UxGT("Arrancada")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("arrancada VA")
- #define MSG_VB_JERK _UxGT("arrancada VB")
- #define MSG_VC_JERK _UxGT("arrancada VC")
-#else
- #define MSG_VA_JERK _UxGT("arrancada VX")
- #define MSG_VB_JERK _UxGT("arrancada VY")
- #define MSG_VC_JERK _UxGT("arrancada VZ")
-#endif
-#define MSG_VE_JERK _UxGT("arrancada VE")
-#define MSG_JUNCTION_DEVIATION _UxGT("Desv. Junção")
-#define MSG_VELOCITY _UxGT("Velocidade")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VDeslocamento min")
-#define MSG_ACCELERATION _UxGT("Aceleração")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("Retrair A")
-#define MSG_A_TRAVEL _UxGT("Movimento A")
-#define MSG_STEPS_PER_MM _UxGT("Passo/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Passo A/mm")
- #define MSG_BSTEPS _UxGT("Passo B/mm")
- #define MSG_CSTEPS _UxGT("Passo C/mm")
-#else
- #define MSG_ASTEPS _UxGT("Passo X/mm")
- #define MSG_BSTEPS _UxGT("Passo Y/mm")
- #define MSG_CSTEPS _UxGT("Passo Z/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E/mm")
-#define MSG_E0_STEPS _UxGT("E1/mm")
-#define MSG_E1_STEPS _UxGT("E2/mm")
-#define MSG_E2_STEPS _UxGT("E3/mm")
-#define MSG_E3_STEPS _UxGT("E4/mm")
-#define MSG_E4_STEPS _UxGT("E5/mm")
-#define MSG_E5_STEPS _UxGT("E6/mm")
-#define MSG_TEMPERATURE _UxGT("Temperatura")
-#define MSG_MOTION _UxGT("Movimento")
-#define MSG_FILAMENT _UxGT("Filamento")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("Extrusão em mm3")
-#define MSG_FILAMENT_DIAM _UxGT("Diâmetro Fil.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Descarr. mm")
-#define MSG_FILAMENT_LOAD _UxGT("Carregar mm")
-#define MSG_ADVANCE_K _UxGT("Avanço K")
-#define MSG_CONTRAST _UxGT("Contraste")
-#define MSG_STORE_EEPROM _UxGT("Salvar Configuração")
-#define MSG_LOAD_EEPROM _UxGT("Ler Configuração")
-#define MSG_RESTORE_FAILSAFE _UxGT("Restauro seguro")
-#define MSG_INIT_EEPROM _UxGT("Iniciar EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Atualiz. SD")
-#define MSG_RESET_PRINTER _UxGT("Resetar Impressora")
-#define MSG_REFRESH _UxGT("Atualização")
-#define MSG_WATCH _UxGT("Informações")
-#define MSG_PREPARE _UxGT("Preparar")
-#define MSG_TUNE _UxGT("Ajustar")
-#define MSG_PAUSE_PRINT _UxGT("Pausar impressão")
-#define MSG_RESUME_PRINT _UxGT("Resumir impressão")
-#define MSG_STOP_PRINT _UxGT("Parar impressão")
-#define MSG_OUTAGE_RECOVERY _UxGT("Recuperar Impressão")
-#define MSG_MEDIA_MENU _UxGT("Imprimir do SD")
-#define MSG_NO_MEDIA _UxGT("Sem cartão SD")
-#define MSG_DWELL _UxGT("Dormindo...")
-#define MSG_USERWAIT _UxGT("Clique para retomar")
-#define MSG_PRINT_PAUSED _UxGT("Impressão Pausada")
-#define MSG_PRINTING _UxGT("Imprimindo...")
-#define MSG_PRINT_ABORTED _UxGT("Impressão Abortada")
-#define MSG_NO_MOVE _UxGT("Sem movimento")
-#define MSG_KILLED _UxGT("PARADA DE EMERGÊNCIA")
-#define MSG_STOPPED _UxGT("PAROU. ")
-#define MSG_CONTROL_RETRACT _UxGT("Retrair mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Retrair Troca mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retrair V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Saltar mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Des-Retrair mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Des-RetTroca mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Des-Retrair V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("Des-RetTroca V")
-#define MSG_AUTORETRACT _UxGT("Retração Automática")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Distancia Retração")
-#define MSG_TOOL_CHANGE _UxGT("Mudar Ferramenta")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Levantar Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Preparar Veloc.")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Veloc. Retração")
-#define MSG_FILAMENTCHANGE _UxGT("Trocar Filamento")
-#define MSG_FILAMENTLOAD _UxGT("Carregar Filamento")
-#define MSG_FILAMENTUNLOAD _UxGT("Descarreg. Filamento")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Descarregar Todos")
-#define MSG_INIT_MEDIA _UxGT("Iniciar SD")
-#define MSG_CHANGE_MEDIA _UxGT("Trocar SD")
-#define MSG_ZPROBE_OUT _UxGT("Sonda fora da mesa")
-#define MSG_SKEW_FACTOR _UxGT("Fator de Cisalho")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Testar BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("Reiniciar BLTouch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Estender BLTouch")
-#define MSG_BLTOUCH_STOW _UxGT("Recolher BLTouch")
-#define MSG_MANUAL_DEPLOY _UxGT("Estender Sonda-Z")
-#define MSG_MANUAL_STOW _UxGT("Recolher Sonda-Z")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Controle do LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Luz");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Configuração da Luz");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Luz Vermelha");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Luz Laranja");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Luz Amarela");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Luz Verde");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Luz Azul");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Luz Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Luz Violeta");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Luz Branca");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Luz Padrão");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Luz Customizada");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Intensidade Vermelho");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Intensidade Verde");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Intensidade Azul");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Intensidade Branco");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Brilho");
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Movendo...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Liberar XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Mover X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Mover Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Mover Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Mover Extrusor");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Mover Extrusor ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Mover Extrusor ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Mover Extrusor ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Mover Extrusor ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Mover Extrusor ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Mover Extrusor ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Extrus. mto fria");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Mover %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Mover 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Mover 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Mover 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Velocidade");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Base Z");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Bocal");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Bocal ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Bocal ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Bocal ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Bocal ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Bocal ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Bocal ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Mesa");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Vel. Ventoinha");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Vel. Ventoinha 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Vel. Ventoinha 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Vel. Ventoinha 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("+Vel. Ventoinha");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("+Vel. Ventoinha 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("+Vel. Ventoinha 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("+Vel. Ventoinha 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Vazão");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Vazão ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Vazão ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Vazão ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Vazão ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Vazão ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Vazão ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Controle");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Máx");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fator");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Temp. Automática");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Ligado");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Desligado");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Selecionar");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Selecionar ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Selecionar ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Selecionar ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Selecionar ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Selecionar ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Selecionar ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Acel.");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Arrancada");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("arrancada V") LCD_STR_A;
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("arrancada V") LCD_STR_B;
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("arrancada V") LCD_STR_C;
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("arrancada VE");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Desv. Junção");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Velocidade");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("VDeslocamento min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Aceleração");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Retrair A");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Movimento A");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Passo/mm");
+ PROGMEM Language_Str MSG_A_STEPS = _UxGT("Passo ") LCD_STR_A _UxGT("/mm");
+ PROGMEM Language_Str MSG_B_STEPS = _UxGT("Passo ") LCD_STR_B _UxGT("/mm");
+ PROGMEM Language_Str MSG_C_STEPS = _UxGT("Passo ") LCD_STR_C _UxGT("/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Temperatura");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Movimento");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filamento");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("Extrusão em mm3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Diâmetro Fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Diâmetro Fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Diâmetro Fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Diâmetro Fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Diâmetro Fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Diâmetro Fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Diâmetro Fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Descarr. mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Carregar mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("Avanço K");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("Avanço K ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("Avanço K ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("Avanço K ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("Avanço K ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("Avanço K ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("Avanço K ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Contraste");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Salvar Configuração");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Ler Configuração");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Restauro seguro");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Iniciar EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Atualiz. SD");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Resetar Impressora");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Atualização");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Informações");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Preparar");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Ajustar");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pausar impressão");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Resumir impressão");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Parar impressão");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impressão");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Imprimir do SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Sem cartão SD");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Dormindo...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Clique para retomar");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Impressão Pausada");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Imprimindo...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Impressão Abortada");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Sem movimento");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("PARADA DE EMERGÊNCIA");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("PAROU. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retrair mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Retrair Troca mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retrair V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saltar mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Des-Retrair mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Des-RetTroca mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Des-Retrair V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Des-RetTroca V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Retração Automática");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Distancia Retração");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Mudar Ferramenta");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Levantar Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Preparar Veloc.");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Veloc. Retração");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Trocar Filamento");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Trocar Filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Trocar Filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Trocar Filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Trocar Filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Trocar Filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Trocar Filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Carregar Filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Carregar Filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Carregar Filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Carregar Filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Carregar Filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Carregar Filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Descarreg. Filamento ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Descarreg. Filamento ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Descarreg. Filamento ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Descarreg. Filamento ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Descarreg. Filamento ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Descarreg. Filamento ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Descarregar Todos");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Iniciar SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Trocar SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda fora da mesa");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Fator de Cisalho");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Testar BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Reiniciar BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Estender BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Recolher BLTouch");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Estender Sonda-Z");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Recolher Sonda-Z");
-#define MSG_HOME_FIRST _UxGT("Home %s%s%s Primeiro")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Compensar Sonda em Z")
-#define MSG_BABYSTEP_X _UxGT("Passinho X")
-#define MSG_BABYSTEP_Y _UxGT("Passinho Y")
-#define MSG_BABYSTEP_Z _UxGT("Passinho Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Abortar Fim de Curso")
-#define MSG_HEATING_FAILED_LCD _UxGT("Aquecimento falhou")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Aquecer mesa falhou")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Erro:Temp Redundante")
-#define MSG_THERMAL_RUNAWAY _UxGT("ESCAPE TÉRMICO")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("ESCAPE TÉRMICO MESA")
-#define MSG_ERR_MAXTEMP _UxGT("Erro:Temp Máxima")
-#define MSG_ERR_MINTEMP _UxGT("Erro:Temp Mínima")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Erro:Temp Mesa Máx")
-#define MSG_ERR_MINTEMP_BED _UxGT("Erro:Temp Mesa Mín")
-#define MSG_ERR_Z_HOMING _UxGT("Home XY Primeiro")
-#define MSG_HALTED _UxGT("IMPRESSORA PAROU")
-#define MSG_PLEASE_RESET _UxGT("Favor resetar")
-#define MSG_SHORT_DAY _UxGT("d")
-#define MSG_SHORT_HOUR _UxGT("h")
-#define MSG_SHORT_MINUTE _UxGT("m")
-#define MSG_HEATING _UxGT("Aquecendo...")
-#define MSG_COOLING _UxGT("Resfriando...")
-#define MSG_BED_HEATING _UxGT("Aquecendo mesa...")
-#define MSG_BED_COOLING _UxGT("Esfriando mesa...")
-#define MSG_DELTA_CALIBRATE _UxGT("Calibrar Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Home %s%s%s Primeiro");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Compensar Sonda em Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Passinho X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Passinho Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Passinho Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Abortar Fim de Curso");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Aquecimento falhou");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Aquecer mesa falhou");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro:Temp Redundante");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ESCAPE TÉRMICO");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("ESCAPE TÉRMICO MESA");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Erro:Temp Máxima");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Erro:Temp Mínima");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Erro:Temp Mesa Máx");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Erro:Temp Mesa Mín");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Home XY Primeiro");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("IMPRESSORA PAROU");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Favor resetar");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d");
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h");
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Aquecendo...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Resfriando...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Aquecendo mesa...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Esfriando mesa...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Calibrar Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro");
-#define MSG_DELTA_SETTINGS _UxGT("Configuração Delta")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto-Calibração")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Calibrar Altura")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Desloc. Sonda Z")
-#define MSG_DELTA_DIAG_ROD _UxGT("Haste Diagonal")
-#define MSG_DELTA_HEIGHT _UxGT("Altura")
-#define MSG_DELTA_RADIUS _UxGT("Raio")
-#define MSG_INFO_MENU _UxGT("Sobre")
-#define MSG_INFO_PRINTER_MENU _UxGT("Impressora")
-#define MSG_3POINT_LEVELING _UxGT("Nivelamento 3 pontos")
-#define MSG_LINEAR_LEVELING _UxGT("Nivelamento Linear")
-#define MSG_BILINEAR_LEVELING _UxGT("Nivelamento Bilinear")
-#define MSG_UBL_LEVELING _UxGT("Nivelamento UBL")
-#define MSG_MESH_LEVELING _UxGT("Nivelamento da Malha")
-#define MSG_INFO_STATS_MENU _UxGT("Estatísticas")
-#define MSG_INFO_BOARD_MENU _UxGT("Info. da Placa")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistores")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrusoras")
-#define MSG_INFO_BAUDRATE _UxGT("Taxa de Transmissão")
-#define MSG_INFO_PROTOCOL _UxGT("Protocolo")
-#define MSG_CASE_LIGHT _UxGT("Luz da Impressora")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Intensidade Brilho")
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Configuração Delta");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-Calibração");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Calibrar Altura");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Desloc. Sonda Z");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Haste Diagonal");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Altura");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Raio");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Sobre");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Impressora");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Nivelamento 3 pontos");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Nivelamento Linear");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Nivelamento Bilinear");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Nivelamento UBL");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Nivelamento da Malha");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Estatísticas");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info. da Placa");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrusoras");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Taxa de Transmissão");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protocolo");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Luz da Impressora");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Intensidade Brilho");
-#define MSG_EXPECTED_PRINTER _UxGT("Impressora Incorreta")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impressora Incorreta");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Total de Impressões")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Realizadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Tempo de Impressão")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Trabalho Mais longo")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Total de Extrusão")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Qtd de Impressões")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Realizadas")
- #define MSG_INFO_PRINT_TIME _UxGT("Tempo de Impressão")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Maior trabalho")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("T. Extrusão")
-#endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Total de Impressões");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Trabalho Mais longo");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Total de Extrusão");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Qtd de Impressões");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Maior trabalho");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("T. Extrusão");
+ #endif
-#define MSG_INFO_MIN_TEMP _UxGT("Temp Mín")
-#define MSG_INFO_MAX_TEMP _UxGT("Temp Máx")
-#define MSG_INFO_PSU _UxGT("PSU")
-#define MSG_DRIVE_STRENGTH _UxGT("Força do Motor")
-#define MSG_DAC_PERCENT _UxGT("Driver %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Escrever EEPROM DAC")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Temp Mín");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Temp Máx");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("PSU");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Força do Motor");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Escrever EEPROM DAC");
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("IMPRESSÃO PAUSADA")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("CARREGAR FILAMENTO")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("DESCARREG. FILAMENTO")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Config. de Retomada")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purgar mais")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continuar Impressão")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Bocal: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Sensor filamento")
-#define MSG_ERR_HOMING_FAILED _UxGT("Falha ao ir à origem")
-#define MSG_ERR_PROBING_FAILED _UxGT("Falha ao sondar")
-#define MSG_M600_TOO_COLD _UxGT("M600: Muito frio")
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESSÃO PAUSADA");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARREGAR FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARREG. FILAMENTO");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Config. de Retomada");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar mais");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar Impressão");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Bocal: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Sensor filamento");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Falha ao ir à origem");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Falha ao sondar");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Muito frio");
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Aperte o botão para")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("continuar impressão")
-
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperando o")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("inicio da")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("troca de filamento")
-
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Coloque filamento")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("pressione o botão")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("para continuar...")
-
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Pressione o botão")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("p/ aquecer o bocal")
-
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Aquecendo o bocal")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Aguarde...")
-
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Esperando")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("remoção de filamento")
-
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperando")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filamento")
-
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Espere pela")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("purga de filamento")
-
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Clique para finaliz.")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("purga de filamento")
-
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperando impressão")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("continuar")
-#else // LCD_HEIGHT < 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Clique p. continuar")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Aguarde...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insira e Clique")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Aquecendo...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejetando...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Carregando...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purgando...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Clique p. finalizar")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Continuando...")
-#endif
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Aperte o botão para", "continuar impressão"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando o", "inicio da", "troca de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Coloque filamento", "pressione o botão", "para continuar..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pressione o botão", "p/ aquecer o bocal"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Aquecendo o bocal", "Aguarde..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperando", "remoção de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperando", "filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere pela", "purga de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Clique para finaliz.", "purga de filamento"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impressão", "continuar"));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Aquecendo..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejetando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Clique p. finalizar"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Continuando..."));
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h
index dc32b8d8e1..f19b33dd0c 100644
--- a/Marlin/src/lcd/language/language_ru.h
+++ b/Marlin/src/lcd/language/language_ru.h
@@ -28,434 +28,544 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
-
#define DISPLAY_CHARSET_ISO10646_5
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" готов.")
-#define MSG_BACK _UxGT("Назад")
-#define MSG_MEDIA_INSERTED _UxGT("Карта вставлена")
-#define MSG_MEDIA_REMOVED _UxGT("Карта извлечена")
-#define MSG_MEDIA_RELEASED _UxGT("SD карта не активна")
-#define MSG_LCD_ENDSTOPS _UxGT("Эндстопы") // Max length 8 characters
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Прогр. эндстопы")
-#define MSG_MAIN _UxGT("Меню")
-#define MSG_ADVANCED_SETTINGS _UxGT("Другие настройки")
-#define MSG_CONFIGURATION _UxGT("Настройки")
-#define MSG_AUTOSTART _UxGT("Автостарт")
-#define MSG_DISABLE_STEPPERS _UxGT("Выкл. двигатели")
-#define MSG_DEBUG_MENU _UxGT("Меню отладки")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Тест индикатора")
-#define MSG_AUTO_HOME _UxGT("Авто парковка")
-#define MSG_AUTO_HOME_X _UxGT("Парковка X")
-#define MSG_AUTO_HOME_Y _UxGT("Парковка Y")
-#define MSG_AUTO_HOME_Z _UxGT("Парковка Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Нулевое положение")
-#define MSG_LEVEL_BED_WAITING _UxGT("Нажмите чтобы начать")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Следующая точка")
-#define MSG_LEVEL_BED_DONE _UxGT("Выравнивание готово!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Высота спада")
-#define MSG_SET_HOME_OFFSETS _UxGT("Запомнить парковку")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Коррекции применены")
-#define MSG_SET_ORIGIN _UxGT("Запомнить ноль")
-#define MSG_PREHEAT_1 _UxGT("Преднагрев " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" всё")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" сопло")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" стол")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" настр.")
-#define MSG_PREHEAT_2 _UxGT("Преднагрев " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" всё")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" сопло")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" стол")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" настр.")
-#define MSG_COOLDOWN _UxGT("Охлаждение")
-#define MSG_SWITCH_PS_ON _UxGT("Включить питание")
-#define MSG_SWITCH_PS_OFF _UxGT("Выключить питание")
-#define MSG_EXTRUDE _UxGT("Экструзия")
-#define MSG_RETRACT _UxGT("Втягивание")
-#define MSG_MOVE_AXIS _UxGT("Движение по осям")
-#define MSG_BED_LEVELING _UxGT("Калибровка стола")
-#define MSG_LEVEL_BED _UxGT("Калибровать стол")
-#define MSG_LEVEL_CORNERS _UxGT("Выровнять углы")
-#define MSG_NEXT_CORNER _UxGT("Следующий угол")
-#define MSG_EDIT_MESH _UxGT("Редактировать сетку")
-#define MSG_EDITING_STOPPED _UxGT("Ред. сетки завершено")
-#define MSG_USER_MENU _UxGT("Свои команды")
+namespace Language_ru {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_M48_TEST _UxGT("Проверка датчика Z")
-#define MSG_M48_DEVIATION _UxGT("Отклонение")
-#define MSG_M48_POINT _UxGT("Измерение")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Russian");
-// TODO: IDEX Menu
-#define MSG_OFFSETS_MENU _UxGT("Размещение сопел")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" готов.");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Назад");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Карта вставлена");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Карта извлечена");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("SD карта не активна");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Эндстопы"); // Max length 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. эндстопы");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Меню");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Другие настройки");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Настройки");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Автостарт");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Выкл. двигатели");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Меню отладки");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Тест индикатора");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Авто парковка");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Парковка X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Парковка Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Парковка Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Нулевое положение");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Нажмите чтобы начать");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Следующая точка");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Выравнивание готово!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Высота спада");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Запомнить парковку");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Коррекции применены");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Запомнить ноль");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Преднагрев ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Преднагрев ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" всё");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" стол");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Преднагрев ") PREHEAT_1_LABEL _UxGT(" настр.");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Преднагрев ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Преднагрев ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" всё");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" стол");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Преднагрев ") PREHEAT_2_LABEL _UxGT(" настр.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Охлаждение");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Включить питание");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Выключить питание");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Экструзия");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Втягивание");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Движение по осям");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Калибровка стола");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Калибровать стол");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Выровнять углы");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Следующий угол");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Редактировать сетку");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Ред. сетки завершено");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Свои команды");
-#define MSG_X_OFFSET _UxGT("2-е сопло X")
-#define MSG_Y_OFFSET _UxGT("2-е сопло Y")
-#define MSG_Z_OFFSET _UxGT("2-е сопло Z")
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("Проверка датчика Z");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Отклонение");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("Измерение");
-#define MSG_UBL_DOING_G29 _UxGT("Выполняем G29")
-#define MSG_UBL_TOOLS _UxGT("Утилиты UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("Калибровка UBL")
-#define MSG_UBL_MANUAL_MESH _UxGT("Постр. сетку от руки")
-#define MSG_UBL_BC_INSERT _UxGT("Пост. шимм и измер.")
-#define MSG_UBL_BC_INSERT2 _UxGT("Измерение")
-#define MSG_UBL_BC_REMOVE _UxGT("Удал. и измер. стол")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Двигаемся дальше")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Активировать UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Деактивировать UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Температура стола")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Температура сопла")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Редактор сеток")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Редакт. свою сетку")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Точная настр. сетки")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Ред. сетки завершено")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Построить свою сетку")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Построить сетку")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Построить сетку " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Построить сетку " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Построить хол. сетку")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Устан. высоту сетки")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Высота")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Проверить сетку")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Проверить сетку " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Проверить сетку " PREHEAT_2_LABEL)
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Проверить свою сетку")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Продолжить сетку")
-#define MSG_UBL_MESH_LEVELING _UxGT("Калибровка сетки")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Калибровка 3-х точек")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Калибровка растера")
-#define MSG_UBL_MESH_LEVEL _UxGT("Выровнить сетку")
-#define MSG_UBL_SIDE_POINTS _UxGT("Крайние точки")
-#define MSG_UBL_MAP_TYPE _UxGT("Тип карты")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Вывести карту сетки")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Вывести на хост")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Вывести в CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Забекапить сетку")
-#define MSG_UBL_INFO_UBL _UxGT("Вывод информации UBL")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Кол-во заполнителя")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Ручное заполнение")
-#define MSG_UBL_SMART_FILLIN _UxGT("Умное заполнение")
-#define MSG_UBL_FILLIN_MESH _UxGT("Заполнить сетку")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Аннулировать всё")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Аннулир. ближ. точку")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Точная настр. всего")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Настр. ближ. точки")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Хранилище сетей")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Слот памяти")
-#define MSG_UBL_LOAD_MESH _UxGT("Загрузить сетку стола")
-#define MSG_UBL_SAVE_MESH _UxGT("Сохранить сетку стола")
-#define MSG_MESH_LOADED _UxGT("Сетка %i загружена")
-#define MSG_MESH_SAVED _UxGT("Сетка %i сохранена")
-#define MSG_UBL_NO_STORAGE _UxGT("Нет хранилища")
-#define MSG_UBL_SAVE_ERROR _UxGT("Ошибка: Сохран. UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Ошибка: Восстан. UBL")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Смещение Z останов.")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Пошаговое UBL")
+ // TODO: IDEX Menu
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Размещение сопел");
-#define MSG_LED_CONTROL _UxGT("Настройки LED")
-#define MSG_LEDS _UxGT("Подсветку")
-#define MSG_LED_PRESETS _UxGT("Предустановки света")
-#define MSG_SET_LEDS_RED _UxGT("Красный свет")
-#define MSG_SET_LEDS_ORANGE _UxGT("Оранжевый свет")
-#define MSG_SET_LEDS_YELLOW _UxGT("Жёлтый свет")
-#define MSG_SET_LEDS_GREEN _UxGT("Зелёный свет")
-#define MSG_SET_LEDS_BLUE _UxGT("Синий свет")
-#define MSG_SET_LEDS_INDIGO _UxGT("Индиго свет")
-#define MSG_SET_LEDS_VIOLET _UxGT("Фиолетовый свет")
-#define MSG_SET_LEDS_WHITE _UxGT("Белый свет")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Свет по умолчанию")
-#define MSG_CUSTOM_LEDS _UxGT("Свои настр. света")
-#define MSG_INTENSITY_R _UxGT("Интенсивн. красного")
-#define MSG_INTENSITY_G _UxGT("Интенсивн. зелёного")
-#define MSG_INTENSITY_B _UxGT("Интенсивн. синего")
-#define MSG_INTENSITY_W _UxGT("Интенсивн. белого")
-#define MSG_LED_BRIGHTNESS _UxGT("Яркость")
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2-е сопло X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2-е сопло Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2-е сопло Z");
-#define MSG_MOVING _UxGT("Движемся...")
-#define MSG_FREE_XY _UxGT("Освобождаем XY")
-#define MSG_MOVE_X _UxGT("Движение по X")
-#define MSG_MOVE_Y _UxGT("Движение по Y")
-#define MSG_MOVE_Z _UxGT("Движение по Z")
-#define MSG_MOVE_E _UxGT("Экструдер")
-#define MSG_MOVE_Z_DIST _UxGT("Движение %sмм")
-#define MSG_MOVE_01MM _UxGT("Движение 0.1мм")
-#define MSG_MOVE_1MM _UxGT("Движение 1мм")
-#define MSG_MOVE_10MM _UxGT("Движение 10мм")
-#define MSG_SPEED _UxGT("Скорость")
-#define MSG_BED_Z _UxGT("Z стола")
-#define MSG_NOZZLE _UxGT("Сопло")
-#define MSG_BED _UxGT("Стол")
-#define MSG_FAN_SPEED _UxGT("Кулер")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Кулер доп.")
-#define MSG_FLOW _UxGT("Поток")
-#define MSG_CONTROL _UxGT("Настройки")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Мин")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Макс")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Фактор")
-#define MSG_AUTOTEMP _UxGT("Автотемпература")
-#define MSG_LCD_ON _UxGT("Вкл.")
-#define MSG_LCD_OFF _UxGT("Выкл.")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Выбор")
-#define MSG_ACC _UxGT("Ускорение")
-#define MSG_JERK _UxGT("Рывок")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-рывок")
- #define MSG_VB_JERK _UxGT("Vb-рывок")
- #define MSG_VC_JERK _UxGT("Vc-рывок")
-#else
- #define MSG_VX_JERK _UxGT("Vx-рывок")
- #define MSG_VY_JERK _UxGT("Vy-рывок")
- #define MSG_VZ_JERK _UxGT("Vz-рывок")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-рывок")
-#define MSG_VELOCITY _UxGT("Быстрота")
-#define MSG_VMAX _UxGT("Vмакс ")
-#define MSG_VMIN _UxGT("Vмин")
-#define MSG_VTRAV_MIN _UxGT("Vпутеш. мин")
-#define MSG_ACCELERATION _UxGT("Ускорение")
-#define MSG_AMAX _UxGT("Aмакс ")
-#define MSG_A_RETRACT _UxGT("A-втягивание")
-#define MSG_A_TRAVEL _UxGT("A-путеш.")
-#define MSG_STEPS_PER_MM _UxGT("Шаг/мм")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Aшаг/мм")
- #define MSG_BSTEPS _UxGT("Bшаг/мм")
- #define MSG_CSTEPS _UxGT("Cшаг/мм")
-#else
- #define MSG_ASTEPS _UxGT("Xшаг/мм")
- #define MSG_BSTEPS _UxGT("Yшаг/мм")
- #define MSG_CSTEPS _UxGT("Zшаг/мм")
-#endif
-#define MSG_ESTEPS _UxGT("Eшаг/мм")
-#define MSG_E0_STEPS _UxGT("E1шаг/мм")
-#define MSG_E1_STEPS _UxGT("E2шаг/мм")
-#define MSG_E2_STEPS _UxGT("E3шаг/мм")
-#define MSG_E3_STEPS _UxGT("E4шаг/мм")
-#define MSG_E4_STEPS _UxGT("E5шаг/мм")
-#define MSG_E5_STEPS _UxGT("E6шаг/мм")
-#define MSG_TEMPERATURE _UxGT("Температура")
-#define MSG_MOTION _UxGT("Движение")
-#define MSG_FILAMENT _UxGT("Филамент")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E в мм3")
-#define MSG_FILAMENT_DIAM _UxGT("Диаметр филамента")
-#define MSG_FILAMENT_UNLOAD _UxGT("Загрузка мм")
-#define MSG_FILAMENT_LOAD _UxGT("Выгрузка мм")
-#define MSG_ADVANCE_K _UxGT("K продвижения")
-#define MSG_CONTRAST _UxGT("Контраст LCD")
-#define MSG_STORE_EEPROM _UxGT("Сохранить настройки")
-#define MSG_LOAD_EEPROM _UxGT("Загрузить настройки")
-#define MSG_RESTORE_FAILSAFE _UxGT("Вернуть настройки")
-#define MSG_INIT_EEPROM _UxGT("Инициализация EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Обновление прошивки")
-#define MSG_RESET_PRINTER _UxGT("Сброс принтера")
-#define MSG_REFRESH _UxGT("Обновить")
-#define MSG_WATCH _UxGT("Информационный экран")
-#define MSG_PREPARE _UxGT("Подготовить")
-#define MSG_TUNE _UxGT("Настроить")
-#define MSG_START_PRINT _UxGT("Начало печати")
-#define MSG_BUTTON_NEXT _UxGT("Дальше")
-#define MSG_BUTTON_INIT _UxGT("Инициализация")
-#define MSG_BUTTON_STOP _UxGT("Остановить")
-#define MSG_BUTTON_PRINT _UxGT("Печать")
-#define MSG_BUTTON_RESET _UxGT("Сброс")
-#define MSG_BUTTON_CANCEL _UxGT("Отмена")
-#define MSG_BUTTON_DONE _UxGT("Готово")
-#define MSG_PAUSE_PRINT _UxGT("Пауза печати")
-#define MSG_RESUME_PRINT _UxGT("Продолжить печать")
-#define MSG_STOP_PRINT _UxGT("Остановить печать")
-#define MSG_OUTAGE_RECOVERY _UxGT("Восстановение сбоя")
-#define MSG_MEDIA_MENU _UxGT("Печать с SD карты")
-#define MSG_NO_MEDIA _UxGT("Нет SD карты")
-#define MSG_DWELL _UxGT("Сон...")
-#define MSG_USERWAIT _UxGT("Продолжить...")
-#define MSG_PRINT_PAUSED _UxGT("Печать на паузе")
-#define MSG_PRINT_ABORTED _UxGT("Печать отменена")
-#define MSG_NO_MOVE _UxGT("Нет движения.")
-#define MSG_KILLED _UxGT("УБИТО. ")
-#define MSG_STOPPED _UxGT("ОСТАНОВЛЕНО. ")
-#define MSG_CONTROL_RETRACT _UxGT("Втягивание мм")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Втягивание смены мм")
-#define MSG_CONTROL_RETRACTF _UxGT("Втягивание V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Втяг. прыжка мм")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Возврат мм")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Возврат смены мм")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Возврат V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("Возврат смены V")
-#define MSG_AUTORETRACT _UxGT("Авто Втягивание")
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Выполняем G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Утилиты UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("Калибровка UBL");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Постр. сетку от руки");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Пост. шимм и измер.");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Измерение");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Удал. и измер. стол");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Двигаемся дальше");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Активировать UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Деактивировать UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Температура стола");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Температура сопла");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Редактор сеток");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редакт. свою сетку");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Точная настр. сетки");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Ред. сетки завершено");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Построить сетку");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Построить сетку ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Построить сетку ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Построить хол. сетку");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Устан. высоту сетки");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Высота");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Проверить сетку");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Проверить сетку ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Проверить сетку ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Проверить свою сетку");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Продолжить сетку");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Калибровка сетки");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Калибровка 3-х точек");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Калибровка растера");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Выровнить сетку");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Крайние точки");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Тип карты");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Вывести карту сетки");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вывести на хост");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вывести в CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Забекапить сетку");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Вывод информации UBL");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполнителя");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Ручное заполнение");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Умное заполнение");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Заполнить сетку");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Аннулировать всё");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Аннулир. ближ. точку");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Точная настр. всего");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Настр. ближ. точки");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Хранилище сетей");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Слот памяти");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Загрузить сетку стола");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Сохранить сетку стола");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Сетка %i загружена");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Сетка %i сохранена");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Нет хранилища");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Ошибка: Сохран. UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Ошибка: Восстан. UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Смещение Z останов.");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Пошаговое UBL");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Построить хол. сетку");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Умное заполнение");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Проверить сетку");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точная настр. всего");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Проверить сетку");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точная настр. всего");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Сохранить сетку стола");
-// TODO: Filament Change Swap / Purge Length
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Настройки LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Подсветку");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Предустановки света");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Красный свет");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Оранжевый свет");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Жёлтый свет");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Зелёный свет");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Синий свет");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Индиго свет");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Фиолетовый свет");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Белый свет");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Свои настр. света");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Интенсивн. красного");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Интенсивн. зелёного");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Интенсивн. синего");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Интенсивн. белого");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Яркость");
-#define MSG_TOOL_CHANGE _UxGT("Смена сопел")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Поднятие по Z")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Движемся...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Освобождаем XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Движение по X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Движение по Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Движение по Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Экструдер");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Экструдер ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Экструдер ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Экструдер ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Экструдер ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Экструдер ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Экструдер ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Движение %sмм");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Движение 0.1мм");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Движение 1мм");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Движение 10мм");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Скорость");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Z стола");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Сопло");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Стол");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Кулер");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Кулер 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Кулер 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Кулер 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Кулер доп.");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Кулер доп. 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Кулер доп. 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Кулер доп. 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Поток");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Поток ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Поток ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Поток ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Поток ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Поток ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Поток ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Настройки");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Мин");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Макс");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Автотемпература");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Вкл.");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Выкл.");
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Выбор");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Выбор ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Выбор ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Выбор ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Выбор ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Выбор ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Выбор ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Ускорение");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Рывок");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-рывок");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-рывок");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-рывок");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-рывок");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Быстрота");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vмакс ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vмакс ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vмакс ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vмакс ") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("Vмакс ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("Vмакс ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("Vмакс ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("Vмакс ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("Vмакс ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("Vмакс ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vмин");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vпутеш. мин");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Ускорение");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Aмакс ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Aмакс ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Aмакс ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Aмакс ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Aмакс ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Aмакс ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Aмакс ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Aмакс ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Aмакс ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Aмакс ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-втягивание");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-путеш.");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Шаг/мм");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Eшаг/мм");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("шаг/мм");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Температура");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Движение");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Филамент");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E в мм3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Диаметр филамента");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Диаметр филамента ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Диаметр филамента ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Диаметр филамента ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Диаметр филамента ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Диаметр филамента ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Диаметр филамента ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Загрузка мм");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Выгрузка мм");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K продвижения");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K продвижения ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K продвижения ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K продвижения ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K продвижения ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K продвижения ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K продвижения ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Контраст LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Сохранить настройки");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Загрузить настройки");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Вернуть настройки");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Инициализация EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Сброс принтера");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Обновить");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Информационный экран");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Подготовить");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Настроить");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Начало печати");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Дальше");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Инициализация");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Остановить");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Печать");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Сброс");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Отмена");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Готово");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Пауза печати");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Продолжить печать");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Остановить печать");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Восстановение сбоя");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Печать с SD карты");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Нет SD карты");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Сон...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Продолжить...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Печать на паузе");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Печать отменена");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Нет движения.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("УБИТО. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ОСТАНОВЛЕНО. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Втягивание мм");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Втягивание смены мм");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Втягивание V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Втяг. прыжка мм");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("Возврат мм");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат смены мм");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Возврат V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат смены V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Авто Втягивание");
-// TODO: Singlenozzle, nozzle standby
+ // TODO: Filament Change Swap / Purge Length
-#define MSG_FILAMENTCHANGE _UxGT("Смена филамента")
-#define MSG_FILAMENTLOAD _UxGT("Загрузка филамента")
-#define MSG_FILAMENTUNLOAD _UxGT("Выгрузка филамента")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Выгрузить всё")
-#define MSG_INIT_MEDIA _UxGT("Активировать SD")
-#define MSG_CHANGE_MEDIA _UxGT("Сменить SD карту")
-#define MSG_RELEASE_MEDIA _UxGT("Деактивировать SD")
-#define MSG_ZPROBE_OUT _UxGT("Z датчик вне стола")
-#define MSG_SKEW_FACTOR _UxGT("Фактор наклона")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Тестирование BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("Сброс BLTouch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Установка BLTouch")
-#define MSG_BLTOUCH_STOW _UxGT("Набивка BLTouch")
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Смена сопел");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z");
-// TODO: TouchMI Probe, Manual deploy/stow
+ // TODO: Singlenozzle, nozzle standby
-#define MSG_HOME_FIRST _UxGT("Паркуй %s%s%s сначала")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Смещение Z")
-#define MSG_BABYSTEP_X _UxGT("Микрошаг X")
-#define MSG_BABYSTEP_Y _UxGT("Микрошаг Y")
-#define MSG_BABYSTEP_Z _UxGT("Микрошаг Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Сработал концевик")
-#define MSG_HEATING_FAILED_LCD _UxGT("Разогрев не удался")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Неудача нагрева стола")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Ошибка: Избыточная Т")
-#define MSG_THERMAL_RUNAWAY _UxGT("УБЕГАНИЕ ТЕПЛА")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("УБЕГАНИЕ ТЕПЛА СТОЛА")
-// TODO: Heated chamber
-#define MSG_ERR_MAXTEMP _UxGT("Ошибка: Т макс.")
-#define MSG_ERR_MINTEMP _UxGT("Ошибка: Т мин.")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Ошибка: Т стола макс")
-#define MSG_ERR_MINTEMP_BED _UxGT("Ошибка: Т стола мин.")
-// TODO: Heated chamber
-#define MSG_ERR_Z_HOMING _UxGT("Паркуй XY сначала")
-#define MSG_HALTED _UxGT("ПРИНТЕР ОСТАНОВЛЕН")
-#define MSG_PLEASE_RESET _UxGT("Сделайте сброс")
-#define MSG_SHORT_DAY _UxGT("д") // One character only
-#define MSG_SHORT_HOUR _UxGT("ч") // One character only
-#define MSG_SHORT_MINUTE _UxGT("м") // One character only
-#define MSG_HEATING _UxGT("Нагрев...")
-#define MSG_COOLING _UxGT("Охлаждение...")
-#define MSG_BED_HEATING _UxGT("Нагрев стола...")
-#define MSG_BED_COOLING _UxGT("Охлаждение стола...")
-// TODO: Heated chamber
-#define MSG_DELTA_CALIBRATE _UxGT("Калибровка Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Калибровать X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Калибровать Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Калибровать Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Калибровать центр")
-#define MSG_DELTA_SETTINGS _UxGT("Настройки Delta")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Авто калибровка")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Задать высоту Delta")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Задать Z-смещение")
-#define MSG_DELTA_DIAG_ROD _UxGT("Диаг. стержень")
-#define MSG_DELTA_HEIGHT _UxGT("Высота")
-#define MSG_DELTA_RADIUS _UxGT("Радиус")
-#define MSG_INFO_MENU _UxGT("О принтере")
-#define MSG_INFO_PRINTER_MENU _UxGT("Инф. о принтере")
-#define MSG_3POINT_LEVELING _UxGT("Калибровка 3-х точек")
-#define MSG_LINEAR_LEVELING _UxGT("Линейная калибровка")
-#define MSG_BILINEAR_LEVELING _UxGT("Билинейная калибр.")
-#define MSG_UBL_LEVELING _UxGT("Калибровка UBL")
-#define MSG_MESH_LEVELING _UxGT("Калибровка сетки")
-#define MSG_INFO_STATS_MENU _UxGT("Статистика принтера")
-#define MSG_INFO_BOARD_MENU _UxGT("Информация о плате")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Термисторы")
-#define MSG_INFO_EXTRUDERS _UxGT("Экструдеры")
-#define MSG_INFO_BAUDRATE _UxGT("Бод")
-#define MSG_INFO_PROTOCOL _UxGT("Протокол")
-#define MSG_CASE_LIGHT _UxGT("Подсветка корпуса")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Яркость подсветки")
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Смена филамента");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Смена филамента ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Смена филамента ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Смена филамента ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Смена филамента ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Смена филамента ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Смена филамента ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Загрузка филамента");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Загрузка филамента ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Загрузка филамента ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Загрузка филамента ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Загрузка филамента ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Загрузка филамента ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Загрузка филамента ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Выгрузка филамента ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Выгрузка филамента ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Выгрузка филамента ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Выгрузка филамента ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Выгрузка филамента ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Выгрузка филамента ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Выгрузить всё");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Активировать SD");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Сменить SD карту");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Деактивировать SD");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z датчик вне стола");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Фактор наклона");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Тестирование BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Сброс BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Установка BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Набивка BLTouch");
-#define MSG_EXPECTED_PRINTER _UxGT("Неверный принтер")
+ // TODO: TouchMI Probe, Manual deploy/stow
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Счётчик печати")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Закончено")
- #define MSG_INFO_PRINT_TIME _UxGT("Общее время печати")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Наидольшее задание")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Длина филамента")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Отпечатков")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Закончено")
- #define MSG_INFO_PRINT_TIME _UxGT("Всего")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Наидольшее")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Выдавлено")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Мин. Т")
-#define MSG_INFO_MAX_TEMP _UxGT("Макс. Т")
-#define MSG_INFO_PSU _UxGT("БП")
-#define MSG_DRIVE_STRENGTH _UxGT("Сила привода")
-#define MSG_DAC_PERCENT _UxGT("Привод %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Запись DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("ПЕЧАТЬ НА ПАУЗЕ")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("ЗАГРУЗКА ФИЛАМЕНТА")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("ВЫГРУЗКА ФИЛАМЕНТА")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ОПЦИИ ВОЗОБНОВЛЕНИЯ:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Выдавить ещё")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Возобновить печать")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Сопла: ")
-#define MSG_ERR_HOMING_FAILED _UxGT("Возврат не удался")
-#define MSG_ERR_PROBING_FAILED _UxGT("Не удалось прощупать")
-#define MSG_M600_TOO_COLD _UxGT("M600: Низкая Т")
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Паркуй %s%s%s сначала");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Микрошаг X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Микрошаг Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Микрошаг Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Сработал концевик");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Разогрев не удался");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Неудача нагрева стола");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка: Избыточная Т");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("УБЕГАНИЕ ТЕПЛА");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("УБЕГАНИЕ ТЕПЛА СТОЛА");
+ // TODO: Heated chamber
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Ошибка: Т макс.");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Ошибка: Т мин.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Ошибка: Т стола макс");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Ошибка: Т стола мин.");
+ // TODO: Heated chamber
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Паркуй XY сначала");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("ПРИНТЕР ОСТАНОВЛЕН");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Сделайте сброс");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("д"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("ч"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("м"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Нагрев...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Охлаждение...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Нагрев стола...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Охлаждение стола...");
+ // TODO: Heated chamber
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Калибровка Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Калибровать X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровать Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровать Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровать центр");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Настройки Delta");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Авто калибровка");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Задать высоту Delta");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Задать Z-смещение");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Диаг. стержень");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Высота");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Радиус");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("О принтере");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Инф. о принтере");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("Калибровка 3-х точек");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Линейная калибровка");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Билинейная калибр.");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Калибровка UBL");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Калибровка сетки");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Статистика принтера");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Информация о плате");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Термисторы");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Экструдеры");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Бод");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Протокол");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Подсветка корпуса");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яркость подсветки");
-// TODO: MMU2
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Неверный принтер");
-// TODO: Mixing
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Закончено");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Общее время печати");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее задание");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Длина филамента");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Отпечатков");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Закончено");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Всего");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Выдавлено");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Мин. Т");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Макс. Т");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("БП");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Сила привода");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Привод %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Запись DAC EEPROM");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ПЕЧАТЬ НА ПАУЗЕ");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАГРУЗКА ФИЛАМЕНТА");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВЫГРУЗКА ФИЛАМЕНТА");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ОПЦИИ ВОЗОБНОВЛЕНИЯ:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Выдавить ещё");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Возобновить печать");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопла: ");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Возврат не удался");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Не удалось прощупать");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Низкая Т");
-#define MSG_GAMES _UxGT("Игры")
-#define MSG_BRICKOUT _UxGT("Кирпичи")
-#define MSG_INVADERS _UxGT("Вторжение")
-#define MSG_SNAKE _UxGT("Змейка")
-#define MSG_MAZE _UxGT("Лабиринт")
+ // TODO: MMU2
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Ожидайте")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("начала смены")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("филамента")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ожидайте")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("выгрузки")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("филамента")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставьте пруток")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("и нажмите кнопку")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("для продолжения")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Нажмите кнопку для")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("нагрева сопла...")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Нагрев сопла")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Ждите...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ожидайте")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("загрузки прутка")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Ожидайте")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("экструзии")
- #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("филамента")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Ожидайте")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("возобновления")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("печати")
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Ожидайте...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Выгрузка...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставь и нажми")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Нагрев...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Загрузка...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Выдавливание...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Возобновление...")
-#endif // LCD_HEIGHT < 4
+ // TODO: Mixing
-#define MSG_TMC_DRIVERS _UxGT("Драйвера TMC")
-#define MSG_TMC_CURRENT _UxGT("Текущие настройки")
-#define MSG_TMC_HYBRID_THRS _UxGT("Гибридный режим")
-#define MSG_TMC_HOMING_THRS _UxGT("Режим без эндстопов")
-#define MSG_TMC_STEPPING_MODE _UxGT("Режим шага")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("Тихий режим вкл")
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Игры");
+ PROGMEM Language_Str MSG_BRICKOUT = _UxGT("Кирпичи");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Вторжение");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Змейка");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Лабиринт");
-// TODO: Service
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Ожидайте", "начала смены", "филамента"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте пруток", "и нажмите кнопку", "для продолжения"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Нажмите кнопку для", "нагрева сопла..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Ожидайте", "загрузки прутка"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати"));
+ #else
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Выдавливание..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление..."));
+ #endif
-// TODO: Backlash
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Драйвера TMC");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Текущие настройки");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Режим без эндстопов");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Режим шага");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("Тихий режим вкл");
+
+ // TODO: Service
+
+ // TODO: Backlash
+}
diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h
index 55d2b6e4bf..fa92d72c51 100644
--- a/Marlin/src/lcd/language/language_sk.h
+++ b/Marlin/src/lcd/language/language_sk.h
@@ -32,552 +32,612 @@
* http://www.facebook.com/farmamam
*
*/
-
#define DISPLAY_CHARSET_ISO10646_SK
-#define CHARSIZE 2
-// Characters that can be displayed with M117
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("äÄáÁčČďĎéÉíÍĺĹľĽňŇóÓôÔŕŔšŠťŤúÚýÝžŽ³")
+namespace Language_sk {
+ using namespace Language_en; // Inherit undefined strings from English
-#define WELCOME_MSG MACHINE_NAME _UxGT(" pripravená.")
-#define MSG_YES _UxGT("ÁNO")
-#define MSG_NO _UxGT("NIE")
-#define MSG_BACK _UxGT("Naspäť")
-#define MSG_MEDIA_ABORTING _UxGT("Ruším...")
-#define MSG_MEDIA_INSERTED _UxGT("Karta vložená")
-#define MSG_MEDIA_REMOVED _UxGT("Karta vybraná")
-#define MSG_MEDIA_RELEASED _UxGT("Karta odpojená")
-#define MSG_MEDIA_WAITING _UxGT("Čakám na kartu")
-#define MSG_MEDIA_READ_ERROR _UxGT("Chyba čítania karty")
-#define MSG_MEDIA_USB_REMOVED _UxGT("USB zaria. odstrán.")
-#define MSG_MEDIA_USB_FAILED _UxGT("Chyba spúšťania USB")
-#define MSG_LCD_ENDSTOPS _UxGT("Endstopy") // max 8 znakov
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft. endstopy")
-#define MSG_MAIN _UxGT("Hlavná ponuka")
-#define MSG_ADVANCED_SETTINGS _UxGT("Pokročilé nastav.")
-#define MSG_CONFIGURATION _UxGT("Konfigurácia")
-#define MSG_AUTOSTART _UxGT("Auto-štart")
-#define MSG_DISABLE_STEPPERS _UxGT("Uvolniť motory")
-#define MSG_DEBUG_MENU _UxGT("Ponuka ladenia")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Test uk. priebehu")
-#define MSG_AUTO_HOME _UxGT("Domovská pozícia")
-#define MSG_AUTO_HOME_X _UxGT("Domov os X")
-#define MSG_AUTO_HOME_Y _UxGT("Domov os Y")
-#define MSG_AUTO_HOME_Z _UxGT("Domov os Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Auto-zarovn. Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Parkovanie XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Kliknutím spusťte")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Ďalší bod")
-#define MSG_LEVEL_BED_DONE _UxGT("Meranie hotové!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Výška rovnania")
-#define MSG_SET_HOME_OFFSETS _UxGT("Nastaviť ofsety")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Ofsety nastavené")
-#define MSG_SET_ORIGIN _UxGT("Nastaviť začiatok")
-#define MSG_PREHEAT_1 _UxGT("Zahriať " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" všetko")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" hotend")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" podlož")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" nast.")
-#define MSG_PREHEAT_2 _UxGT("Zahriať " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" všetko")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" hotend")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" podlož")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" nast.")
-#define MSG_PREHEAT_CUSTOM _UxGT("Vlastná teplota")
-#define MSG_COOLDOWN _UxGT("Schladiť")
-#define MSG_LASER_MENU _UxGT("Nastavenie lasera")
-#define MSG_LASER_OFF _UxGT("Vypnúť laser")
-#define MSG_LASER_ON _UxGT("Zapnúť laser")
-#define MSG_LASER_POWER _UxGT("Výkon lasera")
-#define MSG_SPINDLE_MENU _UxGT("Nastavenie vretena")
-#define MSG_SPINDLE_OFF _UxGT("Vypnúť vreteno")
-#define MSG_SPINDLE_ON _UxGT("Zapnúť vreteno")
-#define MSG_SPINDLE_POWER _UxGT("Výkon vretena")
-#define MSG_SPINDLE_REVERSE _UxGT("Spätný chod")
-#define MSG_SWITCH_PS_ON _UxGT("Zapnúť napájanie")
-#define MSG_SWITCH_PS_OFF _UxGT("Vypnúť napájanie")
-#define MSG_EXTRUDE _UxGT("Vytlačiť (extr.)")
-#define MSG_RETRACT _UxGT("Vytiahnuť (retr.)")
-#define MSG_MOVE_AXIS _UxGT("Posunúť osy")
-#define MSG_BED_LEVELING _UxGT("Vyrovnanie podložky")
-#define MSG_LEVEL_BED _UxGT("Vyrovnať podložku")
-#define MSG_LEVEL_CORNERS _UxGT("Vyrovnať rohy")
-#define MSG_NEXT_CORNER _UxGT("Ďalší roh")
-#define MSG_MESH_EDITOR _UxGT("Editor sieťe bodov")
-#define MSG_EDIT_MESH _UxGT("Upraviť sieť bodov")
-#define MSG_EDITING_STOPPED _UxGT("Koniec úprav siete")
-#define MSG_PROBING_MESH _UxGT("Skúšam bod")
-#define MSG_MESH_X _UxGT("Index X")
-#define MSG_MESH_Y _UxGT("Index Y")
-#define MSG_MESH_EDIT_Z _UxGT("Hodnota Z")
-#define MSG_USER_MENU _UxGT("Vlastné príkazy")
-#define MSG_M48_TEST _UxGT("M48 Test sondy")
-#define MSG_M48_POINT _UxGT("M48 Bod")
-#define MSG_M48_DEVIATION _UxGT("Odchýlka")
-#define MSG_IDEX_MENU _UxGT("IDEX režim")
-#define MSG_OFFSETS_MENU _UxGT("Ofset nástrojov")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-parkovanie")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplikácia")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Zrkadlená kópia")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Plná kontrola")
-#define MSG_X_OFFSET _UxGT("2. tryska X")
-#define MSG_Y_OFFSET _UxGT("2. tryska Y")
-#define MSG_Z_OFFSET _UxGT("2. tryska Z")
-#define MSG_UBL_DOING_G29 _UxGT("Vykonávam G29")
-#define MSG_UBL_TOOLS _UxGT("Nástroje UBL")
-#define MSG_UBL_LEVEL_BED _UxGT("UBL rovnanie")
-#define MSG_LCD_TILTING_MESH _UxGT("Vyrovnávam bod")
-#define MSG_UBL_MANUAL_MESH _UxGT("Manuálna sieť bodov")
-#define MSG_UBL_BC_INSERT _UxGT("Položte a zmerajte")
-#define MSG_UBL_BC_INSERT2 _UxGT("Zmerajte")
-#define MSG_UBL_BC_REMOVE _UxGT("Odstráňte a zmerajte")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Presun na ďalší")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Aktivovať UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Deaktivovať UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Teplota podložky")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Teplota hotendu")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Úprava siete bodov")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Upraviť vlastnú sieť")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Doladiť sieť bodov")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Koniec úprav siete")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Vlastná sieť")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Vytvoriť sieť")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Sieť bodov " PREHEAT_1_LABEL)
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Sieť bodov " PREHEAT_2_LABEL)
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Studená sieť bodov")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Upraviť výšku siete")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Výška")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Skontrolovať sieť")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Kontrola siete " PREHEAT_1_LABEL)
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Kontrola siete " PREHEAT_2_LABEL)
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Kontrola vlast.siete")
-#define MSG_G26_HEATING_BED _UxGT("G26 ohrev podlž.")
-#define MSG_G26_HEATING_NOZZLE _UxGT("G26 ohrev trysky")
-#define MSG_G26_MANUAL_PRIME _UxGT("Ručné čistenie...")
-#define MSG_G26_FIXED_LENGTH _UxGT("Čistenie pevn. dĺž.")
-#define MSG_G26_PRIME_DONE _UxGT("Čistenie dokončené")
-#define MSG_G26_CANCELED _UxGT("G26 zrušený")
-#define MSG_G26_LEAVING _UxGT("Opúšťam G26")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Pokračovať v sieti")
-#define MSG_UBL_MESH_LEVELING _UxGT("Sieťové rovnanie")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-bodové rovnanie")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Mriežkové rovnanie")
-#define MSG_UBL_MESH_LEVEL _UxGT("Vyrovnať podložku")
-#define MSG_UBL_SIDE_POINTS _UxGT("Postranné body")
-#define MSG_UBL_MAP_TYPE _UxGT("Typ siete bodov")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Exportovať sieť")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Exportovať do PC")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Exportovať do CSV")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Záloha do PC")
-#define MSG_UBL_INFO_UBL _UxGT("Info. o UBL do PC")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Hustota mriežky")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Ručné vyplnenie")
-#define MSG_UBL_SMART_FILLIN _UxGT("Chytré vyplnenie")
-#define MSG_UBL_FILLIN_MESH _UxGT("Vyplniť mriežku")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Zrušiť všetko")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Zrušiť najbližší")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Upraviť všetky")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Upraviť najbližší")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Úložisko sietí")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Pamäťový slot")
-#define MSG_UBL_LOAD_MESH _UxGT("Načítať sieť bodov")
-#define MSG_UBL_SAVE_MESH _UxGT("Uložiť sieť bodov")
-#define MSG_MESH_LOADED _UxGT("Sieť %i načítaná")
-#define MSG_MESH_SAVED _UxGT("Sieť %i uložená")
-#define MSG_UBL_NO_STORAGE _UxGT("Nedostatok miesta")
-#define MSG_UBL_SAVE_ERROR _UxGT("Chyba: Ukladanie UBL")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Chyba: Obnovenie UBL")
-#define MSG_UBL_Z_OFFSET _UxGT("Z-Ofset: ")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Koniec kompenz. Z")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Postupné UBL")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Slovak");
-#define MSG_LED_CONTROL _UxGT("Nastavenie LED")
-#define MSG_LEDS _UxGT("Svetlo")
-#define MSG_LED_PRESETS _UxGT("Prednastavené farby")
-#define MSG_SET_LEDS_RED _UxGT("Červená")
-#define MSG_SET_LEDS_ORANGE _UxGT("Oranžová")
-#define MSG_SET_LEDS_YELLOW _UxGT("Žltá")
-#define MSG_SET_LEDS_GREEN _UxGT("Zelená")
-#define MSG_SET_LEDS_BLUE _UxGT("Modrá")
-#define MSG_SET_LEDS_INDIGO _UxGT("Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("Fialová")
-#define MSG_SET_LEDS_WHITE _UxGT("Biela")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Obnoviť nastavenie")
-#define MSG_CUSTOM_LEDS _UxGT("Vlastná farba")
-#define MSG_INTENSITY_R _UxGT("Inten. červenej")
-#define MSG_INTENSITY_G _UxGT("Inten. zelenej")
-#define MSG_INTENSITY_B _UxGT("Inten. modrej")
-#define MSG_INTENSITY_W _UxGT("Inten. bielej")
-#define MSG_LED_BRIGHTNESS _UxGT("Jas")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" pripravená.");
+ PROGMEM Language_Str MSG_YES = _UxGT("ÁNO");
+ PROGMEM Language_Str MSG_NO = _UxGT("NIE");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Naspäť");
+ PROGMEM Language_Str MSG_MEDIA_ABORTING = _UxGT("Ruším...");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Karta vložená");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Karta vybraná");
+ PROGMEM Language_Str MSG_MEDIA_RELEASED = _UxGT("Karta odpojená");
+ PROGMEM Language_Str MSG_MEDIA_WAITING = _UxGT("Čakám na kartu");
+ PROGMEM Language_Str MSG_MEDIA_READ_ERROR = _UxGT("Chyba čítania karty");
+ PROGMEM Language_Str MSG_MEDIA_USB_REMOVED = _UxGT("USB zaria. odstrán.");
+ PROGMEM Language_Str MSG_MEDIA_USB_FAILED = _UxGT("Chyba spúšťania USB");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Endstopy") // max 8 znakov;
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft. endstopy");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Hlavná ponuka");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Pokročilé nastav.");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Konfigurácia");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Auto-štart");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Uvolniť motory");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Ponuka ladenia");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. priebehu");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Domovská pozícia");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Domov os X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Domov os Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Domov os Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto-zarovn. Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Parkovanie XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím spusťte");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Ďalší bod");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Meranie hotové!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Výška rovnania");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Nastaviť ofsety");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastavené");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Nastaviť začiatok");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Zahriať ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Zahriať ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" trysky ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast.");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Zahriať ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Zahriať ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" trysky ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" všetko");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" podlož");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Zahriať ") PREHEAT_2_LABEL _UxGT(" nast.");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Vlastná teplota");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Schladiť");
+ PROGMEM Language_Str MSG_LASER_MENU = _UxGT("Nastavenie lasera");
+ PROGMEM Language_Str MSG_LASER_OFF = _UxGT("Vypnúť laser");
+ PROGMEM Language_Str MSG_LASER_ON = _UxGT("Zapnúť laser");
+ PROGMEM Language_Str MSG_LASER_POWER = _UxGT("Výkon lasera");
+ PROGMEM Language_Str MSG_SPINDLE_MENU = _UxGT("Nastavenie vretena");
+ PROGMEM Language_Str MSG_SPINDLE_OFF = _UxGT("Vypnúť vreteno");
+ PROGMEM Language_Str MSG_SPINDLE_ON = _UxGT("Zapnúť vreteno");
+ PROGMEM Language_Str MSG_SPINDLE_POWER = _UxGT("Výkon vretena");
+ PROGMEM Language_Str MSG_SPINDLE_REVERSE = _UxGT("Spätný chod");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Zapnúť napájanie");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Vypnúť napájanie");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Vytlačiť (extr.)");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Vytiahnuť (retr.)");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Posunúť osy");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Vyrovnanie podložky");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Vyrovnať podložku");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Vyrovnať rohy");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Ďalší roh");
+ PROGMEM Language_Str MSG_MESH_EDITOR = _UxGT("Editor sieťe bodov");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Upraviť sieť bodov");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Koniec úprav siete");
+ PROGMEM Language_Str MSG_PROBING_MESH = _UxGT("Skúšam bod");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Index X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Index Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Hodnota Z");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Vlastné príkazy");
+ PROGMEM Language_Str MSG_M48_TEST = _UxGT("M48 Test sondy");
+ PROGMEM Language_Str MSG_M48_POINT = _UxGT("M48 Bod");
+ PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Odchýlka");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("IDEX režim");
+ PROGMEM Language_Str MSG_OFFSETS_MENU = _UxGT("Ofset nástrojov");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-parkovanie");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikácia");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrkadlená kópia");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2. tryska X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2. tryska Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2. tryska Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Vykonávam G29");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Nástroje UBL");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("UBL rovnanie");
+ PROGMEM Language_Str MSG_LCD_TILTING_MESH = _UxGT("Vyrovnávam bod");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Manuálna sieť bodov");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Položte a zmerajte");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Zmerajte");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Odstráňte a zmerajte");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Presun na ďalší");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Aktivovať UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Deaktivovať UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Úprava siete bodov");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upraviť vlastnú sieť");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladiť sieť bodov");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec úprav siete");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastná sieť");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvoriť sieť");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Sieť bodov ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Sieť bodov ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená sieť bodov");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upraviť výšku siete");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Skontrolovať sieť");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Kontrola siete ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Kontrola siete ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast.siete");
+ PROGMEM Language_Str MSG_G26_HEATING_BED = _UxGT("G26 ohrev podlž.");
+ PROGMEM Language_Str MSG_G26_HEATING_NOZZLE = _UxGT("G26 ohrev trysky");
+ PROGMEM Language_Str MSG_G26_MANUAL_PRIME = _UxGT("Ručné čistenie...");
+ PROGMEM Language_Str MSG_G26_FIXED_LENGTH = _UxGT("Čistenie pevn. dĺž.");
+ PROGMEM Language_Str MSG_G26_PRIME_DONE = _UxGT("Čistenie dokončené");
+ PROGMEM Language_Str MSG_G26_CANCELED = _UxGT("G26 zrušený");
+ PROGMEM Language_Str MSG_G26_LEAVING = _UxGT("Opúšťam G26");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovať v sieti");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Sieťové rovnanie");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnanie");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mriežkové rovnanie");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Vyrovnať podložku");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Postranné body");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Typ siete bodov");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Exportovať sieť");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Exportovať do PC");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Exportovať do CSV");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Záloha do PC");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Info. o UBL do PC");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mriežky");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Ručné vyplnenie");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Chytré vyplnenie");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Vyplniť mriežku");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušiť všetko");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušiť najbližší");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Upraviť všetky");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upraviť najbližší");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Úložisko sietí");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Pamäťový slot");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Načítať sieť bodov");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Uložiť sieť bodov");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Sieť %i načítaná");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Sieť %i uložená");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Nedostatok miesta");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Chyba: Ukladanie UBL");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Chyba: Obnovenie UBL");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET = _UxGT("Z-Ofset: ");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Koniec kompenz. Z");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Postupné UBL");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Studená sieť bodov");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Chytré vyplnenie");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Skontrolovať sieť");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точная настр. всего");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Skontrolovať sieť");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точная настр. всего");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Uložiť sieť bodov");
-#define MSG_MOVING _UxGT("Posúvam...")
-#define MSG_FREE_XY _UxGT("Uvolniť XY")
-#define MSG_MOVE_X _UxGT("Posunúť X")
-#define MSG_MOVE_Y _UxGT("Posunúť Y")
-#define MSG_MOVE_Z _UxGT("Posunúť Z")
-#define MSG_MOVE_E _UxGT("Extrudér")
-#define MSG_HOTEND_TOO_COLD _UxGT("Hotend je studený")
-#define MSG_MOVE_Z_DIST _UxGT("Posunúť o %smm")
-#define MSG_MOVE_01MM _UxGT("Posunúť o 0,1mm")
-#define MSG_MOVE_1MM _UxGT("Posunúť o 1mm")
-#define MSG_MOVE_10MM _UxGT("Posunúť o 10mm")
-#define MSG_SPEED _UxGT("Rýchlosť")
-#define MSG_BED_Z _UxGT("Výška podl.")
-#define MSG_NOZZLE _UxGT("Tryska")
-#define MSG_BED _UxGT("Podložka")
-#define MSG_CHAMBER _UxGT("Komora")
-#define MSG_FAN_SPEED _UxGT("Rýchlosť vent.")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Rýchlosť ex. vent.")
-#define MSG_FLOW _UxGT("Prietok")
-#define MSG_CONTROL _UxGT("Ovládanie")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
-#define MSG_AUTOTEMP _UxGT("Auto-teplota")
-#define MSG_LCD_ON _UxGT("Zap")
-#define MSG_LCD_OFF _UxGT("Vyp")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Vybrať")
-#define MSG_ACC _UxGT("Zrýchlenie")
-#define MSG_JERK _UxGT("Skok")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-skok")
- #define MSG_VB_JERK _UxGT("Vb-skok")
- #define MSG_VC_JERK _UxGT("Vc-skok")
-#else
- #define MSG_VA_JERK _UxGT("Vx-skok")
- #define MSG_VB_JERK _UxGT("Vy-skok")
- #define MSG_VC_JERK _UxGT("Vz-skok")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-skok")
-#define MSG_JUNCTION_DEVIATION _UxGT("Junction Dev")
-#define MSG_VELOCITY _UxGT("Rýchlosť")
-#define MSG_VMAX _UxGT("Vmax ")
-#define MSG_VMIN _UxGT("Vmin")
-#define MSG_VTRAV_MIN _UxGT("VTrav min")
-#define MSG_ACCELERATION _UxGT("Akcelerácia")
-#define MSG_AMAX _UxGT("Amax ")
-#define MSG_A_RETRACT _UxGT("A-retrakt")
-#define MSG_A_TRAVEL _UxGT("A-prejazd")
-#define MSG_STEPS_PER_MM _UxGT("Kroky/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Akrokov/mm")
- #define MSG_BSTEPS _UxGT("Bkrokov/mm")
- #define MSG_CSTEPS _UxGT("Ckrokov/mm")
-#else
- #define MSG_ASTEPS _UxGT("Xkrokov/mm")
- #define MSG_BSTEPS _UxGT("Ykrokov/mm")
- #define MSG_CSTEPS _UxGT("Zkrokov/mm")
-#endif
-#define MSG_ESTEPS _UxGT("Ekrokov/mm")
-#define MSG_E0_STEPS _UxGT("E1krokov/mm")
-#define MSG_E1_STEPS _UxGT("E2krokov/mm")
-#define MSG_E2_STEPS _UxGT("E3krokov/mm")
-#define MSG_E3_STEPS _UxGT("E4krokov/mm")
-#define MSG_E4_STEPS _UxGT("E5krokov/mm")
-#define MSG_E5_STEPS _UxGT("E6krokov/mm")
-#define MSG_TEMPERATURE _UxGT("Teplota")
-#define MSG_MOTION _UxGT("Pohyb")
-#define MSG_FILAMENT _UxGT("Filament")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E na mm³")
-#define MSG_FILAMENT_DIAM _UxGT("Priem. fil.")
-#define MSG_FILAMENT_UNLOAD _UxGT("Vysunúť mm")
-#define MSG_FILAMENT_LOAD _UxGT("Zaviesť mm")
-#define MSG_ADVANCE_K _UxGT("K pre posun")
-#define MSG_CONTRAST _UxGT("Kontrast LCD")
-#define MSG_STORE_EEPROM _UxGT("Uložiť nastavenie")
-#define MSG_LOAD_EEPROM _UxGT("Načítať nastavenie")
-#define MSG_RESTORE_FAILSAFE _UxGT("Obnoviť nastavenie")
-#define MSG_INIT_EEPROM _UxGT("Inicializ. EEPROM")
-#define MSG_MEDIA_UPDATE _UxGT("Aktualizovať z SD")
-#define MSG_RESET_PRINTER _UxGT("Reštart. tlačiar.")
-#define MSG_REFRESH _UxGT("Obnoviť")
-#define MSG_WATCH _UxGT("Info. obrazovka")
-#define MSG_PREPARE _UxGT("Príprava tlače")
-#define MSG_TUNE _UxGT("Doladenie tlače")
-#define MSG_START_PRINT _UxGT("Spustiť tlač")
-#define MSG_BUTTON_NEXT _UxGT("Ďalší")
-#define MSG_BUTTON_INIT _UxGT("Inicial.")
-#define MSG_BUTTON_STOP _UxGT("Zastaviť")
-#define MSG_BUTTON_PRINT _UxGT("Tlačiť")
-#define MSG_BUTTON_RESET _UxGT("Vynulovať")
-#define MSG_BUTTON_CANCEL _UxGT("Zrušiť")
-#define MSG_BUTTON_DONE _UxGT("Hotovo")
-#define MSG_PAUSE_PRINT _UxGT("Pozastaviť tlač")
-#define MSG_RESUME_PRINT _UxGT("Obnoviť tlač")
-#define MSG_STOP_PRINT _UxGT("Zastaviť tlač")
-#define MSG_OUTAGE_RECOVERY _UxGT("Obnova po výp. nap.")
-#define MSG_MEDIA_MENU _UxGT("Tlačiť z SD")
-#define MSG_NO_MEDIA _UxGT("Žiadna SD karta")
-#define MSG_DWELL _UxGT("Spím...")
-#define MSG_USERWAIT _UxGT("Pokrač. kliknutím...")
-#define MSG_PRINT_PAUSED _UxGT("Tlač pozastavená")
-#define MSG_PRINTING _UxGT("Tlačím...")
-#define MSG_PRINT_ABORTED _UxGT("Tlač zrušená")
-#define MSG_NO_MOVE _UxGT("Žiadny pohyb.")
-#define MSG_KILLED _UxGT("PRERUŠENÉ. ")
-#define MSG_STOPPED _UxGT("ZASTAVENÉ. ")
-#define MSG_CONTROL_RETRACT _UxGT("Retrakt mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Výmena Re.mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Retraktovať V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Zdvih Z mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("AutoRetr.")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Dĺžka výmeny")
-#define MSG_FILAMENT_PURGE_LENGTH _UxGT("Dĺžka vytlačenia")
-#define MSG_TOOL_CHANGE _UxGT("Výmena nástroja")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Zdvihnúť Z")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Primárna rýchl.")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Rýchl. retrakcie")
-#define MSG_NOZZLE_STANDBY _UxGT("Záložná tryska")
-#define MSG_FILAMENTCHANGE _UxGT("Vymeniť filament")
-#define MSG_FILAMENTLOAD _UxGT("Zaviesť filament")
-#define MSG_FILAMENTUNLOAD _UxGT("Vysunúť filament")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Vysunúť všetko")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Nastavenie LED");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Svetlo");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Prednastavené farby");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Červená");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Oranžová");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Žltá");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Zelená");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Modrá");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Indigo");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Fialová");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Biela");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Obnoviť nastavenie");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Vlastná farba");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Inten. červenej");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Inten. zelenej");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Inten. modrej");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Inten. bielej");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Jas");
-#define MSG_INIT_MEDIA _UxGT("Načítať SD kartu")
-#define MSG_CHANGE_MEDIA _UxGT("Vymeniť SD kartu")
-#define MSG_RELEASE_MEDIA _UxGT("Odpojiť SD kartu")
-#define MSG_ZPROBE_OUT _UxGT("Sonda Z mimo podl.")
-#define MSG_SKEW_FACTOR _UxGT("Faktor skosenia")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
-#define MSG_BLTOUCH_STOW _UxGT("Cmd: Zasunúť")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Vysunúť")
-#define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: Režim SW")
-#define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: Režim 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: Režim OD")
-#define MSG_BLTOUCH_MODE_STORE _UxGT("Cmd: Ulož. režim")
-#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Prepnúť do 5V")
-#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Prepnúť do OD")
-#define MSG_BLTOUCH_MODE_ECHO _UxGT("Zobraziť režim")
-#define MSG_BLTOUCH_MODE_CHANGE _UxGT("POZOR: Zlé nastav. môže spôsobiť poškoden. Pokračovať?")
-#define MSG_TOUCHMI_PROBE _UxGT("TouchMI")
-#define MSG_TOUCHMI_INIT _UxGT("Inicializ. TouchMI")
-#define MSG_TOUCHMI_ZTEST _UxGT("Test ofsetu Z")
-#define MSG_TOUCHMI_SAVE _UxGT("Uložiť")
-#define MSG_MANUAL_DEPLOY_TOUCHMI _UxGT("Zasunúť TouchMI")
-#define MSG_MANUAL_DEPLOY _UxGT("Zasunúť sondu Z")
-#define MSG_MANUAL_STOW _UxGT("Vysunúť sondu Z")
-#define MSG_HOME_FIRST _UxGT("Najskôr os %s%s%s domov")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Ofset sondy Z")
-#define MSG_BABYSTEP_X _UxGT("Babystep X")
-#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
-#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
-#define MSG_BABYSTEP_TOTAL _UxGT("Celkom")
-#define MSG_ENDSTOP_ABORT _UxGT("Zastavenie Endstop")
-#define MSG_HEATING_FAILED_LCD _UxGT("Chyba ohrevu")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Chyba ohrevu podl.")
-#define MSG_HEATING_FAILED_LCD_CHAMBER _UxGT("Chyba ohrevu komory")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Chyba: REDUND. TEP.")
-#define MSG_THERMAL_RUNAWAY _UxGT("TEPLOTNÝ SKOK")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("TEPLOTNÝ SKOK PODL.")
-#define MSG_THERMAL_RUNAWAY_CHAMBER _UxGT("TEPLOTNÝ SKOK KOMO.")
-#define MSG_ERR_MAXTEMP _UxGT("Chyba: MAXTEMP")
-#define MSG_ERR_MINTEMP _UxGT("Chyba: MINTEMP")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Chyba: MAXTEMP PODL.")
-#define MSG_ERR_MINTEMP_BED _UxGT("Chyba: MINTEMP PODL.")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Chyba: MAXTEMP KOMO.")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Chyba: MINTEMP KOMO.")
-#define MSG_ERR_Z_HOMING _UxGT("Najskôr os XY domov")
-#define MSG_HALTED _UxGT("TLAČIAREŇ ZASTAVENÁ")
-#define MSG_PLEASE_RESET _UxGT("Reštartuje ju")
-#define MSG_SHORT_DAY _UxGT("d")
-#define MSG_SHORT_HOUR _UxGT("h")
-#define MSG_SHORT_MINUTE _UxGT("m")
-#define MSG_HEATING _UxGT("Ohrev...")
-#define MSG_COOLING _UxGT("Ochladzovanie...")
-#define MSG_BED_HEATING _UxGT("Ohrev podložky...")
-#define MSG_BED_COOLING _UxGT("Ochladz. podložky...")
-#define MSG_CHAMBER_HEATING _UxGT("Ohrev komory...")
-#define MSG_CHAMBER_COOLING _UxGT("Ochladz. komory...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta kalibrácia")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibrovať X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibrovať Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibrovať Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibrovať stred")
-#define MSG_DELTA_SETTINGS _UxGT("Delta nastavenia")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto-kalibrácia")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Nast. výšku delty")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Ofset sondy Z")
-#define MSG_DELTA_DIAG_ROD _UxGT("Diag. rameno")
-#define MSG_DELTA_HEIGHT _UxGT("Výška")
-#define MSG_DELTA_RADIUS _UxGT("Polomer")
-#define MSG_INFO_MENU _UxGT("O tlačiarni")
-#define MSG_INFO_PRINTER_MENU _UxGT("Info. o tlačiarni")
-#define MSG_3POINT_LEVELING _UxGT("3-bodové rovnanie")
-#define MSG_LINEAR_LEVELING _UxGT("Lineárne rovnanie")
-#define MSG_BILINEAR_LEVELING _UxGT("Bilineárne rovnanie")
-#define MSG_UBL_LEVELING _UxGT("UBL rovnanie")
-#define MSG_MESH_LEVELING _UxGT("Mriežkové rovnanie")
-#define MSG_INFO_STATS_MENU _UxGT("Štatistika")
-#define MSG_INFO_BOARD_MENU _UxGT("Info. o doske")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistory")
-#define MSG_INFO_EXTRUDERS _UxGT("Extrudéry")
-#define MSG_INFO_BAUDRATE _UxGT("Rýchlosť")
-#define MSG_INFO_PROTOCOL _UxGT("Protokol")
-#define MSG_INFO_RUNAWAY_OFF _UxGT("Tepl. ochrana: VYP")
-#define MSG_INFO_RUNAWAY_ON _UxGT("Tepl. ochrana: ZAP")
-#define MSG_CASE_LIGHT _UxGT("Osvetlenie")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Jas svetla")
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Posúvam...");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Uvolniť XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Posunúť X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Posunúť Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Posunúť Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Extrudér");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Extrudér ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Extrudér ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Extrudér ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Extrudér ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Extrudér ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Extrudér ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Posunúť o %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Posunúť o 0,1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Posunúť o 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Posunúť o 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Rýchlosť");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Výška podl.");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Tryska");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Tryska ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Tryska ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Tryska ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Tryska ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Tryska ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Tryska ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Podložka");
+ PROGMEM Language_Str MSG_CHAMBER = _UxGT("Komora");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Rýchlosť vent.");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Rýchlosť vent. 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Rýchlosť vent. 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Rýchlosť vent. 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Rýchlosť ex. vent.");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Rýchlosť ex. vent. 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Rýchlosť ex. vent. 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Rýchlosť ex. vent. 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Prietok");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Prietok ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Prietok ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Prietok ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Prietok ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Prietok ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Prietok ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Ovládanie");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Auto-teplota");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Zap");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Vyp");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Vybrať");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Vybrať ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Vybrať ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Vybrať ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Vybrať ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Vybrať ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Vybrať ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Zrýchlenie");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Skok");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-skok");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-skok");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-skok");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-skok");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Rýchlosť");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Akcelerácia");
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-retrakt");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-prejazd");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Kroky/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Ekrokov/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("krokov/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Teplota");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Pohyb");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filament");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E na mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Priem. fil.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Priem. fil. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Priem. fil. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Priem. fil. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Priem. fil. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Priem. fil. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Priem. fil. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Vysunúť mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Zaviesť mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K pre posun");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K pre posun ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K pre posun ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K pre posun ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K pre posun ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K pre posun ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K pre posun ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Kontrast LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Uložiť nastavenie");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Načítať nastavenie");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Obnoviť nastavenie");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Inicializ. EEPROM");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("Aktualizovať z SD");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Reštart. tlačiar.");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Info. obrazovka");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Príprava tlače");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Doladenie tlače");
+ PROGMEM Language_Str MSG_START_PRINT = _UxGT("Spustiť tlač");
+ PROGMEM Language_Str MSG_BUTTON_NEXT = _UxGT("Ďalší");
+ PROGMEM Language_Str MSG_BUTTON_INIT = _UxGT("Inicial.");
+ PROGMEM Language_Str MSG_BUTTON_STOP = _UxGT("Zastaviť");
+ PROGMEM Language_Str MSG_BUTTON_PRINT = _UxGT("Tlačiť");
+ PROGMEM Language_Str MSG_BUTTON_RESET = _UxGT("Vynulovať");
+ PROGMEM Language_Str MSG_BUTTON_CANCEL = _UxGT("Zrušiť");
+ PROGMEM Language_Str MSG_BUTTON_DONE = _UxGT("Hotovo");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Pozastaviť tlač");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Obnoviť tlač");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Zastaviť tlač");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Obnova po výp. nap.");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Tlačiť z SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Žiadna SD karta");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Spím...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Pokrač. kliknutím...");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Tlač pozastavená");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Tlačím...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Tlač zrušená");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Žiadny pohyb.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("PRERUŠENÉ. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ZASTAVENÉ. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Retrakt mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Výmena Re.mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Retraktovať V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zdvih Z mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("AutoRetr.");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Dĺžka výmeny");
+ PROGMEM Language_Str MSG_FILAMENT_PURGE_LENGTH = _UxGT("Dĺžka vytlačenia");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Výmena nástroja");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvihnúť Z");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Primárna rýchl.");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Rýchl. retrakcie");
+ PROGMEM Language_Str MSG_NOZZLE_STANDBY = _UxGT("Záložná tryska");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Vymeniť filament");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Vymeniť filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Vymeniť filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Vymeniť filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Vymeniť filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Vymeniť filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Vymeniť filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Zaviesť filament");
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Zaviesť filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Zaviesť filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Zaviesť filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Zaviesť filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Zaviesť filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Zaviesť filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Vysunúť filament ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Vysunúť filament ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Vysunúť filament ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Vysunúť filament ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Vysunúť filament ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Vysunúť filament ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunúť všetko");
-#define MSG_EXPECTED_PRINTER _UxGT("Nesprávna tlačiareň")
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Načítať SD kartu");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Vymeniť SD kartu");
+ PROGMEM Language_Str MSG_RELEASE_MEDIA = _UxGT("Odpojiť SD kartu");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl.");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Faktor skosenia");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Cmd: Self-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Cmd: Reset");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Cmd: Zasunúť");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Cmd: Vysunúť");
+ PROGMEM Language_Str MSG_BLTOUCH_SW_MODE = _UxGT("Cmd: Režim SW");
+ PROGMEM Language_Str MSG_BLTOUCH_5V_MODE = _UxGT("Cmd: Režim 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_OD_MODE = _UxGT("Cmd: Režim OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE = _UxGT("Cmd: Ulož. režim");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Prepnúť do 5V");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Prepnúť do OD");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_ECHO = _UxGT("Zobraziť režim");
+ PROGMEM Language_Str MSG_BLTOUCH_MODE_CHANGE = _UxGT("POZOR: Zlé nastav. môže spôsobiť poškoden. Pokračovať?");
+ PROGMEM Language_Str MSG_TOUCHMI_PROBE = _UxGT("TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_INIT = _UxGT("Inicializ. TouchMI");
+ PROGMEM Language_Str MSG_TOUCHMI_ZTEST = _UxGT("Test ofsetu Z");
+ PROGMEM Language_Str MSG_TOUCHMI_SAVE = _UxGT("Uložiť");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Zasunúť TouchMI");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Zasunúť sondu Z");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Vysunúť sondu Z");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Najskôr os %s%s%s domov");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Ofset sondy Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Babystep X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Babystep Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Babystep Z");
+ PROGMEM Language_Str MSG_BABYSTEP_TOTAL = _UxGT("Celkom");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Zastavenie Endstop");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Chyba ohrevu");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Chyba ohrevu podl.");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_CHAMBER = _UxGT("Chyba ohrevu komory");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Chyba: REDUND. TEP.");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("TEPLOTNÝ SKOK");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("TEPLOTNÝ SKOK PODL.");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_CHAMBER = _UxGT("TEPLOTNÝ SKOK KOMO.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Chyba: MAXTEMP");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Chyba: MINTEMP");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Chyba: MAXTEMP PODL.");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Chyba: MINTEMP PODL.");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_CHAMBER = _UxGT("Chyba: MAXTEMP KOMO.");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_CHAMBER = _UxGT("Chyba: MINTEMP KOMO.");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Najskôr os XY domov");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("TLAČIAREŇ ZASTAVENÁ");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Reštartuje ju");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("d");
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("h");
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("m");
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Ohrev...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Ochladzovanie...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Ohrev podložky...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Ochladz. podložky...");
+ PROGMEM Language_Str MSG_CHAMBER_HEATING = _UxGT("Ohrev komory...");
+ PROGMEM Language_Str MSG_CHAMBER_COOLING = _UxGT("Ochladz. komory...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrácia");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovať X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovať Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovať Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovať stred");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta nastavenia");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-kalibrácia");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Nast. výšku delty");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Ofset sondy Z");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Diag. rameno");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Výška");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Polomer");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("O tlačiarni");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Info. o tlačiarni");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3-bodové rovnanie");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Lineárne rovnanie");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("Bilineárne rovnanie");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("UBL rovnanie");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Mriežkové rovnanie");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Štatistika");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Info. o doske");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Extrudéry");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Rýchlosť");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokol");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_OFF = _UxGT("Tepl. ochrana: VYP");
+ PROGMEM Language_Str MSG_INFO_RUNAWAY_ON = _UxGT("Tepl. ochrana: ZAP");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Osvetlenie");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas svetla");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Počet tlačí")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Dokončené")
- #define MSG_INFO_PRINT_TIME _UxGT("Celkový čas")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najdlhšia tlač")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Celkom vytlačené")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Tlače")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Hotovo")
- #define MSG_INFO_PRINT_TIME _UxGT("Čas")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Najdlhšia")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Vytlačené")
-#endif
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Nesprávna tlačiareň");
-#define MSG_INFO_MIN_TEMP _UxGT("Teplota min")
-#define MSG_INFO_MAX_TEMP _UxGT("Teplota max")
-#define MSG_INFO_PSU _UxGT("Nap. zdroj")
-#define MSG_DRIVE_STRENGTH _UxGT("Budenie motorov")
-#define MSG_DAC_PERCENT _UxGT("Motor %")
-#define MSG_ERROR_TMC _UxGT("CHYBA KOMUNIKÁ. TMC")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Uložiť do EEPROM")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Počet tlačí");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončené");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Celkový čas");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia tlač");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Celkom vytlačené");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Tlače");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Čas");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačené");
+ #endif
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("VÝMENA FILAMENTU")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("PAUZA TLAČE")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("ZAVEDENIE FILAMENTU")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("VYSUNUTIE FILAMENTU")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("MOŽNOSTI POKRAČ.:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Vytlačiť viacej")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnoviť tlač")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Senzor filamentu")
-#define MSG_RUNOUT_DISTANCE_MM _UxGT("Vzd. mm fil. senz.")
-#define MSG_ERR_HOMING_FAILED _UxGT("Parkovanie zlyhalo")
-#define MSG_ERR_PROBING_FAILED _UxGT("Kalibrácia zlyhala")
-#define MSG_M600_TOO_COLD _UxGT("M600: Príliš studený")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Teplota min");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Teplota max");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Nap. zdroj");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Budenie motorov");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Motor %");
+ PROGMEM Language_Str MSG_ERROR_TMC = _UxGT("CHYBA KOMUNIKÁ. TMC");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Uložiť do EEPROM");
-#define MSG_MMU2_FILAMENT_CHANGE_HEADER _UxGT("VÝMENA FILAMENTU")
-#define MSG_MMU2_CHOOSE_FILAMENT_HEADER _UxGT("VYBERTE FILAMENT")
-#define MSG_MMU2_MENU _UxGT("MMU2")
-#define MSG_MMU2_WRONG_FIRMWARE _UxGT("Aktualizujte FW MMU!")
-#define MSG_MMU2_NOT_RESPONDING _UxGT("MMU potrebuje zásah.")
-#define MSG_MMU2_RESUME _UxGT("Obnoviť tlač")
-#define MSG_MMU2_RESUMING _UxGT("Obnovovanie...")
-#define MSG_MMU2_LOAD_FILAMENT _UxGT("Zaviesť filament")
-#define MSG_MMU2_LOAD_ALL _UxGT("Zaviesť všetky")
-#define MSG_MMU2_LOAD_TO_NOZZLE _UxGT("Zaviesť po trysku")
-#define MSG_MMU2_EJECT_FILAMENT _UxGT("Vysunúť filament")
-#define MSG_MMU2_EJECT_FILAMENT0 _UxGT("Vysunúť filament 1")
-#define MSG_MMU2_EJECT_FILAMENT1 _UxGT("Vysunúť filament 2")
-#define MSG_MMU2_EJECT_FILAMENT2 _UxGT("Vysunúť filament 3")
-#define MSG_MMU2_EJECT_FILAMENT3 _UxGT("Vysunúť filament 4")
-#define MSG_MMU2_EJECT_FILAMENT4 _UxGT("Vysunúť filament 5")
-#define MSG_MMU2_UNLOAD_FILAMENT _UxGT("Vyňať filament")
-#define MSG_MMU2_LOADING_FILAMENT _UxGT("Zavádzanie fil. %i...")
-#define MSG_MMU2_EJECTING_FILAMENT _UxGT("Vysúvanie fil. ...")
-#define MSG_MMU2_UNLOADING_FILAMENT _UxGT("Vysúvanie fil. ...")
-#define MSG_MMU2_ALL _UxGT("Všetky")
-#define MSG_MMU2_FILAMENT0 _UxGT("Filament 1")
-#define MSG_MMU2_FILAMENT1 _UxGT("Filament 2")
-#define MSG_MMU2_FILAMENT2 _UxGT("Filament 3")
-#define MSG_MMU2_FILAMENT3 _UxGT("Filament 4")
-#define MSG_MMU2_FILAMENT4 _UxGT("Filament 5")
-#define MSG_MMU2_RESET _UxGT("Reštartovať MMU")
-#define MSG_MMU2_RESETTING _UxGT("Reštart MMU...")
-#define MSG_MMU2_EJECT_RECOVER _UxGT("Odstráňte, kliknite")
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMENA FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PAUZA TLAČE");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENIE FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTIE FILAMENTU");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI POKRAČ.:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačiť viacej");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnoviť tlač");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu");
+ PROGMEM Language_Str MSG_RUNOUT_DISTANCE_MM = _UxGT("Vzd. mm fil. senz.");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Parkovanie zlyhalo");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Kalibrácia zlyhala");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Príliš studený");
-#define MSG_MIX _UxGT("Mix")
-#define MSG_MIX_COMPONENT _UxGT("Zložka")
-#define MSG_MIXER _UxGT("Mixér")
-#define MSG_GRADIENT _UxGT("Gradient")
-#define MSG_FULL_GRADIENT _UxGT("Plný gradient")
-#define MSG_TOGGLE_MIX _UxGT("Prepnúť mix")
-#define MSG_CYCLE_MIX _UxGT("Cyklický mix")
-#define MSG_GRADIENT_MIX _UxGT("Gradientný mix")
-#define MSG_REVERSE_GRADIENT _UxGT("Otočiť gradient")
-#define MSG_ACTIVE_VTOOL _UxGT("Aktívny V-tool")
-#define MSG_START_VTOOL _UxGT("Počiat. V-tool")
-#define MSG_END_VTOOL _UxGT("Konečn. V-tool")
-#define MSG_GRADIENT_ALIAS _UxGT("Alias V-tool")
-#define MSG_RESET_VTOOLS _UxGT("Vynulovať V-tools")
-#define MSG_COMMIT_VTOOL _UxGT("Uložiť V-tool Mix")
-#define MSG_VTOOLS_RESET _UxGT("V-tools vynulované")
-#define MSG_START_Z _UxGT("Počiat.Z")
-#define MSG_END_Z _UxGT("Konečn.Z")
-#define MSG_GAMES _UxGT("Hry")
-#define MSG_BRICKOUT _UxGT("Brickout")
-#define MSG_INVADERS _UxGT("Nájazdníci")
-#define MSG_SNAKE _UxGT("Had")
-#define MSG_MAZE _UxGT("Bludisko")
+ PROGMEM Language_Str MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT");
+ PROGMEM Language_Str MSG_MMU2_MENU = _UxGT("MMU2");
+ PROGMEM Language_Str MSG_MMU2_WRONG_FIRMWARE = _UxGT("Aktualizujte FW MMU!");
+ PROGMEM Language_Str MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potrebuje zásah.");
+ PROGMEM Language_Str MSG_MMU2_RESUME = _UxGT("Obnoviť tlač");
+ PROGMEM Language_Str MSG_MMU2_RESUMING = _UxGT("Obnovovanie...");
+ PROGMEM Language_Str MSG_MMU2_LOAD_FILAMENT = _UxGT("Zaviesť filament");
+ PROGMEM Language_Str MSG_MMU2_LOAD_ALL = _UxGT("Zaviesť všetky");
+ PROGMEM Language_Str MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zaviesť po trysku");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunúť filament");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT0 = _UxGT("Vysunúť filament 1");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT1 = _UxGT("Vysunúť filament 2");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT2 = _UxGT("Vysunúť filament 3");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT3 = _UxGT("Vysunúť filament 4");
+ PROGMEM Language_Str MSG_MMU2_EJECT_FILAMENT4 = _UxGT("Vysunúť filament 5");
+ PROGMEM Language_Str MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vyňať filament");
+ PROGMEM Language_Str MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádzanie fil. %i...");
+ PROGMEM Language_Str MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vysúvanie fil. ...");
+ PROGMEM Language_Str MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysúvanie fil. ...");
+ PROGMEM Language_Str MSG_MMU2_ALL = _UxGT("Všetky");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT0 = _UxGT("Filament 1");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT1 = _UxGT("Filament 2");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT2 = _UxGT("Filament 3");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT3 = _UxGT("Filament 4");
+ PROGMEM Language_Str MSG_MMU2_FILAMENT4 = _UxGT("Filament 5");
+ PROGMEM Language_Str MSG_MMU2_RESET = _UxGT("Reštartovať MMU");
+ PROGMEM Language_Str MSG_MMU2_RESETTING = _UxGT("Reštart MMU...");
+ PROGMEM Language_Str MSG_MMU2_EJECT_RECOVER = _UxGT("Odstráňte, kliknite");
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Stlačte tlačidlo")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("pre obnovu tlače")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parkovanie...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Čakajte prosím")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("na spustenie")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("výmeny filamentu")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("a stlačte tlačidlo")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("pre pokračovanie")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Stlačte tlačidlo")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("pre ohrev trysky")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Ohrev trysky")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Čakajte prosím...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Čakajte prosím")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("na vysunutie")
- #define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Čakajte prosím")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedenie")
- #define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Čakajte prosím")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("na vytlačenie")
- #define MSG_FILAMENT_CHANGE_PURGE_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Stlačte tlačidlo")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("pre dokončenie")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_3 _UxGT("vytláčania filam.")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Čakajte prosím na")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("obnovenie tlače...")
-#else // LCD_HEIGHT < 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Kliknite pre pokr.")
- #define MSG_PAUSE_PRINT_INIT_1 _UxGT("Parkovanie...")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Čakajte prosím...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte a kliknite")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Kliknite pre ohrev")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Ohrev...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Vysúvanie...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavádzanie...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Vytlačovanie...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Klik. pre dokonč.")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokračovanie...")
-#endif // LCD_HEIGHT < 4
-#define MSG_TMC_DRIVERS _UxGT("Ovládače TMC")
-#define MSG_TMC_CURRENT _UxGT("Prúd ovládača")
-#define MSG_TMC_HYBRID_THRS _UxGT("Hybridný prah")
-#define MSG_TMC_HOMING_THRS _UxGT("Bezsenzor. domov")
-#define MSG_TMC_STEPPING_MODE _UxGT("Režim krokovania")
-#define MSG_TMC_STEALTH_ENABLED _UxGT("StealthChop zapnutý")
+ PROGMEM Language_Str MSG_MIX = _UxGT("Mix");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_1 = _UxGT("Zložka 1");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_2 = _UxGT("Zložka 2");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_3 = _UxGT("Zložka 3");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_4 = _UxGT("Zložka 4");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_5 = _UxGT("Zložka 5");
+ PROGMEM Language_Str MSG_MIX_COMPONENT_6 = _UxGT("Zložka 6");
+ PROGMEM Language_Str MSG_MIXER = _UxGT("Mixér");
+ PROGMEM Language_Str MSG_GRADIENT = _UxGT("Gradient");
+ PROGMEM Language_Str MSG_FULL_GRADIENT = _UxGT("Plný gradient");
+ PROGMEM Language_Str MSG_TOGGLE_MIX = _UxGT("Prepnúť mix");
+ PROGMEM Language_Str MSG_CYCLE_MIX = _UxGT("Cyklický mix");
+ PROGMEM Language_Str MSG_GRADIENT_MIX = _UxGT("Gradientný mix");
+ PROGMEM Language_Str MSG_REVERSE_GRADIENT = _UxGT("Otočiť gradient");
+ PROGMEM Language_Str MSG_ACTIVE_VTOOL = _UxGT("Aktívny V-tool");
+ PROGMEM Language_Str MSG_START_VTOOL = _UxGT("Počiat. V-tool");
+ PROGMEM Language_Str MSG_END_VTOOL = _UxGT("Konečn. V-tool");
+ PROGMEM Language_Str MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool");
+ PROGMEM Language_Str MSG_RESET_VTOOLS = _UxGT("Vynulovať V-tools");
+ PROGMEM Language_Str MSG_COMMIT_VTOOL = _UxGT("Uložiť V-tool Mix");
+ PROGMEM Language_Str MSG_VTOOLS_RESET = _UxGT("V-tools vynulované");
+ PROGMEM Language_Str MSG_START_Z = _UxGT("Počiat.Z:");
+ PROGMEM Language_Str MSG_END_Z = _UxGT("Konečn.Z:");
+ PROGMEM Language_Str MSG_GAMES = _UxGT("Hry");
+ PROGMEM Language_Str MSG_INVADERS = _UxGT("Nájazdníci");
+ PROGMEM Language_Str MSG_SNAKE = _UxGT("Had");
+ PROGMEM Language_Str MSG_MAZE = _UxGT("Bludisko");
-#define MSG_SERVICE_RESET _UxGT("Vynulovať")
-#define MSG_SERVICE_IN _UxGT(" za:")
-#define MSG_BACKLASH _UxGT("Kompenz. vôle")
-#define MSG_BACKLASH_CORRECTION _UxGT("Korekcia")
-#define MSG_BACKLASH_SMOOTHING _UxGT("Vyhladzovanie")
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre obnovu tlače"));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parkovanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čakajte prosím", "na spustenie", "výmeny filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stlačte tlačidlo", "pre pokračovanie"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre ohrev trysky"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Ohrev trysky", "Čakajte prosím..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na vysunutie", "filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na zavedenie", "filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Čakajte prosím", "na vytlačenie", "filamentu"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Stlačte tlačidlo", "pre dokončenie", "vytláčania filam."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Čakajte prosím na", "obnovenie tlače..."));
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknite pre pokr."));
+ PROGMEM Language_Str MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Parkovanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čakajte prosím..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte a kliknite"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknite pre ohrev"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Ohrev..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysúvanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádzanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačovanie..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klik. pre dokonč."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračovanie..."));
+ #endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Ovládače TMC");
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Prúd ovládača");
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Hybridný prah");
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Bezsenzor. domov");
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Režim krokovania");
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("StealthChop zapnutý");
+
+ PROGMEM Language_Str MSG_SERVICE_RESET = _UxGT("Vynulovať");
+ PROGMEM Language_Str MSG_SERVICE_IN = _UxGT(" za:");
+ PROGMEM Language_Str MSG_BACKLASH = _UxGT("Kompenz. vôle");
+ PROGMEM Language_Str MSG_BACKLASH_A = LCD_STR_A;
+ PROGMEM Language_Str MSG_BACKLASH_B = LCD_STR_B;
+ PROGMEM Language_Str MSG_BACKLASH_C = LCD_STR_C;
+ PROGMEM Language_Str MSG_BACKLASH_CORRECTION = _UxGT("Korekcia");
+ PROGMEM Language_Str MSG_BACKLASH_SMOOTHING = _UxGT("Vyhladzovanie");
+}
diff --git a/Marlin/src/lcd/language/language_test.h b/Marlin/src/lcd/language/language_test.h
index b2be749a00..8098fdd872 100644
--- a/Marlin/src/lcd/language/language_test.h
+++ b/Marlin/src/lcd/language/language_test.h
@@ -114,114 +114,145 @@
#define STRG_OKTAL_e "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"
#define STRG_OKTAL_f "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
-#if ENABLED(DISPLAYTEST)
- #define WELCOME_MSG _UxGT("Language TEST")
+namespace Language_test {
+ using namespace Language_en; // Inherit undefined strings from English
- #define MSG_WATCH _UxGT("Display test")
- #define MSG_PREPARE STRG_OKTAL_b
- #define MSG_CONTROL STRG_OKTAL_c
-#endif
+ constexpr uint8_t CHARSIZE = 1;
-#if ENABLED(WEST)
- #define WELCOME_MSG _UxGT("Language TEST")
+ #if ENABLED(DISPLAYTEST)
+ PROGMEM Language_Str WELCOME_MSG = _UxGT("Language TEST");
- #define MSG_WATCH _UxGT("\001\002\003\004\005\006\007\010\011")
- #define MSG_PREPARE _UxGT("UTF8")
- #define MSG_CONTROL _UxGT("ASCII")
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Display test");
+ PROGMEM Language_Str MSG_PREPARE = STRG_OKTAL_b;
+ PROGMEM Language_Str MSG_CONTROL = STRG_OKTAL_c;
+ #endif
- //#define MSG_MAIN _UxGT("..")
- #define MSG_DISABLE_STEPPERS STRG_C2_8
- #define MSG_AUTO_HOME STRG_C2_9
- #define MSG_SET_HOME_OFFSETS STRG_C2_a
- #define MSG_PREHEAT_1 STRG_C2_b
- #define MSG_PREHEAT_2 STRG_C3_8
- #define MSG_COOLDOWN STRG_C3_9
- #define MSG_SWITCH_PS_OFF STRG_C3_a
- #define MSG_MOVE_AXIS STRG_C3_b
+ #if ENABLED(WEST)
+ PROGMEM Language_Str WELCOME_MSG = _UxGT("Language TEST");
- #define MSG_MAIN STRG_OKTAL_2
- #define MSG_TEMPERATURE STRG_OKTAL_3
- #define MSG_MOTION STRG_OKTAL_4
- #define MSG_FILAMENT STRG_OKTAL_5
- #define MSG_CONTRAST STRG_OKTAL_6
- #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7
+ PROGMEM Language_Str MSG_WATCH = _UxGT("\001\002\003\004\005\006\007\010\011");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("UTF8");
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("ASCII");
- #define MSG_NOZZLE STRG_OKTAL_8
- #define MSG_FAN_SPEED STRG_OKTAL_9
- #define MSG_AUTOTEMP STRG_OKTAL_a
- #define MSG_MIN STRG_OKTAL_b
- #define MSG_MAX STRG_OKTAL_c
- #define MSG_FACTOR STRG_OKTAL_d
- #define MSG_PID_P STRG_OKTAL_e
- #define MSG_PID_I STRG_OKTAL_f
+ PROGMEM Language_Str MSG_MAIN = _UxGT("..");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = STRG_C2_8;
+ PROGMEM Language_Str MSG_AUTO_HOME = STRG_C2_9;
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = STRG_C2_a;
+ PROGMEM Language_Str MSG_PREHEAT_1 = STRG_C2_b;
+ PROGMEM Language_Str MSG_PREHEAT_2 = STRG_C3_8;
+ PROGMEM Language_Str MSG_COOLDOWN = STRG_C3_9;
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = STRG_C3_a;
+ PROGMEM Language_Str MSG_MOVE_AXIS = STRG_C3_b;
-#endif
+ PROGMEM Language_Str MSG_MAIN = STRG_OKTAL_2;
+ PROGMEM Language_Str MSG_TEMPERATURE = STRG_OKTAL_3;
+ PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
+ PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
+ PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
-#if ENABLED(CYRIL)
- #define WELCOME_MSG _UxGT("Language TEST")
+ PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
+ PROGMEM Language_Str MSG_NOZZLE_0 = STRG_OKTAL_8 " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = STRG_OKTAL_8 " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = STRG_OKTAL_8 " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = STRG_OKTAL_8 " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = STRG_OKTAL_8 " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = STRG_OKTAL_8 " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_FAN_SPEED = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_AUTOTEMP = STRG_OKTAL_a;
+ PROGMEM Language_Str MSG_MIN = STRG_OKTAL_b;
+ PROGMEM Language_Str MSG_MAX = STRG_OKTAL_c;
+ PROGMEM Language_Str MSG_FACTOR = STRG_OKTAL_d;
+ PROGMEM Language_Str MSG_PID_P = STRG_OKTAL_e;
+ PROGMEM Language_Str MSG_PID_I = STRG_OKTAL_f;
- #define MSG_WATCH _UxGT("\001\002\003\004\005\006\007\010\011")
- #define MSG_PREPARE _UxGT("UTF8")
- #define MSG_CONTROL _UxGT("ASCII")
+ #endif
- //#define MSG_MAIN _UxGT("..")
- #define MSG_DISABLE_STEPPERS STRG_D0_8
- #define MSG_AUTO_HOME STRG_D0_9
- #define MSG_SET_HOME_OFFSETS STRG_D0_a
- #define MSG_PREHEAT_1 STRG_D0_b
- #define MSG_PREHEAT_2 STRG_D1_8
- #define MSG_COOLDOWN STRG_D1_9
- #define MSG_SWITCH_PS_OFF STRG_D1_a
- #define MSG_MOVE_AXIS STRG_D1_b
+ #if ENABLED(CYRIL)
+ PROGMEM Language_Str WELCOME_MSG = _UxGT("Language TEST");
- #define MSG_MAIN STRG_OKTAL_2
- #define MSG_TEMPERATURE STRG_OKTAL_3
- #define MSG_MOTION STRG_OKTAL_4
- #define MSG_FILAMENT STRG_OKTAL_5
- #define MSG_CONTRAST STRG_OKTAL_6
- #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7
+ PROGMEM Language_Str MSG_WATCH = _UxGT("\001\002\003\004\005\006\007\010\011");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("UTF8");
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("ASCII");
- #define MSG_NOZZLE STRG_OKTAL_8
- #define MSG_FAN_SPEED STRG_OKTAL_9
- #define MSG_AUTOTEMP STRG_OKTAL_a
- #define MSG_MIN STRG_OKTAL_b
- #define MSG_MAX STRG_OKTAL_c
- #define MSG_FACTOR STRG_OKTAL_d
- #define MSG_PID_P STRG_OKTAL_e
- #define MSG_PID_I STRG_OKTAL_f
+ PROGMEM Language_Str MSG_MAIN = _UxGT("..");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = STRG_D0_8;
+ PROGMEM Language_Str MSG_AUTO_HOME = STRG_D0_9;
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = STRG_D0_a;
+ PROGMEM Language_Str MSG_PREHEAT_1 = STRG_D0_b;
+ PROGMEM Language_Str MSG_PREHEAT_2 = STRG_D1_8;
+ PROGMEM Language_Str MSG_COOLDOWN = STRG_D1_9;
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = STRG_D1_a;
+ PROGMEM Language_Str MSG_MOVE_AXIS = STRG_D1_b;
-#endif
+ PROGMEM Language_Str MSG_MAIN = STRG_OKTAL_2;
+ PROGMEM Language_Str MSG_TEMPERATURE = STRG_OKTAL_3;
+ PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
+ PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
+ PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
-#if ENABLED(KANA)
- #define WELCOME_MSG _UxGT("Language TEST")
+ PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
+ PROGMEM Language_Str MSG_NOZZLE_0 = STRG_OKTAL_8 " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = STRG_OKTAL_8 " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = STRG_OKTAL_8 " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = STRG_OKTAL_8 " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = STRG_OKTAL_8 " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = STRG_OKTAL_8 " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_AUTOTEMP = STRG_OKTAL_a;
+ PROGMEM Language_Str MSG_MIN = STRG_OKTAL_b;
+ PROGMEM Language_Str MSG_MAX = STRG_OKTAL_c;
+ PROGMEM Language_Str MSG_FACTOR = STRG_OKTAL_d;
+ PROGMEM Language_Str MSG_PID_P = STRG_OKTAL_e;
+ PROGMEM Language_Str MSG_PID_I = STRG_OKTAL_f;
- #define MSG_WATCH _UxGT("\001\002\003\004\005\006\007\010\011")
- #define MSG_PREPARE _UxGT("UTF8")
- #define MSG_CONTROL _UxGT("ASCII")
+ #endif
- //#define MSG_MAIN _UxGT("..")
- #define MSG_DISABLE_STEPPERS STRG_E382_8
- #define MSG_AUTO_HOME STRG_E382_9
- #define MSG_SET_HOME_OFFSETS STRG_E382_a
- #define MSG_PREHEAT_1 STRG_E382_b
- #define MSG_PREHEAT_2 STRG_E383_8
- #define MSG_COOLDOWN STRG_E383_9
- #define MSG_SWITCH_PS_OFF STRG_E383_a
- #define MSG_MOVE_AXIS STRG_E383_b
+ #if ENABLED(KANA)
+ PROGMEM Language_Str WELCOME_MSG = _UxGT("Language TEST");
- #define MSG_MAIN STRG_OKTAL_2
- #define MSG_TEMPERATURE STRG_OKTAL_3
- #define MSG_MOTION STRG_OKTAL_4
- #define MSG_FILAMENT STRG_OKTAL_5
- #define MSG_CONTRAST STRG_OKTAL_6
- #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7
+ PROGMEM Language_Str MSG_WATCH = _UxGT("\001\002\003\004\005\006\007\010\011");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("UTF8");
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("ASCII");
- #define MSG_NOZZLE STRG_OKTAL_8
- #define MSG_FAN_SPEED STRG_OKTAL_9
- #define MSG_AUTOTEMP STRG_OKTAL_a
- #define MSG_MIN STRG_OKTAL_b
- #define MSG_MAX STRG_OKTAL_c
- #define MSG_FACTOR STRG_OKTAL_d
- #define MSG_PID_P STRG_OKTAL_e
- #define MSG_PID_I STRG_OKTAL_f
-#endif
+ PROGMEM Language_Str MSG_MAIN = _UxGT("..");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = STRG_E382_8;
+ PROGMEM Language_Str MSG_AUTO_HOME = STRG_E382_9;
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = STRG_E382_a;
+ PROGMEM Language_Str MSG_PREHEAT_1 = STRG_E382_b;
+ PROGMEM Language_Str MSG_PREHEAT_2 = STRG_E383_8;
+ PROGMEM Language_Str MSG_COOLDOWN = STRG_E383_9;
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = STRG_E383_a;
+ PROGMEM Language_Str MSG_MOVE_AXIS = STRG_E383_b;
+
+ PROGMEM Language_Str MSG_MAIN = STRG_OKTAL_2;
+ PROGMEM Language_Str MSG_TEMPERATURE = STRG_OKTAL_3;
+ PROGMEM Language_Str MSG_MOTION = STRG_OKTAL_4;
+ PROGMEM Language_Str MSG_FILAMENT = STRG_OKTAL_5;
+ PROGMEM Language_Str MSG_CONTRAST = STRG_OKTAL_6;
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = STRG_OKTAL_7;
+
+ PROGMEM Language_Str MSG_NOZZLE = STRG_OKTAL_8;
+ PROGMEM Language_Str MSG_NOZZLE_0 = STRG_OKTAL_8 " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = STRG_OKTAL_8 " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = STRG_OKTAL_8 " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = STRG_OKTAL_8 " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = STRG_OKTAL_8 " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = STRG_OKTAL_8 " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = STRG_OKTAL_9;
+ PROGMEM Language_Str MSG_AUTOTEMP = STRG_OKTAL_a;
+ PROGMEM Language_Str MSG_MIN = STRG_OKTAL_b;
+ PROGMEM Language_Str MSG_MAX = STRG_OKTAL_c;
+ PROGMEM Language_Str MSG_FACTOR = STRG_OKTAL_d;
+ PROGMEM Language_Str MSG_PID_P = STRG_OKTAL_e;
+ PROGMEM Language_Str MSG_PID_I = STRG_OKTAL_f;
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h
index e45c4cd8b7..26ec1e35fe 100644
--- a/Marlin/src/lcd/language/language_tr.h
+++ b/Marlin/src/lcd/language/language_tr.h
@@ -34,402 +34,484 @@
*/
#define DISPLAY_CHARSET_ISO10646_TR
-#define CHARSIZE 2
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("İÖÇğüşöç³")
-#define WELCOME_MSG MACHINE_NAME _UxGT(" hazır.")
-#define MSG_BACK _UxGT("Geri")
-#define MSG_MEDIA_INSERTED _UxGT("SD K. Yerleştirildi.")
-#define MSG_MEDIA_REMOVED _UxGT("SD Kart Çıkarıldı.")
-#define MSG_LCD_ENDSTOPS _UxGT("Enstops") // Max length 8 characters
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Yazılımsal Endstops")
-#define MSG_MAIN _UxGT("Ana")
-#define MSG_ADVANCED_SETTINGS _UxGT("Gelişmiş Ayarlar")
-#define MSG_CONFIGURATION _UxGT("Yapılandırma")
-#define MSG_AUTOSTART _UxGT("Oto. Başlat")
-#define MSG_DISABLE_STEPPERS _UxGT("Motorları Durdur")
-#define MSG_DEBUG_MENU _UxGT("Hata Ayıklama")
-#define MSG_PROGRESS_BAR_TEST _UxGT("Durum Çubuğu Testi")
-#define MSG_AUTO_HOME _UxGT("Eksenleri Sıfırla")
-#define MSG_AUTO_HOME_X _UxGT("X Sıfırla")
-#define MSG_AUTO_HOME_Y _UxGT("Y Sıfırla")
-#define MSG_AUTO_HOME_Z _UxGT("Z Sıfırla")
-#define MSG_AUTO_Z_ALIGN _UxGT("Oto. Z-Hizalama")
-#define MSG_LEVEL_BED_HOMING _UxGT("XYZ Sıfırlanıyor")
-#define MSG_LEVEL_BED_WAITING _UxGT("Başlatmak için tıkla")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Sonraki Nokta")
-#define MSG_LEVEL_BED_DONE _UxGT("Hizalama Tamam!")
-#define MSG_Z_FADE_HEIGHT _UxGT("Kaçınma Yüksekliği")
-#define MSG_SET_HOME_OFFSETS _UxGT("Offset Ayarla")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offset Tamam")
-#define MSG_SET_ORIGIN _UxGT("Sıfır Belirle")
-#define MSG_PREHEAT_1 _UxGT("Ön Isınma " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Tüm")
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Nozul")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Tabla")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Ayarlar")
-#define MSG_PREHEAT_2 _UxGT("Ön Isınma " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Tüm")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Nozul")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Tabla")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Ayarlar")
-#define MSG_PREHEAT_CUSTOM _UxGT("Özel Ön Isınma")
-#define MSG_COOLDOWN _UxGT("Soğut")
-#define MSG_SWITCH_PS_ON _UxGT("Gücü Aç")
-#define MSG_SWITCH_PS_OFF _UxGT("Gücü Kapat")
-#define MSG_EXTRUDE _UxGT("Ekstrüzyon")
-#define MSG_RETRACT _UxGT("Geri Çek")
-#define MSG_MOVE_AXIS _UxGT("Eksen Hareketleri")
-#define MSG_BED_LEVELING _UxGT("Tabla Hizalama")
-#define MSG_LEVEL_BED _UxGT("Tabla Hizası")
-#define MSG_LEVEL_CORNERS _UxGT("Hizalama Köşeleri")
-#define MSG_NEXT_CORNER _UxGT("Sonraki Köşe")
-#define MSG_EDIT_MESH _UxGT("Mesh Düzenle")
-#define MSG_EDITING_STOPPED _UxGT("Mesh Düzenleme Durdu")
-#define MSG_MESH_X _UxGT("İndeks X")
-#define MSG_MESH_Y _UxGT("İndeks Y")
-#define MSG_MESH_EDIT_Z _UxGT("Z Değeri")
-#define MSG_USER_MENU _UxGT("Özel Komutlar")
-#define MSG_IDEX_MENU _UxGT("IDEX Modu")
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Oto-Park")
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Kopyala")
-#define MSG_IDEX_MODE_MIRRORED_COPY _UxGT("Yansıtılmış kopya")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Tam Kontrol")
-#define MSG_X_OFFSET _UxGT("2. nozul X")
-#define MSG_Y_OFFSET _UxGT("2. nozul Y")
-#define MSG_Z_OFFSET _UxGT("2. nozul Z")
-#define MSG_UBL_DOING_G29 _UxGT("G29 Çalışıyor")
-#define MSG_UBL_TOOLS _UxGT("UBL Araçları")
-#define MSG_UBL_LEVEL_BED _UxGT("UBL Yatak Hizalama")
-#define MSG_UBL_MANUAL_MESH _UxGT("Elle Mesh Oluştur")
-#define MSG_UBL_BC_INSERT _UxGT("Altlık & Ölçü Ver")
-#define MSG_UBL_BC_INSERT2 _UxGT("Ölçü")
-#define MSG_UBL_BC_REMOVE _UxGT("Yataktan Ölçü Kaldır")
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Sonrakine Git")
-#define MSG_UBL_ACTIVATE_MESH _UxGT("UBL'yi Etkinleştir")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("UBL'yi Etkisizleştir")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Yatak Sıcaklığı")
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Nozul Sıcaklığı")
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Mesh Düzenleme")
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Özel Mesh Düzenleme")
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("İnce Ayar Mesh")
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Mesh Düzenleme Tamam")
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Özel Mesh Oluştur")
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Mesh Oluştur")
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Mesh Oluştur (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Mesh Oluştur (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Soğuk Mesh Oluştur")
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Mesh Yükseklik Ayarı")
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Yükseklik miktarı")
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Doğrulama Mesh")
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Doğrulama Mesh (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Doğrulama Mesh (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Özel Mesh Doğrulama")
-#define MSG_UBL_CONTINUE_MESH _UxGT("Tabla Mesh Devam et")
-#define MSG_UBL_MESH_LEVELING _UxGT("Mesh Hizalama")
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("3-Nokta Hizalama")
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Kafes Mesh Hizalama")
-#define MSG_UBL_MESH_LEVEL _UxGT("Mesh Seviyesi")
-#define MSG_UBL_SIDE_POINTS _UxGT("Yan Noktalar")
-#define MSG_UBL_MAP_TYPE _UxGT("Haritalama Türü")
-#define MSG_UBL_OUTPUT_MAP _UxGT("Mesh Çıkış Haritası")
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Host için Çıktı")
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("CSV için Çıktı")
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Yazıcıda Yedek Kpalı")
-#define MSG_UBL_INFO_UBL _UxGT("UBL Çıkış Bilgisi")
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Dolgu Miktarı")
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Manuel Dolgu")
-#define MSG_UBL_SMART_FILLIN _UxGT("Akıllı Dogu")
-#define MSG_UBL_FILLIN_MESH _UxGT("Mesh Dolgu")
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Tümünü Geçersiz Kıl")
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Yakını Geçersiz Kıl")
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Tümünü İnce Ayarla")
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Yakını İnce Ayarla")
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Mesh Depolama")
-#define MSG_UBL_STORAGE_SLOT _UxGT("Bellek Yuvası")
-#define MSG_UBL_LOAD_MESH _UxGT("Yatak Mesh Yükle")
-#define MSG_UBL_SAVE_MESH _UxGT("Yatak Mesh Kayıt Et")
-#define MSG_MESH_LOADED _UxGT("Mesh %i yüklendi")
-#define MSG_MESH_SAVED _UxGT("Mesh %i kayıtlandı")
-#define MSG_UBL_NO_STORAGE _UxGT("Depolama Yok")
-#define MSG_UBL_SAVE_ERROR _UxGT("Hata: UBL Kayıt")
-#define MSG_UBL_RESTORE_ERROR _UxGT("Hata: UBL Yenileme")
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Ofset Durduruldu")
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Adım Adım UBL")
-#define MSG_LED_CONTROL _UxGT("LED Kontrolü")
-#define MSG_LEDS _UxGT("Işıklar")
-#define MSG_LED_PRESETS _UxGT("Işık Hazır Ayarları")
-#define MSG_SET_LEDS_RED _UxGT("Kırmızı")
-#define MSG_SET_LEDS_ORANGE _UxGT("Turuncu")
-#define MSG_SET_LEDS_YELLOW _UxGT("Sarı")
-#define MSG_SET_LEDS_GREEN _UxGT("Yeşil")
-#define MSG_SET_LEDS_BLUE _UxGT("Mavi")
-#define MSG_SET_LEDS_INDIGO _UxGT("Lacivert")
-#define MSG_SET_LEDS_VIOLET _UxGT("Menekşe")
-#define MSG_SET_LEDS_WHITE _UxGT("Beyaz")
-#define MSG_SET_LEDS_DEFAULT _UxGT("Varsayılan")
-#define MSG_CUSTOM_LEDS _UxGT("Özel Işıklar")
-#define MSG_INTENSITY_R _UxGT("Kırmızı Şiddeti")
-#define MSG_INTENSITY_G _UxGT("Yeşil Şiddeti")
-#define MSG_INTENSITY_B _UxGT("Mavi Şiddeti")
-#define MSG_INTENSITY_W _UxGT("Beyaz Şiddeti")
-#define MSG_LED_BRIGHTNESS _UxGT("Parlaklık")
-#define MSG_MOVING _UxGT("Hareket Ediyor..")
-#define MSG_FREE_XY _UxGT("Durdur XY")
-#define MSG_MOVE_X _UxGT("X Hareketi")
-#define MSG_MOVE_Y _UxGT("Y Hareketi")
-#define MSG_MOVE_Z _UxGT("Z Hareketi")
-#define MSG_MOVE_E _UxGT("Ekstruder")
-#define MSG_HOTEND_TOO_COLD _UxGT("Nozul Çok Soğuk")
-#define MSG_MOVE_Z_DIST _UxGT("%smm")
-#define MSG_MOVE_01MM _UxGT("0.1mm")
-#define MSG_MOVE_1MM _UxGT("1mm")
-#define MSG_MOVE_10MM _UxGT("10mm")
-#define MSG_SPEED _UxGT("Hız")
-#define MSG_BED_Z _UxGT("Z Mesafesi")
-#define MSG_NOZZLE _UxGT("Nozul")
-#define MSG_BED _UxGT("Tabla")
-#define MSG_FAN_SPEED _UxGT("Fan Hızı")
-#define MSG_EXTRA_FAN_SPEED _UxGT("Ekstra Fan Hızı")
-#define MSG_FLOW _UxGT("Akış")
-#define MSG_CONTROL _UxGT("Kontrol")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Çarpan")
-#define MSG_AUTOTEMP _UxGT("Oto. Sıcaklık")
-#define MSG_LCD_ON _UxGT("Açık")
-#define MSG_LCD_OFF _UxGT("Kapalı")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Seç")
-#define MSG_ACC _UxGT("İvme")
-#define MSG_JERK _UxGT("Sarsım")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-Sarsım")
- #define MSG_VB_JERK _UxGT("Vb-Sarsım")
- #define MSG_VC_JERK _UxGT("Vc-Sarsım")
-#else
- #define MSG_VA_JERK _UxGT("Vx-Sarsım")
- #define MSG_VB_JERK _UxGT("Vy-Sarsım")
- #define MSG_VC_JERK _UxGT("Vz-Sarsım")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-Sarsım")
-#define MSG_JUNCTION_DEVIATION _UxGT("Jonksiyon Sapması")
-#define MSG_VELOCITY _UxGT("Hız Vektörü")
-#define MSG_VMAX _UxGT("HızVektör.max ")
-#define MSG_VMIN _UxGT("HızVektör.min")
-#define MSG_VTRAV_MIN _UxGT("HV.gezinme min")
-#define MSG_ACCELERATION _UxGT("Ivme")
-#define MSG_AMAX _UxGT("Max. ivme ")
-#define MSG_A_RETRACT _UxGT("Ivme-geri çekme")
-#define MSG_A_TRAVEL _UxGT("Ivme-gezinme")
-#define MSG_STEPS_PER_MM _UxGT("Adım/mm")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A adım/mm")
- #define MSG_BSTEPS _UxGT("B adım/mm")
- #define MSG_CSTEPS _UxGT("C adım/mm")
-#else
- #define MSG_ASTEPS _UxGT("X adım/mm")
- #define MSG_BSTEPS _UxGT("Y adım/mm")
- #define MSG_CSTEPS _UxGT("Z adım/mm")
-#endif
-#define MSG_ESTEPS _UxGT("E adım/mm")
-#define MSG_E0_STEPS _UxGT("E1 adım/mm")
-#define MSG_E1_STEPS _UxGT("E2 adım/mm")
-#define MSG_E2_STEPS _UxGT("E3 adım/mm")
-#define MSG_E3_STEPS _UxGT("E4 adım/mm")
-#define MSG_E4_STEPS _UxGT("E5 adım/mm")
-#define MSG_E5_STEPS _UxGT("E6 adım/mm")
-#define MSG_TEMPERATURE _UxGT("Sıcaklık")
-#define MSG_MOTION _UxGT("Hareket")
-#define MSG_FILAMENT _UxGT("Filaman")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("Ekstrüzyon/mm³")
-#define MSG_FILAMENT_DIAM _UxGT("Filaman Çapı")
-#define MSG_FILAMENT_UNLOAD _UxGT("Çıkart mm")
-#define MSG_FILAMENT_LOAD _UxGT("Yükle mm")
-#define MSG_ADVANCE_K _UxGT("K İlerlet")
-#define MSG_CONTRAST _UxGT("LCD Kontrast")
-#define MSG_STORE_EEPROM _UxGT("Hafızaya Al")
-#define MSG_LOAD_EEPROM _UxGT("Hafızadan Yükle")
-#define MSG_RESTORE_FAILSAFE _UxGT("Fabrika Ayarları")
-#define MSG_INIT_EEPROM _UxGT("EEPROM'u başlat")
-#define MSG_MEDIA_UPDATE _UxGT("SD Güncellemesi")
-#define MSG_RESET_PRINTER _UxGT("Yazıcıyı Resetle")
-#define MSG_REFRESH _UxGT("Yenile")
-#define MSG_WATCH _UxGT("Bilgi Ekranı")
-#define MSG_PREPARE _UxGT("Hazırlık")
-#define MSG_TUNE _UxGT("Ayar")
-#define MSG_PAUSE_PRINT _UxGT("Duraklat")
-#define MSG_RESUME_PRINT _UxGT("Sürdür")
-#define MSG_STOP_PRINT _UxGT("Durdur")
-#define MSG_OUTAGE_RECOVERY _UxGT("Kesinti Kurtarma")
-#define MSG_MEDIA_MENU _UxGT("SD Karttan Yazdır")
-#define MSG_NO_MEDIA _UxGT("SD Kart Yok!")
-#define MSG_DWELL _UxGT("Uyku...")
-#define MSG_USERWAIT _UxGT("Operatör bekleniyor.")
-#define MSG_PRINT_PAUSED _UxGT("Baskı Duraklatıldı")
-#define MSG_PRINTING _UxGT("Baskı Yapılıyor...")
-#define MSG_PRINT_ABORTED _UxGT("Baskı Durduruldu!")
-#define MSG_NO_MOVE _UxGT("İşlem yok.")
-#define MSG_KILLED _UxGT("Kilitlendi. ")
-#define MSG_STOPPED _UxGT("Durdu. ")
-#define MSG_CONTROL_RETRACT _UxGT("Geri Çek mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Swap Re.mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Geri Çekme V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Atlama mm")
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("Oto. Geri Çekme")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("G.Çekme Boyu")
-#define MSG_TOOL_CHANGE _UxGT("Takım Değişimi")
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Z Yükselt")
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Birincil Hız")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Geri Çekme Hızı")
-#define MSG_FILAMENTCHANGE _UxGT("Filaman Değiştir")
-#define MSG_FILAMENTLOAD _UxGT("Filaman Yükle")
-#define MSG_FILAMENTUNLOAD _UxGT("Filaman Çıkart")
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Tümünü Çıkart")
-#define MSG_INIT_MEDIA _UxGT("SD Kart Başlatılıyor")
-#define MSG_CHANGE_MEDIA _UxGT("SD Kart Değiştir")
-#define MSG_ZPROBE_OUT _UxGT("Z Prob Açık. Tabla")
-#define MSG_SKEW_FACTOR _UxGT("Çarpıklık Faktörü")
-#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
-#define MSG_BLTOUCH_RESET _UxGT("Sıfırla BLTouch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("BLTouch Aç")
-#define MSG_BLTOUCH_STOW _UxGT("BLTouch Kapat")
-#define MSG_MANUAL_DEPLOY _UxGT("Z-Prob Aç")
-#define MSG_MANUAL_STOW _UxGT("Z-Sensör Kapat")
-#define MSG_HOME_FIRST _UxGT("Sıfırla %s%s%s Önce")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset")
-#define MSG_BABYSTEP_X _UxGT("Miniadım X")
-#define MSG_BABYSTEP_Y _UxGT("Miniadım Y")
-#define MSG_BABYSTEP_Z _UxGT("Miniadım Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Endstop iptal")
-#define MSG_HEATING_FAILED_LCD _UxGT("Isınma başarısız")
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Yatak Isınma Başrsız")
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Hata: Sıcaklık Aşımı")
-#define MSG_THERMAL_RUNAWAY _UxGT("TERMAL PROBLEM")
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("TABLA TERMAL PROBLEM")
-#define MSG_ERR_MAXTEMP _UxGT("Hata: MAX.SICAKLIK")
-#define MSG_ERR_MINTEMP _UxGT("Hata: MIN.SICAKLIK")
-#define MSG_ERR_MAXTEMP_BED _UxGT("Hata: MAX.SIC. TABLA")
-#define MSG_ERR_MINTEMP_BED _UxGT("Hata: MIN.SIC. TABLA")
-#define MSG_ERR_Z_HOMING _UxGT("Önce XY Sıfırla")
-#define MSG_HALTED _UxGT("YAZICI DURDURULDU")
-#define MSG_PLEASE_RESET _UxGT("Lütfen Resetleyin")
-#define MSG_SHORT_DAY _UxGT("G") // One character only
-#define MSG_SHORT_HOUR _UxGT("S") // One character only
-#define MSG_SHORT_MINUTE _UxGT("D") // One character only
-#define MSG_HEATING _UxGT("Isınıyor...")
-#define MSG_COOLING _UxGT("Soğuyor...")
-#define MSG_BED_HEATING _UxGT("Tabla Isınıyor...")
-#define MSG_BED_COOLING _UxGT("Tabla Soğuyor...")
-#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibrasyonu")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Ayarla X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Ayarla Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Ayarla Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Ayarla Merkez")
-#define MSG_DELTA_SETTINGS _UxGT("Delta Ayarları")
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Oto Kalibrasyon")
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Delta Yük. Ayarla")
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Z Prob Ofseti")
-#define MSG_DELTA_DIAG_ROD _UxGT("Çapral Mil")
-#define MSG_DELTA_HEIGHT _UxGT("Yükseklik")
-#define MSG_DELTA_RADIUS _UxGT("Yarıçap")
-#define MSG_INFO_MENU _UxGT("Yazıcı Hakkında")
-#define MSG_INFO_PRINTER_MENU _UxGT("Yazıcı Bilgisi")
-#define MSG_3POINT_LEVELING _UxGT("3-Nokta Hizalama")
-#define MSG_LINEAR_LEVELING _UxGT("Doğrusal Hizalama")
-#define MSG_BILINEAR_LEVELING _UxGT("İki Yönlü Doğ. Hiza.")
-#define MSG_UBL_LEVELING _UxGT("Birleşik Tabla Hiza.")
-#define MSG_MESH_LEVELING _UxGT("Mesh Hizalama")
-#define MSG_INFO_STATS_MENU _UxGT("İstatistikler")
-#define MSG_INFO_BOARD_MENU _UxGT("Kontrolcü Bilgisi")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistörler")
-#define MSG_INFO_EXTRUDERS _UxGT("Ekstruderler")
-#define MSG_INFO_BAUDRATE _UxGT("İletişim Hızı")
-#define MSG_INFO_PROTOCOL _UxGT("Protokol")
-#define MSG_CASE_LIGHT _UxGT("Aydınlatmayı Aç")
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Aydınlatma Parlaklğı")
+namespace Language_tr {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_EXPECTED_PRINTER _UxGT("Yanlış Yazıcı")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Turkish");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Baskı Sayısı")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Tamamlanan")
- #define MSG_INFO_PRINT_TIME _UxGT("Toplam Baskı Süresi")
- #define MSG_INFO_PRINT_LONGEST _UxGT("En Uzun Baskı Süresi")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Toplam Filaman")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Baskı")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Tamamlanan")
- #define MSG_INFO_PRINT_TIME _UxGT("Süre")
- #define MSG_INFO_PRINT_LONGEST _UxGT("En Uzun")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Filaman")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Min Sıc.")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Sıc.")
-#define MSG_INFO_PSU _UxGT("Güç Kaynağı")
-#define MSG_DRIVE_STRENGTH _UxGT("Sürücü Gücü")
-#define MSG_DAC_PERCENT _UxGT("Sürücü %")
-#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Yaz")
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("BASKI DURAKLATILDI")
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("FILAMAN YüKLE")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("FILAMAN ÇIKART")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Seçenekler:")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Daha Fazla Tasviye")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Baskıyı sürdür")
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozul: ")
-#define MSG_RUNOUT_SENSOR _UxGT("Runout Sensörü")
-#define MSG_ERR_HOMING_FAILED _UxGT("Sıfırlama Başarısız")
-#define MSG_ERR_PROBING_FAILED _UxGT("Probing Başarısız")
-#define MSG_M600_TOO_COLD _UxGT("M600: Çok Soğuk")
-//
-// Filament Değiştirme ekranları, 4 satırlı bir ekranda 3 satıra kadar gösterilir
-// ...veya 3 satırlı ekranda 2 satıra kadar
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Baskıya devam etmek")
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("için Butona bas")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Filaman değişimi")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("için başlama")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("bekleniyor")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Filamanı yükle")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("ve devam için")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("tuşa bas...")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Nozulü Isıtmak için")
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("Butona Bas.")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nozul Isınıyor")
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Lütfen Bekleyin...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Filamanın çıkması")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("bekleniyor")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Filamanın yüklenmesi")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("bekleniyor..")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Filaman Temizlemesi")
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("için bekle")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Filaman Temizlemesi")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("bitirmek için tıkla")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Baskının devam ")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("etmesi için bekle")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Sürdürmek İçin Tıkla")
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Lütfen bekleyiniz...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Yükle ve bas")
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Isıtmak için Tıkla")
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Isınıyor...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Çıkartılıyor...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Yüklüyor...")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Temizleniyor...")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Bitirmek için Tıkla")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Sürdürülüyor...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" hazır.");
+ PROGMEM Language_Str MSG_BACK = _UxGT("Geri");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("SD K. Yerleştirildi.");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("SD Kart Çıkarıldı.");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Enstops"); // Max length 8 characters
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Yazılımsal Endstops");
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Ana");
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar");
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Yapılandırma");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Oto. Başlat");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Motorları Durdur");
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Hata Ayıklama");
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Durum Çubuğu Testi");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Eksenleri Sıfırla");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("X Sıfırla");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Y Sıfırla");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Z Sıfırla");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Oto. Z-Hizalama");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("XYZ Sıfırlanıyor");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Başlatmak için tıkla");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sonraki Nokta");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Hizalama Tamam!");
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Kaçınma Yüksekliği");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Offset Ayarla");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset Tamam");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Sıfır Belirle");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Nozul ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tüm");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Tabla");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_1_LABEL _UxGT(" Ayarlar");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Nozul ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tüm");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Tabla");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Ön Isınma ") PREHEAT_2_LABEL _UxGT(" Ayarlar");
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isınma");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Soğut");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Gücü Aç");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Gücü Kapat");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Ekstrüzyon");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Geri Çek");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Eksen Hareketleri");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Tabla Hizalama");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Tabla Hizası");
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Hizalama Köşeleri");
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Sonraki Köşe");
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Mesh Düzenle");
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Mesh Düzenleme Durdu");
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("İndeks X");
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("İndeks Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Z Değeri");
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Özel Komutlar");
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("IDEX Modu");
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Oto-Park");
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Kopyala");
+ PROGMEM Language_Str MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Yansıtılmış kopya");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Tam Kontrol");
+ PROGMEM Language_Str MSG_X_OFFSET = _UxGT("2. nozul X");
+ PROGMEM Language_Str MSG_Y_OFFSET = _UxGT("2. nozul Y");
+ PROGMEM Language_Str MSG_Z_OFFSET = _UxGT("2. nozul Z");
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("G29 Çalışıyor");
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL Araçları");
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("UBL Yatak Hizalama");
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Elle Mesh Oluştur");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Altlık & Ölçü Ver");
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Ölçü");
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Yataktan Ölçü Kaldır");
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Sonrakine Git");
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("UBL'yi Etkinleştir");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("UBL'yi Etkisizleştir");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Yatak Sıcaklığı");
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Yatak Sıcaklığı");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nozul Sıcaklığı");
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Nozul Sıcaklığı");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Mesh Düzenleme");
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Özel Mesh Düzenleme");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("İnce Ayar Mesh");
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Mesh Düzenleme Tamam");
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Özel Mesh Oluştur");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Mesh Oluştur");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Mesh Oluştur (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Mesh Oluştur (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Soğuk Mesh Oluştur");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Mesh Yükseklik Ayarı");
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Yükseklik miktarı");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Doğrulama Mesh");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Doğrulama Mesh (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Doğrulama Mesh (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Özel Mesh Doğrulama");
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Tabla Mesh Devam et");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Mesh Hizalama");
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Nokta Hizalama");
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Kafes Mesh Hizalama");
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Mesh Seviyesi");
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Yan Noktalar");
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Haritalama Türü");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çıkış Haritası");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host için Çıktı");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV için Çıktı");
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yazıcıda Yedek Kpalı");
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("UBL Çıkış Bilgisi");
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Dolgu Miktarı");
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Manuel Dolgu");
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dogu");
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Mesh Dolgu");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Tümünü Geçersiz Kıl");
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakını Geçersiz Kıl");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Tümünü İnce Ayarla");
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Yakını İnce Ayarla");
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Depolama");
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Bellek Yuvası");
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Yatak Mesh Yükle");
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Yatak Mesh Kayıt Et");
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 Mesh %i yüklendi");
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 Mesh %i kayıtlandı");
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("Depolama Yok");
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Hata: UBL Kayıt");
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Hata: UBL Yenileme");
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Ofset Durduruldu");
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Adım Adım UBL");
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Soğuk Mesh Oluştur");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Akıllı Dogu");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Doğrulama Mesh");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tümünü İnce Ayarla");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Doğrulama Mesh");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tümünü İnce Ayarla");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Yatak Mesh Kayıt Et");
+
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("LED Kontrolü");
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Işıklar");
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Işık Hazır Ayarları");
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Kırmızı");
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Turuncu");
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Sarı");
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Yeşil");
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Mavi");
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Lacivert");
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Menekşe");
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Beyaz");
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan");
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Özel Işıklar");
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Kırmızı Şiddeti");
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Yeşil Şiddeti");
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Mavi Şiddeti");
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Beyaz Şiddeti");
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("Parlaklık");
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Hareket Ediyor..");
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Durdur XY");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("X Hareketi");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Y Hareketi");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Z Hareketi");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Ekstruder");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Ekstruder ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Ekstruder ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Ekstruder ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Ekstruder ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Ekstruder ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Ekstruder ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Nozul Çok Soğuk");
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("%smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Hız");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Z Mesafesi");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Nozul");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Nozul ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Nozul ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Nozul ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Nozul ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Nozul ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Nozul ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Tabla");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Fan Hızı");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Fan Hızı 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Fan Hızı 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Fan Hızı 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Ekstra Fan Hızı");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Ekstra Fan Hızı 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Ekstra Fan Hızı 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Ekstra Fan Hızı 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Akış");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Akış ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Akış ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Akış ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Akış ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Akış ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Akış ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Kontrol");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Çarpan");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Oto. Sıcaklık");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Açık");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Kapalı");
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Seç");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Seç ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Seç ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Seç ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Seç ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Seç ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Seç ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("İvme");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Sarsım");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-Sarsım");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-Sarsım");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-Sarsım");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-Sarsım");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Jonksiyon Sapması");
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Hız Vektörü");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("HızVektör.max ") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("HızVektör.max ") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("HızVektör.max ") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("HızVektör.max ") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("HızVektör.max ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("HızVektör.max ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("HızVektör.max ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("HızVektör.max ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("HızVektör.max ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("HızVektör.max ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("HızVektör.min");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("HV.gezinme min");
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Ivme");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Max. ivme ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Max. ivme ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Max. ivme ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Max. ivme ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Max. ivme ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Max. ivme ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Max. ivme ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Max. ivme ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Max. ivme ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Max. ivme ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("Ivme-geri çekme");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("Ivme-gezinme");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Adım/mm");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("E adım/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT(" adım/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Sıcaklık");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Hareket");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Filaman");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("Ekstrüzyon/mm³");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Filaman Çapı");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Filaman Çapı ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Filaman Çapı ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Filaman Çapı ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Filaman Çapı ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Filaman Çapı ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Filaman Çapı ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Çıkart mm");
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Yükle mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K İlerlet");
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K İlerlet ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K İlerlet ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K İlerlet ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K İlerlet ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K İlerlet ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K İlerlet ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD Kontrast");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Hafızaya Al");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Hafızadan Yükle");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Fabrika Ayarları");
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat");
+ PROGMEM Language_Str MSG_MEDIA_UPDATE = _UxGT("SD Güncellemesi");
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Bilgi Ekranı");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Hazırlık");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Ayar");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Duraklat");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Sürdür");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Durdur");
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Kesinti Kurtarma");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("SD Kart Yok!");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Uyku...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Operatör bekleniyor.");
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("Baskı Duraklatıldı");
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Baskı Yapılıyor...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Baskı Durduruldu!");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("İşlem yok.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("Kilitlendi. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("Durdu. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Geri Çek mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Geri Çekme V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Atlama mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S UnRet mm");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("UnRet V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V");
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("Oto. Geri Çekme");
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("G.Çekme Boyu");
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Takım Değişimi");
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Yükselt");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Birincil Hız");
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Geri Çekme Hızı");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Filaman Değiştir");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Filaman Değiştir ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Filaman Değiştir ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Filaman Değiştir ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Filaman Değiştir ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Filaman Değiştir ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Filaman Değiştir ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Filaman Yükle ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Filaman Yükle ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Filaman Yükle ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Filaman Yükle ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Filaman Yükle ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Filaman Yükle ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Filaman Çıkart ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Filaman Çıkart ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Filaman Çıkart ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Filaman Çıkart ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Filaman Çıkart ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Filaman Çıkart ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Tümünü Çıkart");
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("SD Kart Başlatılıyor");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("SD Kart Değiştir");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z Prob Açık. Tabla");
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Çarpıklık Faktörü");
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Sıfırla BLTouch");
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch Aç");
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("BLTouch Kapat");
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Z-Prob Aç");
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Z-Sensör Kapat");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Sıfırla %s%s%s Önce");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Miniadım X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Miniadım Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Miniadım Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Endstop iptal");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Isınma başarısız");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Yatak Isınma Başrsız");
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Hata: Sıcaklık Aşımı");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("TERMAL PROBLEM");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("TABLA TERMAL PROBLEM");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Hata: MAX.SICAKLIK");
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Hata: MIN.SICAKLIK");
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Hata: MAX.SIC. TABLA");
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Hata: MIN.SIC. TABLA");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Önce XY Sıfırla");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("YAZICI DURDURULDU");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Lütfen Resetleyin");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("G"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("S"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("D"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Isınıyor...");
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Soğuyor...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Tabla Isınıyor...");
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Tabla Soğuyor...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrasyonu");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Ayarla X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Ayarla Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Ayarla Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Ayarla Merkez");
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Delta Ayarları");
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Oto Kalibrasyon");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Delta Yük. Ayarla");
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Z Prob Ofseti");
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Çapral Mil");
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Yükseklik");
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Yarıçap");
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Yazıcı Hakkında");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Yazıcı Bilgisi");
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("3-Nokta Hizalama");
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("Doğrusal Hizalama");
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("İki Yönlü Doğ. Hiza.");
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("Birleşik Tabla Hiza.");
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Mesh Hizalama");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("İstatistikler");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Kontrolcü Bilgisi");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Termistörler");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Ekstruderler");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("İletişim Hızı");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Protokol");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Aydınlatmayı Aç");
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Aydınlatma Parlaklğı");
+
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Yanlış Yazıcı");
+
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Baskı");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Süre");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Min Sıc.");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Max Sıc.");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Güç Kaynağı");
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Sürücü Gücü");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("Sürücü %");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Yaz");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("BASKI DURAKLATILDI");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMAN YüKLE");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMAN ÇIKART");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Seçenekler:");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Daha Fazla Tasviye");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Baskıyı sürdür");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozul: ");
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR = _UxGT("Runout Sensörü");
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Sıfırlama Başarısız");
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("Probing Başarısız");
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Çok Soğuk");
+ //
+ // Filament Değiştirme ekranları, 4 satırlı bir ekranda 3 satıra kadar gösterilir
+ // ...veya 3 satırlı ekranda 2 satıra kadar
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor.."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle"));
+ #else // LCD_HEIGHT < 4
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Lütfen bekleyiniz..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Yükle ve bas"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Isıtmak için Tıkla"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Isınıyor..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Çıkartılıyor..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Yüklüyor..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Temizleniyor..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Bitirmek için Tıkla"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Sürdürülüyor..."));
+ #endif // LCD_HEIGHT < 4
+}
diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h
index 12fb53e672..769d1c97ef 100644
--- a/Marlin/src/lcd/language/language_uk.h
+++ b/Marlin/src/lcd/language/language_uk.h
@@ -30,213 +30,304 @@
*/
#define DISPLAY_CHARSET_ISO10646_5
-#define CHARSIZE 2
-#define WELCOME_MSG MACHINE_NAME _UxGT(" готовий.")
-#define MSG_MEDIA_INSERTED _UxGT("Картка вставлена")
-#define MSG_MEDIA_REMOVED _UxGT("Картка видалена")
-#define MSG_LCD_ENDSTOPS _UxGT("Кінцевик") // Max length 8 characters
-#define MSG_MAIN _UxGT("Меню")
-#define MSG_AUTOSTART _UxGT("Автостарт")
-#define MSG_DISABLE_STEPPERS _UxGT("Вимк. двигуни")
-#define MSG_AUTO_HOME _UxGT("Авто паркування")
-#define MSG_AUTO_HOME_X _UxGT("Паркування X")
-#define MSG_AUTO_HOME_Y _UxGT("Паркування Y")
-#define MSG_AUTO_HOME_Z _UxGT("Паркування Z")
-#define MSG_LEVEL_BED_HOMING _UxGT("Паркування XYZ")
-#define MSG_LEVEL_BED_WAITING _UxGT("Почати")
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Слідуюча Точка")
-#define MSG_LEVEL_BED_DONE _UxGT("Завершено!")
-#define MSG_SET_HOME_OFFSETS _UxGT("Зберегти паркув.")
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Зміщення застос.")
-#define MSG_SET_ORIGIN _UxGT("Встанов. початок")
-#define MSG_PREHEAT_1 _UxGT("Нагрів " PREHEAT_1_LABEL)
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Все")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Стіл")
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" нал.")
-#define MSG_PREHEAT_2 _UxGT("Нагрів " PREHEAT_2_LABEL)
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Все")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Стіл")
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" нал.")
-#define MSG_COOLDOWN _UxGT("Охолодження")
-#define MSG_SWITCH_PS_ON _UxGT("Увімкнути живлення")
-#define MSG_SWITCH_PS_OFF _UxGT("Вимкнути живлення")
-#define MSG_EXTRUDE _UxGT("Екструзія")
-#define MSG_RETRACT _UxGT("Втягування")
-#define MSG_MOVE_AXIS _UxGT("Рух по осям")
-#define MSG_BED_LEVELING _UxGT("Нівелювання столу")
-#define MSG_LEVEL_BED _UxGT("Нівелювання столу")
-#define MSG_MOVE_X _UxGT("Рух по X")
-#define MSG_MOVE_Y _UxGT("Рух по Y")
-#define MSG_MOVE_Z _UxGT("Рух по Z")
-#define MSG_MOVE_E _UxGT("Екструдер")
-#define MSG_MOVE_Z_DIST _UxGT("Рух по %smm")
-#define MSG_MOVE_01MM _UxGT("Рух по 0.1mm")
-#define MSG_MOVE_1MM _UxGT("Рух по 1mm")
-#define MSG_MOVE_10MM _UxGT("Рух по 10mm")
-#define MSG_SPEED _UxGT("Швидкість")
-#define MSG_BED_Z _UxGT("Z Столу")
-#define MSG_NOZZLE _UxGT("Сопло")
-#define MSG_BED _UxGT("Стіл")
-#define MSG_FAN_SPEED _UxGT("Охолодж.")
-#define MSG_FLOW _UxGT("Потік")
-#define MSG_CONTROL _UxGT("Налаштування")
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Мін")
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Макс")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Факт")
-#define MSG_AUTOTEMP _UxGT("Автотемпер.")
-#define MSG_LCD_ON _UxGT("Увімк.")
-#define MSG_LCD_OFF _UxGT("Вимк.")
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Вибрати")
-#define MSG_ACC _UxGT("Приск.")
-#define MSG_JERK _UxGT("Ривок")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Va-ривок")
- #define MSG_VB_JERK _UxGT("Vb-ривок")
- #define MSG_VC_JERK _UxGT("Vc-ривок")
-#else
- #define MSG_VA_JERK _UxGT("Vx-ривок")
- #define MSG_VB_JERK _UxGT("Vy-ривок")
- #define MSG_VC_JERK _UxGT("Vz-ривок")
-#endif
-#define MSG_VE_JERK _UxGT("Ve-ривок")
-#define MSG_VMAX _UxGT("Vмакс")
-#define MSG_VMIN _UxGT("Vмін")
-#define MSG_VTRAV_MIN _UxGT("Vруху мін")
-#define MSG_AMAX _UxGT("Aмакс ")
-#define MSG_A_RETRACT _UxGT("A-втягув.")
-#define MSG_A_TRAVEL _UxGT("A-руху")
-#define MSG_STEPS_PER_MM _UxGT("Кроків/мм")
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("Aкроків/мм")
- #define MSG_BSTEPS _UxGT("Bкроків/мм")
- #define MSG_CSTEPS _UxGT("Cкроків/мм")
-#else
- #define MSG_ASTEPS _UxGT("Xкроків/мм")
- #define MSG_BSTEPS _UxGT("Yкроків/мм")
- #define MSG_CSTEPS _UxGT("Zкроків/мм")
-#endif
-#define MSG_ESTEPS _UxGT("Eкроків/мм")
-#define MSG_E0_STEPS _UxGT("E1кроків/мм")
-#define MSG_E1_STEPS _UxGT("E2кроків/мм")
-#define MSG_E2_STEPS _UxGT("E3кроків/мм")
-#define MSG_E3_STEPS _UxGT("E4кроків/мм")
-#define MSG_E4_STEPS _UxGT("E5кроків/мм")
-#define MSG_E5_STEPS _UxGT("E6кроків/мм")
-#define MSG_TEMPERATURE _UxGT("Температура")
-#define MSG_MOTION _UxGT("Рух")
-#define MSG_FILAMENT _UxGT("Волокно")
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E в мм3")
-#define MSG_FILAMENT_DIAM _UxGT("Діам. волок.")
-#define MSG_CONTRAST _UxGT("контраст LCD")
-#define MSG_STORE_EEPROM _UxGT("Зберегти в ПЗП")
-#define MSG_LOAD_EEPROM _UxGT("Зчитати з ПЗП")
-#define MSG_RESTORE_FAILSAFE _UxGT("Відновити базові")
-#define MSG_REFRESH _UxGT("Поновити")
-#define MSG_WATCH _UxGT("Інформація")
-#define MSG_PREPARE _UxGT("Підготувати")
-#define MSG_TUNE _UxGT("Підлаштування")
-#define MSG_PAUSE_PRINT _UxGT("Призупинити друк")
-#define MSG_RESUME_PRINT _UxGT("Відновити друк")
-#define MSG_STOP_PRINT _UxGT("Скасувати друк")
-#define MSG_MEDIA_MENU _UxGT("Друкувати з SD")
-#define MSG_NO_MEDIA _UxGT("Відсутня SD карт.")
-#define MSG_DWELL _UxGT("Сплячка...")
-#define MSG_USERWAIT _UxGT("Очікування дій...")
-#define MSG_PRINT_ABORTED _UxGT("Друк скасовано")
-#define MSG_NO_MOVE _UxGT("Немає руху.")
-#define MSG_KILLED _UxGT("ПЕРЕРВАНО. ")
-#define MSG_STOPPED _UxGT("ЗУПИНЕНО. ")
-#define MSG_FILAMENTCHANGE _UxGT("Зміна волокна")
-#define MSG_INIT_MEDIA _UxGT("Старт SD картки")
-#define MSG_CHANGE_MEDIA _UxGT("Заміна SD карти")
-#define MSG_ZPROBE_OUT _UxGT("Z дет. не в межах")
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Само-Тест")
-#define MSG_BLTOUCH_RESET _UxGT("Скинути BLTouch")
-#define MSG_HOME_FIRST _UxGT("Дім %s%s%s перший")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Зміщення Z")
-#define MSG_BABYSTEP_X _UxGT("Мікрокрок X")
-#define MSG_BABYSTEP_Y _UxGT("Мікрокрок Y")
-#define MSG_BABYSTEP_Z _UxGT("Мікрокрок Z")
-#define MSG_ENDSTOP_ABORT _UxGT("невдача кінцевика")
-#define MSG_HEATING_FAILED_LCD _UxGT("Невдалий нагрів")
-#define MSG_THERMAL_RUNAWAY _UxGT("ЗБІЙ ТЕМПЕРАТУРИ")
-#define MSG_ERR_Z_HOMING _UxGT("Дім XY перший")
-#define MSG_HALTED _UxGT("ПРИНТЕР ЗУПИНЕНО")
-#define MSG_PLEASE_RESET _UxGT("Перезавантажте")
-#define MSG_SHORT_DAY _UxGT("д") // One character only
-#define MSG_SHORT_HOUR _UxGT("г") // One character only
-#define MSG_SHORT_MINUTE _UxGT("х") // One character only
-#define MSG_HEATING _UxGT("Нагрівання...")
-#define MSG_BED_HEATING _UxGT("Нагрівання столу...")
-#define MSG_DELTA_CALIBRATE _UxGT("Калібр. Delta")
-#define MSG_DELTA_CALIBRATE_X _UxGT("Калібрування X")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Калібрування Y")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Калібрування Z")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Калібр. Центру")
+namespace Language_uk {
+ using namespace Language_en; // Inherit undefined strings from English
-#define MSG_INFO_MENU _UxGT("Про принтер")
-#define MSG_INFO_PRINTER_MENU _UxGT("Інформація")
-#define MSG_INFO_STATS_MENU _UxGT("Статистика")
-#define MSG_INFO_BOARD_MENU _UxGT("Про плату")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Термістори")
-#define MSG_INFO_EXTRUDERS _UxGT("Екструдери")
-#define MSG_INFO_BAUDRATE _UxGT("біт/с")
-#define MSG_INFO_PROTOCOL _UxGT("Протокол")
-#define MSG_CASE_LIGHT _UxGT("Підсвітка")
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Ukranian");
-#define MSG_EXPECTED_PRINTER _UxGT("Неправильний принтер")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" готовий.");
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("Картка вставлена");
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("Картка видалена");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Кінцевик"); // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Меню");
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Автостарт");
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Вимк. двигуни");
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Авто паркування");
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Паркування X");
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Паркування Y");
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Паркування Z");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Паркування XYZ");
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Почати");
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Слідуюча Точка");
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("Завершено!");
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Зберегти паркув.");
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Зміщення застос.");
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Встанов. початок");
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Нагрів ") PREHEAT_1_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Нагрів ") PREHEAT_1_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Все");
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" Стіл");
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" нал.");
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Нагрів ") PREHEAT_2_LABEL;
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Нагрів ") PREHEAT_2_LABEL " " LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Все");
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" Стіл");
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Нагрів ") PREHEAT_2_LABEL _UxGT(" нал.");
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Охолодження");
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Увімкнути живлення");
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Вимкнути живлення");
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Екструзія");
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Втягування");
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Рух по осям");
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Нівелювання столу");
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Нівелювання столу");
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Рух по X");
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Рух по Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Рух по Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Екструдер");
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Екструдер ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Екструдер ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Екструдер ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Екструдер ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Екструдер ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Екструдер ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("Рух по %smm");
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Рух по 0.1mm");
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Рух по 1mm");
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Рух по 10mm");
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Швидкість");
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Z Столу");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Сопло");
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Сопло ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Сопло ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Сопло ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Сопло ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Сопло ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Сопло ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = _UxGT("Стіл");
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Охолодж.");
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Охолодж. 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Охолодж. 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Охолодж. 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Потік");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Потік ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Потік ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Потік ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Потік ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Потік ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Потік ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Налаштування");
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Мін");
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Макс");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Факт");
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Автотемпер.");
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Увімк.");
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Вимк.");
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Вибрати");
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Вибрати ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Вибрати ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Вибрати ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Вибрати ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Вибрати ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Вибрати ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Приск.");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Ривок");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("V") LCD_STR_A _UxGT("-ривок");
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("V") LCD_STR_B _UxGT("-ривок");
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("V") LCD_STR_C _UxGT("-ривок");
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Ve-ривок");
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vмакс") LCD_STR_A;
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vмакс") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vмакс") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vмакс") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("Vмакс ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("Vмакс ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("Vмакс ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("Vмакс ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("Vмакс ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("Vмакс ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vмін");
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vруху мін");
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Aмакс ") LCD_STR_A;
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Aмакс ") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Aмакс ") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Aмакс ") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Aмакс ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Aмакс ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Aмакс ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Aмакс ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Aмакс ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Aмакс ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("A-втягув.");
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("A-руху");
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Кроків/мм");
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("Eкроків/мм");
+ PROGMEM Language_Str MSG_E0_STEPS = LCD_STR_E0 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E1_STEPS = LCD_STR_E1 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E2_STEPS = LCD_STR_E2 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E3_STEPS = LCD_STR_E3 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E4_STEPS = LCD_STR_E4 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_E5_STEPS = LCD_STR_E5 _UxGT("кроків/мм");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Температура");
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Рух");
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Волокно");
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E в мм3");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Діам. волок.");
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Діам. волок. ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Діам. волок. ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Діам. волок. ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Діам. волок. ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Діам. волок. ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Діам. волок. ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("контраст LCD");
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Зберегти в ПЗП");
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Зчитати з ПЗП");
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Відновити базові");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Поновити");
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Інформація");
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Підготувати");
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Підлаштування");
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Призупинити друк");
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Відновити друк");
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Скасувати друк");
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("Друкувати з SD");
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("Відсутня SD карт.");
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Сплячка...");
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Очікування дій...");
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("Друк скасовано");
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Немає руху.");
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ПЕРЕРВАНО. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ЗУПИНЕНО. ");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Зміна волокна");
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Зміна волокна ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Зміна волокна ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Зміна волокна ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Зміна волокна ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Зміна волокна ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Зміна волокна ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("Старт SD картки");
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("Заміна SD карти");
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z дет. не в межах");
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Само-Тест");
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Скинути BLTouch");
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Дім %s%s%s перший");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Зміщення Z");
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Мікрокрок X");
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Мікрокрок Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Мікрокрок Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("невдача кінцевика");
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Невдалий нагрів");
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("ЗБІЙ ТЕМПЕРАТУРИ");
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Дім XY перший");
+ PROGMEM Language_Str MSG_HALTED = _UxGT("ПРИНТЕР ЗУПИНЕНО");
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Перезавантажте");
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("д"); // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("г"); // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("х"); // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Нагрівання...");
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Нагрівання столу...");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Калібр. Delta");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Калібрування X");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Калібрування Y");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Калібрування Z");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калібр. Центру");
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("К-сть друків")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Завершено")
- #define MSG_INFO_PRINT_TIME _UxGT("Весь час друку")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Найдовший час")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Екструдовано")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Друків")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Завершено")
- #define MSG_INFO_PRINT_TIME _UxGT("Загалом")
- #define MSG_INFO_PRINT_LONGEST _UxGT("Найдовший")
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Ексдруд.")
-#endif
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Про принтер");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Інформація");
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Статистика");
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Про плату");
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Термістори");
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Екструдери");
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("біт/с");
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Протокол");
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Підсвітка");
-#define MSG_INFO_MIN_TEMP _UxGT("Мін Темп.")
-#define MSG_INFO_MAX_TEMP _UxGT("Макс Темп.")
-#define MSG_INFO_PSU _UxGT("Джерело жив.")
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Неправильний принтер");
-#define MSG_DRIVE_STRENGTH _UxGT("Сила мотору")
-#define MSG_DAC_PERCENT _UxGT("% мотору")
-#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("К-сть друків");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Весь час друку");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший час");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Екструдовано");
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Друків");
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Загалом");
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший");
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Ексдруд.");
+ #endif
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Мін Темп.");
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Макс Темп.");
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Джерело жив.");
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Зачекайте на")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("початок заміни")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("волокна")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Зачекайте на")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("вивід волокна")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставте волокно")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("та натисніть для")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("продовження...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Зачекайте на")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("ввід волокна")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Зачекайте на")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("відновлення")
- #define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("друку")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Зачекайте...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Вивід...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставте і нат.")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ввід...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Відновлення...")
-#endif // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Сила мотору");
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("% мотору");
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Запис ЦАП на ПЗП");
+
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Відновити друк");
+
+ #if LCD_HEIGHT >= 4
+ // Up to 3 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Зачекайте на", "початок заміни", "волокна"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Зачекайте на", "вивід волокна"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставте волокно", "та натисніть для", "продовження..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Зачекайте на", "ввід волокна"));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Зачекайте на", "відновлення", "друку"));
+ #else
+ // Up to 2 lines allowed
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Зачекайте..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Вивід..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставте і нат."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ввід..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Відновлення..."));
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h
index b1520274fd..abb96a58a1 100644
--- a/Marlin/src/lcd/language/language_vi.h
+++ b/Marlin/src/lcd/language/language_vi.h
@@ -28,410 +28,518 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_vi {
+ using namespace Language_en; // Inherit undefined strings from English
-#define CHARSIZE 2
+ constexpr uint8_t CHARSIZE = 2;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Vietnamese");
-#define THIS_LANGUAGES_SPECIAL_SYMBOLS _UxGT("àạậẵắấầđẻểếềìỉởộỗợúự")
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT(" Sẵn sàng."); // Ready
+ PROGMEM Language_Str MSG_BACK = _UxGT("Trở lại"); // Back
+ PROGMEM Language_Str MSG_SD_INSERTED = _UxGT("Thẻ được cắm vào"); // Card inserted
+ PROGMEM Language_Str MSG_SD_REMOVED = _UxGT("Thẻ được rút ra");
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("Công tắc"); // Endstops - công tắc hành trình
+ PROGMEM Language_Str MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // soft Endstops
+ PROGMEM Language_Str MSG_MAIN = _UxGT("Chính"); // Main
+ PROGMEM Language_Str MSG_ADVANCED_SETTINGS = _UxGT("Thiết lập cấp cao"); // Advanced Settings
+ PROGMEM Language_Str MSG_CONFIGURATION = _UxGT("Cấu hình"); // Configuration
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("Khởi chạy tự động"); // Autostart
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("Tắt động cơ bước"); // Disable steppers
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("Menu gỡ lỗi"); // Debug Menu
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("Kiểm tra tiến độ"); // Progress bar test
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("Về nhà tự động"); // Auto home
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("Về nhà X"); // home x
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Về nhà Y"); // home y
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Về nhà Z");
+ PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Chỉnh canh Z tự động");
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Đang về nhà XYZ"); // Homing XYZ
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Nhấn để bắt đầu"); // Click to Begin
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Điểm tiếp theo"); // Next Point
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("San lấp được hoàn thành"); // Leveling Done!
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("Chiều cao mờ dần"); // Fade Height
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Đặt bù đắp nhà"); // Set home offsets
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Bù đắp được áp dụng"); // Offsets applied
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Đặt nguồn gốc"); // Set origin
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước"); // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N0; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N1; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N2; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N3; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N4; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ") LCD_STR_N5; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu");
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // all
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // bed -- using vietnamese term for 'table' instead
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // conf
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước"); // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N0; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N1; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N2; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N3; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N4; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" trước ") LCD_STR_N5; // Preheat
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu");
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Đầu ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Tất cả"); // all
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Bàn"); // bed -- using vietnamese term for 'table' instead
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("Làm nóng ") PREHEAT_2_LABEL _UxGT(" Cấu hình"); // conf
+ PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Sự nóng trước tự chọn"); // Preheat Custom
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Nguội xuống"); // Cooldown
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Bật nguồn"); // Switch power on
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Tắt nguồn"); // Switch power off
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Ép đùn"); // Extrude
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("Rút lại"); // Retract
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Di chuyển trục"); // Move axis
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("San Lấp Bàn"); // Bed Leveling
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Làm bằng mặt bàn"); // Level bed
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("Làm bằng góc bàn"); // Level corners
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("Góc tiếp theo"); // Next corner
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("Chỉnh lưới đã dừng"); // Mesh Editing Stopped
+ PROGMEM Language_Str MSG_MESH_X = _UxGT("Mục lục X"); // Index X
+ PROGMEM Language_Str MSG_MESH_Y = _UxGT("Mục lục Y");
+ PROGMEM Language_Str MSG_MESH_EDIT_Z = _UxGT("Giá trị Z"); // Z Value
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("Các lệnh tự chọn"); // Custom Commands
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("Đang chạy G29"); // Doing G29
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("Công cụ UBL"); // UBL tools
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("San Lấp Bàn Thống Nhất (UBL)"); // Unified Bed Leveling
+ PROGMEM Language_Str MSG_IDEX_MENU = _UxGT("chế độ IDEX"); // IDEX Mode
+ PROGMEM Language_Str MSG_IDEX_MODE_AUTOPARK = _UxGT("Đậu tự động"); // Auto-Park
+ PROGMEM Language_Str MSG_IDEX_MODE_DUPLICATE = _UxGT("Sự gấp đôi"); // Duplication
+ PROGMEM Language_Str MSG_IDEX_MODE_SCALED_COPY = _UxGT("Bản sao thu nhỏ");
+ PROGMEM Language_Str MSG_IDEX_MODE_FULL_CTRL = _UxGT("Toàn quyền điều khiển"); // Full control
+ PROGMEM Language_Str MSG_IDEX_X_OFFSET = _UxGT("Đầu phun X nhì"); // 2nd nozzle X
+ PROGMEM Language_Str MSG_IDEX_Y_OFFSET = _UxGT("Đầu phun Y nhì");
+ PROGMEM Language_Str MSG_IDEX_Z_OFFSET = _UxGT("Đầu phun Z nhì");
+ PROGMEM Language_Str MSG_IDEX_SAVE_OFFSETS = _UxGT("Lưu bù đắp"); // Save offsets
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("Tự xây dựng lưới"); // Manually Build Mesh
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("Đặt chêm và đo"); // Place shim & measure
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("Đo"); // Measure
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("Tháo và đo bàn"); // Remove & measure bed
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("Chuyển sang tiếp theo"); // moving to next
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("Bật UBL");
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("Tắt UBL");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("Nhiệt độ bàn"); // Bed Temp
+ PROGMEM Language_Str MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp");
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nhiệt độ đầu phun"); // Hotend Temp
+ PROGMEM Language_Str MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp");
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("Chỉnh sửa lưới"); // Mesh Edit
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Chỉnh sửa lưới tự chọn"); // Edit Custom Mesh
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("Chỉnh lưới chính xác"); // Fine tuning mesh
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("Chỉnh sửa xong lưới"); // Done Editing Mesh
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Xây dựng lưới tự chọn"); // Build Custom Mesh
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("Xây dựng lưới"); // Build Mesh
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("Xây dựng lưới (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("Xây dựng lưới (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("Xây dựng lưới lạnh"); // Build cold mesh
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Điều chỉnh chiều cao lưới"); // Adjust Mesh Height
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Số lượng chiều cao"); // Height Amount
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Thẩm tra lưới"); // Validate Mesh
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("Thẩm tra lưới (") PREHEAT_1_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("Thẩm tra lưới (") PREHEAT_2_LABEL _UxGT(")");
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Thẩm tra lưới tự chọn"); // validate custom mesh
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("Tiếp tục xây lưới bàn"); // Continue Bed Mesh
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("Đang san lấp lưới"); // Mesh Leveling
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Đang san lấp 3-điểm"); // 3-Point Leveling
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("Đang san lấp lưới phẳng"); // Grid (planar) Mesh Leveling
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("Làm bằng lưới"); // Level Mesh
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("Điểm bên cạnh"); // Side Points
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("Loại bản đồ"); // Map Type
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("Đầu ra bản đồ lưới"); // Output Mesh Map
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Đầu ra cho máy chủ"); // Output for Host
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Đầu ra cho CSV"); // Output for CSV
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Hỗ trợ lưới"); // Off Printer Backup | backup mesh
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("Đầu ra thông tin UBL"); // Output UBL Info
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("Chỉnh sửa lưới"); // Edit mesh
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("Số lượng lấp đầy"); // Fill-in Amount
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("Tự lấp đầy"); // Manual Fill-in
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("Lấp đầy thông minh"); // Smart Fill-in
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("Lưới lấp đầy"); // Fill-in Mesh
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("Bác bỏ tất cả"); // Invalidate All
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Bác bỏ gần nhất"); // Invalidate Closest
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("Chỉnh chính xác tất cả"); // Fine Tune ALl
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Chỉnh chính xác gần nhất"); // Fine Tune Closest
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("Lưu trữ lưới"); // Mesh Storage
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("Khe nhớ"); // Memory Slot
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("Tải lưới bàn"); // Load Bed Mesh
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("Lưu lưới bàn"); // Save Bed Mesh
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 %i lưới được nạp"); // Mesh %i loaded
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 %i lưới đã lưu");
+ PROGMEM Language_Str MSG_NO_STORAGE = _UxGT("Không lưu trữ"); // No Storage
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("Điều sai: Lưu UBL"); // Err: UBL Save
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("Điều Sai: Khôi Phục UBL"); // Err: UBL Restore
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Đầu Dò-Z Đã Ngừng"); // Z-Offset Stopped
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Bước-Từng-Bước UBL"); // Step-By-Step UBL
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Xây dựng lưới lạnh");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2.Lấp đầy thông minh");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Thẩm tra lưới");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Chỉnh chính xác tất cả");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Thẩm tra lưới");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Chỉnh chính xác tất cả");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7.Lưu lưới bàn");
-#define WELCOME_MSG MACHINE_NAME _UxGT(" Sẵn sàng.") // Ready
-#define MSG_BACK _UxGT("Trở lại") // Back
-#define MSG_SD_INSERTED _UxGT("Thẻ được cắm vào") // Card inserted
-#define MSG_SD_REMOVED _UxGT("Thẻ được rút ra")
-#define MSG_LCD_ENDSTOPS _UxGT("Công tắc") // Endstops - công tắc hành trình
-#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Công tắc mềm") // soft Endstops
-#define MSG_MAIN _UxGT("Chính") // Main
-#define MSG_ADVANCED_SETTINGS _UxGT("Thiết lập cấp cao") // Advanced Settings
-#define MSG_CONFIGURATION _UxGT("Cấu hình") // Configuration
-#define MSG_AUTOSTART _UxGT("Khởi chạy tự động") // Autostart
-#define MSG_DISABLE_STEPPERS _UxGT("Tắt động cơ bước") // Disable steppers
-#define MSG_DEBUG_MENU _UxGT("Menu gỡ lỗi") // Debug Menu
-#define MSG_PROGRESS_BAR_TEST _UxGT("Kiểm tra tiến độ") // Progress bar test
-#define MSG_AUTO_HOME _UxGT("Về nhà tự động") // Auto home
-#define MSG_AUTO_HOME_X _UxGT("Về nhà X") // home x
-#define MSG_AUTO_HOME_Y _UxGT("Về nhà Y") // home y
-#define MSG_AUTO_HOME_Z _UxGT("Về nhà Z")
-#define MSG_AUTO_Z_ALIGN _UxGT("Chỉnh canh Z tự động")
-#define MSG_LEVEL_BED_HOMING _UxGT("Đang về nhà XYZ") // Homing XYZ
-#define MSG_LEVEL_BED_WAITING _UxGT("Nhấn để bắt đầu") // Click to Begin
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Điểm tiếp theo") // Next Point
-#define MSG_LEVEL_BED_DONE _UxGT("San lấp được hoàn thành") // Leveling Done!
-#define MSG_Z_FADE_HEIGHT _UxGT("Chiều cao mờ dần") // Fade Height
-#define MSG_SET_HOME_OFFSETS _UxGT("Đặt bù đắp nhà") // Set home offsets
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("Bù đắp được áp dụng") // Offsets applied
-#define MSG_SET_ORIGIN _UxGT("Đặt nguồn gốc") // Set origin
-#define MSG_PREHEAT_1 _UxGT("Làm nóng " PREHEAT_1_LABEL " trước") // Preheat
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Tất cả") // all
-#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Đầu")
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Bàn") // bed -- using vietnamese term for 'table' instead
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" Cấu hình") // conf
-#define MSG_PREHEAT_2 _UxGT("Làm nóng " PREHEAT_2_LABEL " trước")
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Tất cả")
-#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Đầu")
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Bàn") // bed -- using vietnamese term for 'table' instead
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" Cấu hình")
-#define MSG_PREHEAT_CUSTOM _UxGT("Sự nóng trước tự chọn") // Preheat Custom
-#define MSG_COOLDOWN _UxGT("Nguội xuống") // Cooldown
-#define MSG_SWITCH_PS_ON _UxGT("Bật nguồn") // Switch power on
-#define MSG_SWITCH_PS_OFF _UxGT("Tắt nguồn") // Switch power off
-#define MSG_EXTRUDE _UxGT("Ép đùn") // Extrude
-#define MSG_RETRACT _UxGT("Rút lại") // Retract
-#define MSG_MOVE_AXIS _UxGT("Di chuyển trục") // Move axis
-#define MSG_BED_LEVELING _UxGT("San Lấp Bàn") // Bed Leveling
-#define MSG_LEVEL_BED _UxGT("Làm bằng mặt bàn") // Level bed
-#define MSG_LEVEL_CORNERS _UxGT("Làm bằng góc bàn") // Level corners
-#define MSG_NEXT_CORNER _UxGT("Góc tiếp theo") // Next corner
-#define MSG_EDITING_STOPPED _UxGT("Chỉnh lưới đã dừng") // Mesh Editing Stopped
-#define MSG_MESH_X _UxGT("Mục lục X") // Index X
-#define MSG_MESH_Y _UxGT("Mục lục Y")
-#define MSG_MESH_EDIT_Z _UxGT("Giá trị Z") // Z Value
-#define MSG_USER_MENU _UxGT("Các lệnh tự chọn") // Custom Commands
-#define MSG_UBL_DOING_G29 _UxGT("Đang chạy G29") // Doing G29
-#define MSG_UBL_TOOLS _UxGT("Công cụ UBL") // UBL tools
-#define MSG_UBL_LEVEL_BED _UxGT("San Lấp Bàn Thống Nhất (UBL)") // Unified Bed Leveling
-#define MSG_IDEX_MENU _UxGT("chế độ IDEX") // IDEX Mode
-#define MSG_IDEX_MODE_AUTOPARK _UxGT("Đậu tự động") // Auto-Park
-#define MSG_IDEX_MODE_DUPLICATE _UxGT("Sự gấp đôi") // Duplication
-#define MSG_IDEX_MODE_SCALED_COPY _UxGT("Bản sao thu nhỏ")
-#define MSG_IDEX_MODE_FULL_CTRL _UxGT("Toàn quyền điều khiển") // Full control
-#define MSG_IDEX_X_OFFSET _UxGT("Đầu phun X nhì") // 2nd nozzle X
-#define MSG_IDEX_Y_OFFSET _UxGT("Đầu phun Y nhì")
-#define MSG_IDEX_Z_OFFSET _UxGT("Đầu phun Z nhì")
-#define MSG_IDEX_SAVE_OFFSETS _UxGT("Lưu bù đắp") // Save offsets
-#define MSG_UBL_MANUAL_MESH _UxGT("Tự xây dựng lưới") // Manually Build Mesh
-#define MSG_UBL_BC_INSERT _UxGT("Đặt chêm và đo") // Place shim & measure
-#define MSG_UBL_BC_INSERT2 _UxGT("Đo") // Measure
-#define MSG_UBL_BC_REMOVE _UxGT("Tháo và đo bàn") // Remove & measure bed
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("Chuyển sang tiếp theo") // moving to next
-#define MSG_UBL_ACTIVATE_MESH _UxGT("Bật UBL")
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("Tắt UBL")
-#define MSG_UBL_SET_TEMP_BED _UxGT("Nhiệt độ bàn") // Bed Temp
-#define MSG_UBL_BED_TEMP_CUSTOM MSG_UBL_SET_TEMP_BED
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("Nhiệt độ đầu phun") // Hotend Temp
-#define MSG_UBL_HOTEND_TEMP_CUSTOM MSG_UBL_SET_TEMP_HOTEND
-#define MSG_UBL_MESH_EDIT _UxGT("Chỉnh sửa lưới") // Mesh Edit
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("Chỉnh sửa lưới tự chọn") // Edit Custom Mesh
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("Chỉnh lưới chính xác") // Fine tuning mesh
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("Chỉnh sửa xong lưới") // Done Editing Mesh
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("Xây dựng lưới tự chọn") // Build Custom Mesh
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("Xây dựng lưới") // Build Mesh
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("Xây dựng lưới (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("Xây dựng lưới (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("Xây dựng lưới lạnh") // Build cold mesh
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("Điều chỉnh chiều cao lưới") // Adjust Mesh Height
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("Số lượng chiều cao") // Height Amount
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("Thẩm tra lưới") // Validate Mesh
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("Thẩm tra lưới (" PREHEAT_1_LABEL ")")
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("Thẩm tra lưới (" PREHEAT_2_LABEL ")")
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("Thẩm tra lưới tự chọn") // validate custom mesh
-#define MSG_UBL_CONTINUE_MESH _UxGT("Tiếp tục xây lưới bàn") // Continue Bed Mesh
-#define MSG_UBL_MESH_LEVELING _UxGT("Đang san lấp lưới") // Mesh Leveling
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("Đang san lấp 3-điểm") // 3-Point Leveling
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("Đang san lấp lưới phẳng") // Grid (planar) Mesh Leveling
-#define MSG_UBL_MESH_LEVEL _UxGT("Làm bằng lưới") // Level Mesh
-#define MSG_UBL_SIDE_POINTS _UxGT("Điểm bên cạnh") // Side Points
-#define MSG_UBL_MAP_TYPE _UxGT("Loại bản đồ") // Map Type
-#define MSG_UBL_OUTPUT_MAP _UxGT("Đầu ra bản đồ lưới") // Output Mesh Map
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("Đầu ra cho máy chủ") // Output for Host
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("Đầu ra cho CSV") // Output for CSV
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("Hỗ trợ lưới") // Off Printer Backup | backup mesh
-#define MSG_UBL_INFO_UBL _UxGT("Đầu ra thông tin UBL") // Output UBL Info
-#define MSG_EDIT_MESH _UxGT("Chỉnh sửa lưới") // Edit mesh
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("Số lượng lấp đầy") // Fill-in Amount
-#define MSG_UBL_MANUAL_FILLIN _UxGT("Tự lấp đầy") // Manual Fill-in
-#define MSG_UBL_SMART_FILLIN _UxGT("Lấp đầy thông minh") // Smart Fill-in
-#define MSG_UBL_FILLIN_MESH _UxGT("Lưới lấp đầy") // Fill-in Mesh
-#define MSG_UBL_INVALIDATE_ALL _UxGT("Bác bỏ tất cả") // Invalidate All
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("Bác bỏ gần nhất") // Invalidate Closest
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("Chỉnh chính xác tất cả") // Fine Tune ALl
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("Chỉnh chính xác gần nhất") // Fine Tune Closest
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("Lưu trữ lưới") // Mesh Storage
-#define MSG_UBL_STORAGE_SLOT _UxGT("Khe nhớ") // Memory Slot
-#define MSG_UBL_LOAD_MESH _UxGT("Tải lưới bàn") // Load Bed Mesh
-#define MSG_UBL_SAVE_MESH _UxGT("Lưu lưới bàn") // Save Bed Mesh
-#define MSG_MESH_LOADED _UxGT("%i lưới được nạp") // Mesh %i loaded
-#define MSG_MESH_SAVED _UxGT("%i lưới đã lưu")
-#define MSG_NO_STORAGE _UxGT("Không lưu trữ") // No Storage
-#define MSG_UBL_SAVE_ERROR _UxGT("Điều sai: Lưu UBL") // Err: UBL Save
-#define MSG_UBL_RESTORE_ERROR _UxGT("Điều Sai: Khôi Phục UBL") // Err: UBL Restore
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Đầu Dò-Z Đã Ngừng") // Z-Offset Stopped
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Bước-Từng-Bước UBL") // Step-By-Step UBL
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("Điều khiển LED"); // LED Control
+ PROGMEM Language_Str MSG_LEDS = _UxGT("Đèn"); // Lights
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("Đèn định sẵn"); // Light Presets
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("Đỏ"); // Red
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("Cam"); // Orange
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("Vàng"); // Yellow
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("Xanh Lá"); // Green
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("Xanh"); // Blue
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("Xanh Đậm"); // Indigo
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("Tím"); // Violet
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("Trắng"); // White
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("Mặc định"); // Default
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("Đèn Tự Chọn"); // Custom Lights
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("Cường Độ Đỏ"); // Red Intensity
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("Cường Độ Xanh Lá"); // Green Intensity
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("Cường Độ Xanh"); // Blue Intensity
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("Cường Độ Trắng"); // White Intensity
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("độ sáng"); // Brightness
-#define MSG_LED_CONTROL _UxGT("Điều khiển LED") // LED Control
-#define MSG_LEDS _UxGT("Đèn") // Lights
-#define MSG_LED_PRESETS _UxGT("Đèn định sẵn") // Light Presets
-#define MSG_SET_LEDS_RED _UxGT("Đỏ") // Red
-#define MSG_SET_LEDS_ORANGE _UxGT("Cam") // Orange
-#define MSG_SET_LEDS_YELLOW _UxGT("Vàng") // Yellow
-#define MSG_SET_LEDS_GREEN _UxGT("Xanh Lá") // Green
-#define MSG_SET_LEDS_BLUE _UxGT("Xanh") // Blue
-#define MSG_SET_LEDS_INDIGO _UxGT("Xanh Đậm") // Indigo
-#define MSG_SET_LEDS_VIOLET _UxGT("Tím") // Violet
-#define MSG_SET_LEDS_WHITE _UxGT("Trắng") // White
-#define MSG_SET_LEDS_DEFAULT _UxGT("Mặc định") // Default
-#define MSG_CUSTOM_LEDS _UxGT("Đèn Tự Chọn") // Custom Lights
-#define MSG_INTENSITY_R _UxGT("Cường Độ Đỏ") // Red Intensity
-#define MSG_INTENSITY_G _UxGT("Cường Độ Xanh Lá") // Green Intensity
-#define MSG_INTENSITY_B _UxGT("Cường Độ Xanh") // Blue Intensity
-#define MSG_INTENSITY_W _UxGT("Cường Độ Trắng") // White Intensity
-#define MSG_LED_BRIGHTNESS _UxGT("độ sáng") // Brightness
+ PROGMEM Language_Str MSG_MOVING = _UxGT("Di chuyển..."); // Moving
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("Giải phóng XY"); // Free XY
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("Di chuyển X"); // Move X
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("Di chuyển Y");
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("Di chuyển Z");
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("Máy đùn"); // Extruder
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("Máy đùn ") LCD_STR_E0; // Extruder
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("Máy đùn ") LCD_STR_E1; // Extruder
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("Máy đùn ") LCD_STR_E2; // Extruder
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("Máy đùn ") LCD_STR_E3; // Extruder
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("Máy đùn ") LCD_STR_E4; // Extruder
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("Máy đùn ") LCD_STR_E5; // Extruder
+ PROGMEM Language_Str MSG_HOTEND_TOO_COLD = _UxGT("Đầu nóng quá lạnh"); // Hotend too cold
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("Di chuyển 0.1mm"); // Move 0.1mm
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("Di chuyển 1mm"); // Move 1mm
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("Di chuyển 10mm"); // Move 10mm
+ PROGMEM Language_Str MSG_SPEED = _UxGT("Tốc độ"); // Speed
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("Z Bàn");
+ PROGMEM Language_Str MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_0 = _UxGT("Đầu phun ") LCD_STR_N0; // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_1 = _UxGT("Đầu phun ") LCD_STR_N1; // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_2 = _UxGT("Đầu phun ") LCD_STR_N2; // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_3 = _UxGT("Đầu phun ") LCD_STR_N3; // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_4 = _UxGT("Đầu phun ") LCD_STR_N4; // Nozzle
+ PROGMEM Language_Str MSG_NOZZLE_5 = _UxGT("Đầu phun ") LCD_STR_N5; // Nozzle
+ PROGMEM Language_Str MSG_BED = _UxGT("Bàn"); // bed
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // fan speed
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("Tốc độ quạt 1"); // fan speed
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("Tốc độ quạt 2"); // fan speed
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("Tốc độ quạt 3"); // fan speed
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("Tốc độ quạt phụ"); // Extra fan speed
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("Tốc độ quạt phụ 1"); // Extra fan speed
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("Tốc độ quạt phụ 2"); // Extra fan speed
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("Tốc độ quạt phụ 3"); // Extra fan speed
+ PROGMEM Language_Str MSG_FLOW = _UxGT("Lưu Lượng");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("Lưu Lượng ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("Lưu Lượng ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("Lưu Lượng ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("Lưu Lượng ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("Lưu Lượng ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("Lưu Lượng ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("Điều khiển"); // Control
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Đa"); // min
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Thiểu");
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số"); // factor
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("Nhiệt độ tự động"); // Autotemp
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("Bật"); // on
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("Tắt"); // off
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P");
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I");
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D");
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C");
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("Lựa"); // Select
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("Lựa ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("Lựa ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("Lựa ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("Lựa ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("Lựa ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("Lựa ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("Tăng Tốc");
+ PROGMEM Language_Str MSG_JERK = _UxGT("Giật");
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("Giật-V") LCD_STR_A;
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("Giật-V") LCD_STR_B;
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("Giật-V") LCD_STR_C;
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("Giật-Ve");
+ PROGMEM Language_Str MSG_JUNCTION_DEVIATION = _UxGT("Độ Lệch Chỗ Giao"); // Junction Dev
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("Vận tốc"); // velocity
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("Vđa") LCD_STR_A; // Vmax
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("Vđa") LCD_STR_B; // Vmax
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("Vđa") LCD_STR_C; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("Vđa") LCD_STR_E; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("Vđa ") LCD_STR_E0; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("Vđa ") LCD_STR_E1; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("Vđa ") LCD_STR_E2; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("Vđa ") LCD_STR_E3; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("Vđa ") LCD_STR_E4; // Vmax
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("Vđa ") LCD_STR_E5; // Vmax
+ PROGMEM Language_Str MSG_VMIN = _UxGT("Vthiểu"); // Vmin
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vchuyển thiểu"); // VTrav min
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Sự tăng tốc"); // Acceleration
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("Tăng tốc ca") LCD_STR_A; // Amax
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("Tăng tốc ca") LCD_STR_B; // Amax
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("Tăng tốc ca") LCD_STR_C; // Amax
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("Tăng tốc ca") LCD_STR_E; // Amax
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("Tăng tốc ca ") LCD_STR_E0; // Amax
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("Tăng tốc ca ") LCD_STR_E1; // Amax
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("Tăng tốc ca ") LCD_STR_E2; // Amax
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("Tăng tốc ca ") LCD_STR_E3; // Amax
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("Tăng tốc ca ") LCD_STR_E4; // Amax
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("Tăng tốc ca ") LCD_STR_E5; // Amax
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("TT-Rút"); // A-retract
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("TT-Chuyển"); // A-travel
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("Bước/mm"); // Steps
+ PROGMEM Language_Str MSG_A_STEPS = _UxGT("Bước") LCD_STR_A _UxGT("/mm"); // Asteps/mm
+ PROGMEM Language_Str MSG_B_STEPS = _UxGT("Bước") LCD_STR_B _UxGT("/mm");
+ PROGMEM Language_Str MSG_C_STEPS = _UxGT("Bước") LCD_STR_C _UxGT("/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("BướcE/mm");
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("Bước ") LCD_STR_E0 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("Bước ") LCD_STR_E1 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("Bước ") LCD_STR_E2 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("Bước ") LCD_STR_E3 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("Bước ") LCD_STR_E4 _UxGT("/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("Bước ") LCD_STR_E5 _UxGT("/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("Nhiệt độ"); // Temperature
+ PROGMEM Language_Str MSG_MOTION = _UxGT("Chuyển động"); // Motion
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("Vật liệu in"); // dây nhựa
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("E bằng mm³"); // E in mm
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("Đường kính nhựa"); // Fil. Dai.
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("Đường kính nhựa ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("Đường kính nhựa ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("Đường kính nhựa ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("Đường kính nhựa ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("Đường kính nhựa ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("Đường kính nhựa ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("Dỡ mm"); // unload mm
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("Nạp mm");
+ PROGMEM Language_Str MSG_ADVANCE_K = _UxGT("K Cấp Cao"); // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E0 = _UxGT("K Cấp Cao ") LCD_STR_E0; // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E1 = _UxGT("K Cấp Cao ") LCD_STR_E1; // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E2 = _UxGT("K Cấp Cao ") LCD_STR_E2; // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E3 = _UxGT("K Cấp Cao ") LCD_STR_E3; // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E4 = _UxGT("K Cấp Cao ") LCD_STR_E4; // Advance K
+ PROGMEM Language_Str MSG_ADVANCE_K_E5 = _UxGT("K Cấp Cao ") LCD_STR_E5; // Advance K
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD contrast
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store settings
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load settings
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("Khôi phục phòng hư"); // Restore failsafe
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM
+ PROGMEM Language_Str MSG_SD_UPDATE = _UxGT("Cập Nhật SD"); // SD Update
+ PROGMEM Language_Str MSG_RESET_PRINTER = _UxGT("Bặt Lại Máy In");
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("Cập Nhật"); // Refresh
+ PROGMEM Language_Str MSG_WATCH = _UxGT("Màn Hình Thông Tin"); // Info screen
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("Chuẩn bị"); // Prepare
+ PROGMEM Language_Str MSG_TUNE = _UxGT("Điều Chỉnh"); // Tune
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("Tạm dừng in"); // Pause print
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("Tiếp tục in"); // Resume print
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("Ngừng in"); // Stop print
+ PROGMEM Language_Str MSG_OUTAGE_RECOVERY = _UxGT("Phục Hồi Mất Điện"); // Outage Recovery
+ PROGMEM Language_Str MSG_CARD_MENU = _UxGT("In từ SD"); // Print from SD
+ PROGMEM Language_Str MSG_NO_CARD = _UxGT("Không có thẻ SD"); // No SD card
+ PROGMEM Language_Str MSG_DWELL = _UxGT("Ngủ..."); // Sleep
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("Nhấn để tiếp tục..."); // Click to resume (same as 'continue')
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("In tạm dừng"); // print paused
+ PROGMEM Language_Str MSG_PRINTING = _UxGT("Đang in..."); // printing
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("In đã hủy bỏ"); // Print aborted
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Không di chuyển."); // No move.
+ PROGMEM Language_Str MSG_KILLED = _UxGT("ĐÃ CHẾT. ");
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("ĐÃ NGỪNG. ");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Rút mm"); // Retract mm
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Rút Trao.mm"); // Swap Re.mm
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Rút V");
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Nhảy mm"); // hop
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("BỏRút mm"); // UnRet mm
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("BỏRút T mm"); // S UnRet mm
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("BỏRút V"); // UnRet V
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("BỏRút T V"); // S UnRet V
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("RútTựĐộng"); // AutoRetr.
+ PROGMEM Language_Str MSG_FILAMENT_SWAP_LENGTH = _UxGT("Khoảng Cách Rút"); // Retract Distance
+ PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Thay Đổi Công Cụ"); // Tool Change
+ PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Đưa Lên Z"); // Z Raise
+ PROGMEM Language_Str MSG_SINGLENOZZLE_PRIME_SPD = _UxGT("Tốc Độ Tuôn Ra"); // Prime Speed
+ PROGMEM Language_Str MSG_SINGLENOZZLE_RETRACT_SPD = _UxGT("Tốc Độ Rút Lại"); // Retract Speed
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("Thay dây nhựa"); // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("Thay dây nhựa ") LCD_STR_E0; // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("Thay dây nhựa ") LCD_STR_E1; // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("Thay dây nhựa ") LCD_STR_E2; // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("Thay dây nhựa ") LCD_STR_E3; // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("Thay dây nhựa ") LCD_STR_E4; // change filament
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("Thay dây nhựa ") LCD_STR_E5; // change filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("Nạp dây nhựa"); // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("Nạp dây nhựa ") LCD_STR_E0; // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("Nạp dây nhựa ") LCD_STR_E1; // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("Nạp dây nhựa ") LCD_STR_E2; // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("Nạp dây nhựa ") LCD_STR_E3; // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("Nạp dây nhựa ") LCD_STR_E4; // load filament
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("Nạp dây nhựa ") LCD_STR_E5; // load filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("Dỡ dây nhựa ") LCD_STR_E0; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("Dỡ dây nhựa ") LCD_STR_E1; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("Dỡ dây nhựa ") LCD_STR_E2; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("Dỡ dây nhựa ") LCD_STR_E3; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("Dỡ dây nhựa ") LCD_STR_E4; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("Dỡ dây nhựa ") LCD_STR_E5; // unload filament
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All
+ PROGMEM Language_Str MSG_INIT_SDCARD = _UxGT("Khởi tạo thẻ SD "); // Init. SD card
+ PROGMEM Language_Str MSG_CHANGE_SDCARD = _UxGT("Thay thẻ SD"); // Change SD card
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe past bed
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("Hệ số nghiêng"); // Skew Factor
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTOUCH"); // BLTouch
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("Tự kiểm tra BLTOUCH "); // BLTouch Self-Test
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("Bặt lại BLTouch"); // Reset BLTouch
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("Đem BLTouch"); // Deploy BLTouch
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("Cất BLTouch"); // Stow BLTouch
+ PROGMEM Language_Str MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe
+ PROGMEM Language_Str MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("Về nhà %s%s%s Trước");
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("Nhít Y");
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("Nhít Z");
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("Hủy bỏ công tắc"); // Endstop abort
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("Sưởi đầu phun không thành công"); // Heating failed
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD_BED = _UxGT("Sưởi bàn không thành công"); // Bed heating failed
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("Điều sai: nhiệt độ dư"); // Err: REDUNDANT TEMP
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("Vấn đề nhiệt"); // THERMAL RUNAWAY | problem
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY_BED = _UxGT("Vấn đề nhiệt bàn"); // BED THERMAL RUNAWAY
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("Điều sai: nhiệt độ tối đa"); // Err: MAXTEMP
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("Điều sai: nhiệt độ bàn tối đa"); // Err: MAXTEMP BED
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("Điều sai: nhiệt độ bàn tối thiểu"); // Err: MINTEMP BED
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("Về nhà XY Trước"); // Home XY First
+ PROGMEM Language_Str MSG_HALTED = _UxGT("MÁY IN ĐÃ DỪNG LẠI"); // PRINTER HALTED
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please reset
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("Đang sưởi nóng..."); // heating
+ PROGMEM Language_Str MSG_COOLING = _UxGT("Đang làm nguội..."); // cooling
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // bed heating
+ PROGMEM Language_Str MSG_BED_COOLING = _UxGT("Đang làm nguội bàn..."); // bed cooling
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("Cân Chỉnh Delta"); // Delta calibration
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("Chỉnh X lại");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("Chỉnh Y lại");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("Chỉnh Z lại");
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("Chỉnh Z Center"); // Calibrate Center
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("Cài Đặt Delta"); // Delta Settings
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("Cân Chỉnh Tự Động"); // Auto Calibration
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("Đặt Chiều Cao Delta"); // Set Delta Height
+ PROGMEM Language_Str MSG_DELTA_Z_OFFSET_CALIBRATE = _UxGT("Đầu Dò Z-Bù Đắp"); // Probe Z-offset
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("Gậy Chéo"); // Diag Rod
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("Chiều Cao"); // Height
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("Bán Kính"); // Radius
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("Về Máy In");
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("Thông Tin Máy In"); // Printer Info
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("San lấp 3-Điểm"); // 3-Point Leveling
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("San Lấp Tuyến Tính"); // Linear Leveling
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("San Lấp Song Tuyến"); // Bilinear Leveling
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("San Lấp Bàn Thống Nhất"); // Unified Bed Leveling
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("Lưới San Lấp"); // Mesh Leveling
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("Thống Kê Máy In"); // Printer Stats
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("Thông Tin Bo Mạch"); // Board Info
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("Điện Trở Nhiệt"); // Thermistors
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("Máy đùn"); // Extruders
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("Giao Thức"); // Protocol
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("Đèn Khuông"); // Case light
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Độ Sáng"); // Light Brightness
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("Số In"); // Print Count
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành");
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tổng số thời gian in"); // Total print time
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Thời gian việc lâu nhất"); // Longest job time
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Tổng số đùn"); // Extruded total
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("In"); // prints
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("Tổng số"); // total
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("Dài nhất"); // Longest
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("Đã ép đùn");
+ #endif
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Nhiệt độ tối thiểu"); // Min Temp
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Nhiệt độ tối đa"); // Max temp
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Bộ nguồn"); // PSU
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Sức mạnh ổ đĩa"); // Drive Strength
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("% trình điều khiển"); // Driver %
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Ghi DAC EEPROM"); // DAC EEPROM Write
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("In tạm dừng"); // PRINT PAUSED
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("Nạp dây nhựa");
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("Dỡ dây nhựa"); // unload filament
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Tùy chọn hồi phục:"); // RESUME OPTIONS
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // continue
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle
+ PROGMEM Language_Str MSG_RUNOUT_SENSOR_ENABLE = _UxGT("Cảm Biến Hết"); // Runout Sensor
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing failed
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing failed
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: Quá lạnh");
-#define MSG_MOVING _UxGT("Di chuyển...") // Moving
-#define MSG_FREE_XY _UxGT("Giải phóng XY") // Free XY
-#define MSG_MOVE_X _UxGT("Di chuyển X") // Move X
-#define MSG_MOVE_Y _UxGT("Di chuyển Y")
-#define MSG_MOVE_Z _UxGT("Di chuyển Z")
-#define MSG_MOVE_E _UxGT("Máy đùn") // Extruder
-#define MSG_HOTEND_TOO_COLD _UxGT("Đầu nóng quá lạnh") // Hotend too cold
-#define MSG_MOVE_01MM _UxGT("Di chuyển 0.1mm") // Move 0.1mm
-#define MSG_MOVE_1MM _UxGT("Di chuyển 1mm") // Move 1mm
-#define MSG_MOVE_10MM _UxGT("Di chuyển 10mm") // Move 10mm
-#define MSG_SPEED _UxGT("Tốc độ") // Speed
-#define MSG_BED_Z _UxGT("Z Bàn")
-#define MSG_NOZZLE _UxGT("Đầu phun") // Nozzle
-#define MSG_BED _UxGT("Bàn") // bed
-#define MSG_FAN_SPEED _UxGT("Tốc độ quạt") // fan speed
-#define MSG_EXTRA_FAN_SPEED _UxGT("Tốc độ quạt phụ") // Extra fan speed
-#define MSG_FLOW _UxGT("Lưu Lượng")
-#define MSG_CONTROL _UxGT("Điều khiển") // Control
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Đa") // min
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Thiểu")
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Hệ Số") // factor
-#define MSG_AUTOTEMP _UxGT("Nhiệt độ tự động") // Autotemp
-#define MSG_LCD_ON _UxGT("Bật") // on
-#define MSG_LCD_OFF _UxGT("Tắt") // off
-#define MSG_PID_P _UxGT("PID-P")
-#define MSG_PID_I _UxGT("PID-I")
-#define MSG_PID_D _UxGT("PID-D")
-#define MSG_PID_C _UxGT("PID-C")
-#define MSG_SELECT _UxGT("Lựa") // Select
-#define MSG_ACC _UxGT("Tăng Tốc")
-#define MSG_JERK _UxGT("Giật")
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("Giật-Va")
- #define MSG_VB_JERK _UxGT("Giật-Vb")
- #define MSG_VC_JERK _UxGT("Giật-Vc")
-#else
- #define MSG_VA_JERK _UxGT("Giật-Vx")
- #define MSG_VB_JERK _UxGT("Giật-Vy")
- #define MSG_VC_JERK _UxGT("Giật-Vz")
-#endif
-#define MSG_VE_JERK _UxGT("Giật-Ve")
-#define MSG_JUNCTION_DEVIATION _UxGT("Độ Lệch Chỗ Giao") // Junction Dev
-#define MSG_VELOCITY _UxGT("Vận tốc") // velocity
-#define MSG_VMAX _UxGT("Vđa") // Vmax
-#define MSG_VMIN _UxGT("Vthiểu") // Vmin
-#define MSG_VTRAV_MIN _UxGT("Vchuyển thiểu") // VTrav min
-#define MSG_ACCELERATION _UxGT("Sự tăng tốc") // Acceleration
-#define MSG_AMAX _UxGT("Tăng tốc ca") // Amax
-#define MSG_A_RETRACT _UxGT("TT-Rút") // A-retract
-#define MSG_A_TRAVEL _UxGT("TT-Chuyển") // A-travel
-#define MSG_STEPS_PER_MM _UxGT("Bước/mm") // Steps
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("BướcA/mm") // Asteps/mm
- #define MSG_BSTEPS _UxGT("BướcB/mm")
- #define MSG_CSTEPS _UxGT("BướcC/mm")
-#else
- #define MSG_ASTEPS _UxGT("BướcX/mm") // Xsteps/mm
- #define MSG_BSTEPS _UxGT("BướcY/mm")
- #define MSG_CSTEPS _UxGT("BướcZ/mm")
-#endif
-#define MSG_ESTEPS _UxGT("BướcE/mm")
-#define MSG_E0_STEPS _UxGT("BướcE1/mm")
-#define MSG_E1_STEPS _UxGT("BướcE2/mm")
-#define MSG_E2_STEPS _UxGT("BướcE3/mm")
-#define MSG_E3_STEPS _UxGT("BướcE4/mm")
-#define MSG_E4_STEPS _UxGT("BướcE5/mm")
-#define MSG_E5_STEPS _UxGT("BướcE6/mm")
-#define MSG_TEMPERATURE _UxGT("Nhiệt độ") // Temperature
-#define MSG_MOTION _UxGT("Chuyển động") // Motion
-#define MSG_FILAMENT _UxGT("Vật liệu in") // dây nhựa
-#define MSG_VOLUMETRIC_ENABLED _UxGT("E bằng mm") MSG_CUBED // E in mm
-#define MSG_FILAMENT_DIAM _UxGT("Đường kính nhựa") // Fil. Dai.
-#define MSG_FILAMENT_UNLOAD _UxGT("Dỡ mm") // unload mm
-#define MSG_FILAMENT_LOAD _UxGT("Nạp mm")
-#define MSG_ADVANCE_K _UxGT("K Cấp Cao") // Advance K
-#define MSG_CONTRAST _UxGT("Độ tương phản LCD") // LCD contrast
-#define MSG_STORE_EEPROM _UxGT("Lưu các thiết lập") // Store settings
-#define MSG_LOAD_EEPROM _UxGT("Tải các cài đặt") // Load settings
-#define MSG_RESTORE_FAILSAFE _UxGT("Khôi phục phòng hư") // Restore failsafe
-#define MSG_INIT_EEPROM _UxGT("Khởi Tạo EEPROM") // Initialize EEPROM
-#define MSG_SD_UPDATE _UxGT("Cập Nhật SD") // SD Update
-#define MSG_RESET_PRINTER _UxGT("Bặt Lại Máy In")
-#define MSG_REFRESH _UxGT("Cập Nhật") // Refresh
-#define MSG_WATCH _UxGT("Màn Hình Thông Tin") // Info screen
-#define MSG_PREPARE _UxGT("Chuẩn bị") // Prepare
-#define MSG_TUNE _UxGT("Điều Chỉnh") // Tune
-#define MSG_PAUSE_PRINT _UxGT("Tạm dừng in") // Pause print
-#define MSG_RESUME_PRINT _UxGT("Tiếp tục in") // Resume print
-#define MSG_STOP_PRINT _UxGT("Ngừng in") // Stop print
-#define MSG_OUTAGE_RECOVERY _UxGT("Phục Hồi Mất Điện") // Outage Recovery
-#define MSG_CARD_MENU _UxGT("In từ SD") // Print from SD
-#define MSG_NO_CARD _UxGT("Không có thẻ SD") // No SD card
-#define MSG_DWELL _UxGT("Ngủ...") // Sleep
-#define MSG_USERWAIT _UxGT("Nhấn để tiếp tục...") // Click to resume (same as 'continue')
-#define MSG_PRINT_PAUSED _UxGT("In tạm dừng") // print paused
-#define MSG_PRINTING _UxGT("Đang in...") // printing
-#define MSG_PRINT_ABORTED _UxGT("In đã hủy bỏ") // Print aborted
-#define MSG_NO_MOVE _UxGT("Không di chuyển.") // No move.
-#define MSG_KILLED _UxGT("ĐÃ CHẾT. ")
-#define MSG_STOPPED _UxGT("ĐÃ NGỪNG. ")
-#define MSG_CONTROL_RETRACT _UxGT("Rút mm") // Retract mm
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Rút Trao.mm") // Swap Re.mm
-#define MSG_CONTROL_RETRACTF _UxGT("Rút V")
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Nhảy mm") // hop
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("BỏRút mm") // UnRet mm
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("BỏRút T mm") // S UnRet mm
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("BỏRút V") // UnRet V
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("BỏRút T V") // S UnRet V
-#define MSG_AUTORETRACT _UxGT("RútTựĐộng") // AutoRetr.
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Khoảng Cách Rút") // Retract Distance
-#define MSG_TOOL_CHANGE _UxGT("Thay Đổi Công Cụ") // Tool Change
-#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Đưa Lên Z") // Z Raise
-#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Tốc Độ Tuôn Ra") // Prime Speed
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Tốc Độ Rút Lại") // Retract Speed
-#define MSG_FILAMENTCHANGE _UxGT("Thay dây nhựa") // change filament
-#define MSG_FILAMENTLOAD _UxGT("Nạp dây nhựa") // load filament
-#define MSG_FILAMENTUNLOAD _UxGT("Dỡ dây nhựa") // unload filament
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("Dỡ tất cả") // Unload All
-#define MSG_INIT_SDCARD _UxGT("Khởi tạo thẻ SD ") // Init. SD card
-#define MSG_CHANGE_SDCARD _UxGT("Thay thẻ SD") // Change SD card
-#define MSG_ZPROBE_OUT _UxGT("Đầu Dò Z qua bàn") // Z Probe past bed
-#define MSG_SKEW_FACTOR _UxGT("Hệ số nghiêng") // Skew Factor
-#define MSG_BLTOUCH _UxGT("BLTOUCH") // BLTouch
-#define MSG_BLTOUCH_SELFTEST _UxGT("Tự kiểm tra BLTOUCH ") // BLTouch Self-Test
-#define MSG_BLTOUCH_RESET _UxGT("Bặt lại BLTouch") // Reset BLTouch
-#define MSG_BLTOUCH_DEPLOY _UxGT("Đem BLTouch") // Deploy BLTouch
-#define MSG_BLTOUCH_STOW _UxGT("Cất BLTouch") // Stow BLTouch
-#define MSG_MANUAL_DEPLOY _UxGT("Đem Đầu Dò-Z") // Deploy Z-Probe
-#define MSG_MANUAL_STOW _UxGT("Cất Đầu Dò-Z") // Stow Z-Probe
-#define MSG_HOME_FIRST _UxGT("Về nhà %s%s%s Trước")
-#define MSG_ZPROBE_ZOFFSET _UxGT("Đầu Dò Bù Đắp Z") // Probe Z Offset
-#define MSG_BABYSTEP_X _UxGT("Nhít X") // Babystep X
-#define MSG_BABYSTEP_Y _UxGT("Nhít Y")
-#define MSG_BABYSTEP_Z _UxGT("Nhít Z")
-#define MSG_ENDSTOP_ABORT _UxGT("Hủy bỏ công tắc") // Endstop abort
-#define MSG_HEATING_FAILED_LCD _UxGT("Sưởi đầu phun không thành công") // Heating failed
-#define MSG_HEATING_FAILED_LCD_BED _UxGT("Sưởi bàn không thành công") // Bed heating failed
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("Điều sai: nhiệt độ dư") // Err: REDUNDANT TEMP
-#define MSG_THERMAL_RUNAWAY _UxGT("Vấn đề nhiệt") // THERMAL RUNAWAY | problem
-#define MSG_THERMAL_RUNAWAY_BED _UxGT("Vấn đề nhiệt bàn") // BED THERMAL RUNAWAY
-#define MSG_ERR_MAXTEMP _UxGT("Điều sai: nhiệt độ tối đa") // Err: MAXTEMP
-#define MSG_ERR_MINTEMP _UxGT("Điều sai: nhiệt độ tối thiểu") // Err: MINTEMP
-#define MSG_ERR_MAXTEMP_BED _UxGT("Điều sai: nhiệt độ bàn tối đa") // Err: MAXTEMP BED
-#define MSG_ERR_MINTEMP_BED _UxGT("Điều sai: nhiệt độ bàn tối thiểu") // Err: MINTEMP BED
-#define MSG_ERR_Z_HOMING _UxGT("Về nhà XY Trước") // Home XY First
-#define MSG_HALTED _UxGT("MÁY IN ĐÃ DỪNG LẠI") // PRINTER HALTED
-#define MSG_PLEASE_RESET _UxGT("Xin bặt lại") // Please reset
-#define MSG_SHORT_DAY _UxGT("n") // d - ngày - One character only
-#define MSG_SHORT_HOUR _UxGT("g") // h - giờ - One character only
-#define MSG_SHORT_MINUTE _UxGT("p") // m - phút - One character only
-#define MSG_HEATING _UxGT("Đang sưởi nóng...") // heating
-#define MSG_COOLING _UxGT("Đang làm nguội...") // cooling
-#define MSG_BED_HEATING _UxGT("Đang sưởi nong bàn...") // bed heating
-#define MSG_BED_COOLING _UxGT("Đang làm nguội bàn...") // bed cooling
-#define MSG_DELTA_CALIBRATE _UxGT("Cân Chỉnh Delta") // Delta calibration
-#define MSG_DELTA_CALIBRATE_X _UxGT("Chỉnh X lại")
-#define MSG_DELTA_CALIBRATE_Y _UxGT("Chỉnh Y lại")
-#define MSG_DELTA_CALIBRATE_Z _UxGT("Chỉnh Z lại")
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Chỉnh Z Center") // Calibrate Center
-#define MSG_DELTA_SETTINGS _UxGT("Cài Đặt Delta") // Delta Settings
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Cân Chỉnh Tự Động") // Auto Calibration
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Đặt Chiều Cao Delta") // Set Delta Height
-#define MSG_DELTA_Z_OFFSET_CALIBRATE _UxGT("Đầu Dò Z-Bù Đắp") // Probe Z-offset
-#define MSG_DELTA_DIAG_ROD _UxGT("Gậy Chéo") // Diag Rod
-#define MSG_DELTA_HEIGHT _UxGT("Chiều Cao") // Height
-#define MSG_DELTA_RADIUS _UxGT("Bán Kính") // Radius
-#define MSG_INFO_MENU _UxGT("Về Máy In")
-#define MSG_INFO_PRINTER_MENU _UxGT("Thông Tin Máy In") // Printer Info
-#define MSG_3POINT_LEVELING _UxGT("San lấp 3-Điểm") // 3-Point Leveling
-#define MSG_LINEAR_LEVELING _UxGT("San Lấp Tuyến Tính") // Linear Leveling
-#define MSG_BILINEAR_LEVELING _UxGT("San Lấp Song Tuyến") // Bilinear Leveling
-#define MSG_UBL_LEVELING _UxGT("San Lấp Bàn Thống Nhất") // Unified Bed Leveling
-#define MSG_MESH_LEVELING _UxGT("Lưới San Lấp") // Mesh Leveling
-#define MSG_INFO_STATS_MENU _UxGT("Thống Kê Máy In") // Printer Stats
-#define MSG_INFO_BOARD_MENU _UxGT("Thông Tin Bo Mạch") // Board Info
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Điện Trở Nhiệt") // Thermistors
-#define MSG_INFO_EXTRUDERS _UxGT("Máy đùn") // Extruders
-#define MSG_INFO_BAUDRATE _UxGT("Baud") // Baud
-#define MSG_INFO_PROTOCOL _UxGT("Giao Thức") // Protocol
-#define MSG_CASE_LIGHT _UxGT("Đèn Khuông") // Case light
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("Độ Sáng") // Light Brightness
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Số In") // Print Count
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Đã hoàn thành")
- #define MSG_INFO_PRINT_TIME _UxGT("Tổng số thời gian in") // Total print time
- #define MSG_INFO_PRINT_LONGEST _UxGT("Thời gian việc lâu nhất") // Longest job time
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Tổng số đùn") // Extruded total
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("In") // prints
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Đã hoàn thành") // Completed
- #define MSG_INFO_PRINT_TIME _UxGT("Tổng số") // total
- #define MSG_INFO_PRINT_LONGEST _UxGT("Dài nhất") // Longest
- #define MSG_INFO_PRINT_FILAMENT _UxGT("Đã ép đùn")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Nhiệt độ tối thiểu") // Min Temp
-#define MSG_INFO_MAX_TEMP _UxGT("Nhiệt độ tối đa") // Max temp
-#define MSG_INFO_PSU _UxGT("Bộ nguồn") // PSU
-#define MSG_DRIVE_STRENGTH _UxGT("Sức mạnh ổ đĩa") // Drive Strength
-#define MSG_DAC_PERCENT _UxGT("% trình điều khiển") // Driver %
-#define MSG_DAC_EEPROM_WRITE _UxGT("Ghi DAC EEPROM") // DAC EEPROM Write
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("In tạm dừng") // PRINT PAUSED
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("Nạp dây nhựa")
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("Dỡ dây nhựa") // unload filament
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Tùy chọn hồi phục:") // RESUME OPTIONS
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Xả thêm") // Purge more
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Tiếp tục") // continue
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Đầu Phun: ") // Nozzle
-#define MSG_RUNOUT_SENSOR_ENABLE _UxGT("Cảm Biến Hết") // Runout Sensor
-#define MSG_ERR_HOMING_FAILED _UxGT("Sự nhà không thành công") // Homing failed
-#define MSG_ERR_PROBING_FAILED _UxGT(" không thành công") // Probing failed
-#define MSG_M600_TOO_COLD _UxGT("M600: Quá lạnh")
+ //
+ // Filament Change screens show up to 3 lines on a 4-line display
+ // ...or up to 2 lines on a 3-line display
+ //
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nhấn nút", "để tiếp tục in")); // Press button to resume print
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Chờ cho sự", "thay đổi dây nhựa", "bắt đầu")); // wait for filament change to start
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Đút dây nhựa vào", "và nhấn nút", "để tiếp tục")); // insert filament and press button to continue //
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nhấn nút", "để làm nóng đầu phun")); // Press button to heat nozzle
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Đầu phun đang nóng lên", "Xin chờ...")); // Nozzle heating Please wait
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra")); // Wait for filament unload
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào")); // Wait for filament load
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa")); // wait for filament purge
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Nhấn nút để kết thúc", "xả dây nhựa")); // Click to finish dây nhựa purge
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Chờ tro in", "tiếp tục...")); // Wait for print to resume
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục")); // Click to continue
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Xin chờ..."));
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Chèn và nhấn")); // Insert and Click
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Nhấn để sưởi")); // Click to heat
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Đang sưởi nóng")); // Heating
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Đang dỡ ra...")); // Ejecting
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Đang nạp...")); // Loading
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Đang xả...")); // Purging
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc")); // Click to finish
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Đang tiếp tục...")); // Resuming
+ #endif // LCD_HEIGHT < 4
-//
-// Filament Change screens show up to 3 lines on a 4-line display
-// ...or up to 2 lines on a 3-line display
-//
-#if LCD_HEIGHT >= 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Nhấn nút") // Press button
- #define MSG_ADVANCED_PAUSE_WAITING_2 _UxGT("để tiếp tục in") // to resume print
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Chờ cho sự") // wait for
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("thay đổi dây nhựa") // filament change
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("bắt đầu") // to start
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Đút dây nhựa vào") // insert filament
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("và nhấn nút") // and press button
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("để tiếp tục") // to continue
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Nhấn nút") // Press button
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("để làm nóng đầu phun") // to heat nozzle
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Đầu phun đang nóng lên") // Nozzle heating
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Xin chờ...") // Please wait
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Chờ tro") // Wait for
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("dây nhựa ra") // filament unload
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Chờ tro")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("dây nhựa vào")
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Chờ tro") // wait for filament purge
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("xả dây nhựa")
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Nhấn nút để kết thúc") // Click to finish
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_2 _UxGT("xả dây nhựa") // dây nhựa purge
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Chờ tro in") // Wait for print to resume
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("tiếp tục...")
-#else // LCD_HEIGHT < 4
- #define MSG_ADVANCED_PAUSE_WAITING_1 _UxGT("Nhấn nút để tiếp tục") // Click to continue
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Xin chờ...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Chèn và nhấn") // Insert and Click
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Nhấn để sưởi") // Click to heat
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Đang sưởi nóng") // Heating
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Đang dỡ ra...") // Ejecting
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Đang nạp...") // Loading
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Đang xả...") // Purging
- #define MSG_FILAMENT_CHANGE_CONT_PURGE_1 _UxGT("Nhấn nút để kết thúc") // Click to finish
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Đang tiếp tục...") // Resuming
-#endif // LCD_HEIGHT < 4
-
-#define MSG_TMC_DRIVERS _UxGT("Trình điều khiển TMC") // TMC drivers
-#define MSG_TMC_CURRENT _UxGT("Dòng điện trình điều khiển") // Driver current
-#define MSG_TMC_HYBRID_THRS _UxGT("Ngưỡng Hỗn Hợp") // Hybrid threshold
-#define MSG_TMC_HOMING_THRS _UxGT("Vô cảm biến") // Sensorless homing
-#define MSG_TMC_STEPPING_MODE _UxGT("Chế độ từng bước") // Stepping mode
-#define MSG_TMC_STEALTH_ENABLED _UxGT("CắtTàngHình được kích hoạt") // StealthChop enabled
+ PROGMEM Language_Str MSG_TMC_DRIVERS = _UxGT("Trình điều khiển TMC"); // TMC drivers
+ PROGMEM Language_Str MSG_TMC_CURRENT = _UxGT("Dòng điện trình điều khiển"); // Driver current
+ PROGMEM Language_Str MSG_TMC_HYBRID_THRS = _UxGT("Ngưỡng Hỗn Hợp"); // Hybrid threshold
+ PROGMEM Language_Str MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless homing
+ PROGMEM Language_Str MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping mode
+ PROGMEM Language_Str MSG_TMC_STEALTH_ENABLED = _UxGT("CắtTàngHình được kích hoạt"); // StealthChop enabled
+}
diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h
index ad0b1272df..a9286b0f48 100644
--- a/Marlin/src/lcd/language/language_zh_CN.h
+++ b/Marlin/src/lcd/language/language_zh_CN.h
@@ -28,357 +28,463 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_zh_CN {
+ using namespace Language_en; // Inherit undefined strings from English
-#define CHARSIZE 3
+ constexpr uint8_t CHARSIZE = 3;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Simplified Chinese");
-#define WELCOME_MSG MACHINE_NAME _UxGT("已就绪.") //" ready."
-#define MSG_BACK _UxGT("返回") // ”Back“
-#define MSG_MEDIA_INSERTED _UxGT("存储卡已插入") //"Card inserted"
-#define MSG_MEDIA_REMOVED _UxGT("存储卡被拔出") //"Card removed"
-#define MSG_LCD_ENDSTOPS _UxGT("挡块") //"Endstops" // Max length 8 characters
-#define MSG_MAIN _UxGT("主菜单") //"Main"
-#define MSG_AUTOSTART _UxGT("自动开始") //"Autostart"
-#define MSG_DISABLE_STEPPERS _UxGT("关闭步进电机") //"Disable steppers"
-#define MSG_DEBUG_MENU _UxGT("调试菜单") // "Debug Menu"
-#define MSG_PROGRESS_BAR_TEST _UxGT("进度条测试") // "Progress Bar Test"
-#define MSG_AUTO_HOME _UxGT("回原点") //"Auto home"
-#define MSG_AUTO_HOME_X _UxGT("回X原位") //"Home X"
-#define MSG_AUTO_HOME_Y _UxGT("回Y原位") //"Home Y"
-#define MSG_AUTO_HOME_Z _UxGT("回Z原位") //"Home Z"
-#define MSG_LEVEL_BED_HOMING _UxGT("平台调平XYZ归原位") //"Homing XYZ"
-#define MSG_LEVEL_BED_WAITING _UxGT("单击开始热床调平") //"Click to Begin"
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("下个热床调平点") //"Next Point"
-#define MSG_LEVEL_BED_DONE _UxGT("完成热床调平") //"Leveling Done!"
-#define MSG_Z_FADE_HEIGHT _UxGT("淡出高度") // "Fade Height"
-#define MSG_SET_HOME_OFFSETS _UxGT("设置原点偏移") //"Set home offsets"
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("偏移已启用") //"Offsets applied"
-#define MSG_SET_ORIGIN _UxGT("设置原点") //"Set origin"
-#define MSG_PREHEAT_1 _UxGT("预热" PREHEAT_1_LABEL) //"Preheat PREHEAT_2_LABEL"
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ") //MSG_PREHEAT_1 " "
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" 全部") //MSG_PREHEAT_1 " All"
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" 热床") //MSG_PREHEAT_1 " Bed"
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" 设置") //MSG_PREHEAT_1 " conf"
-#define MSG_PREHEAT_2 _UxGT("预热" PREHEAT_2_LABEL) //"Preheat PREHEAT_2_LABEL"
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ") //MSG_PREHEAT_2 " "
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" 全部") //MSG_PREHEAT_2 " All"
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" 热床") //MSG_PREHEAT_2 " Bed"
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" 设置") //MSG_PREHEAT_2 " conf"
-#define MSG_COOLDOWN _UxGT("降温") //"Cooldown"
-#define MSG_SWITCH_PS_ON _UxGT("电源打开") //"Switch power on"
-#define MSG_SWITCH_PS_OFF _UxGT("电源关闭") //"Switch power off"
-#define MSG_EXTRUDE _UxGT("挤出") //"Extrude"
-#define MSG_RETRACT _UxGT("回抽") //"Retract"
-#define MSG_MOVE_AXIS _UxGT("移动轴") //"Move axis"
-#define MSG_BED_LEVELING _UxGT("调平热床") //"Bed leveling"
-#define MSG_LEVEL_BED _UxGT("调平热床") //"Level bed"
-#define MSG_LEVEL_CORNERS _UxGT("调平边角") // "Level corners"
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT("已就绪."); //" ready."
+ PROGMEM Language_Str MSG_BACK = _UxGT("返回"); // ”Back“
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("存储卡已插入"); //"Card inserted"
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("存储卡被拔出"); //"Card removed"
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("挡块"); //"Endstops" // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("主菜单"); //"Main"
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("自动开始"); //"Autostart"
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("关闭步进电机"); //"Disable steppers"
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("调试菜单"); // "Debug Menu"
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("进度条测试"); // "Progress Bar Test"
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("回原点"); //"Auto home"
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("回X原位"); //"Home X"
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("回Y原位"); //"Home Y"
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("回Z原位"); //"Home Z"
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("平台调平XYZ归原位"); //"Homing XYZ"
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("单击开始热床调平"); //"Click to Begin"
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("下个热床调平点"); //"Next Point"
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("完成热床调平"); //"Leveling Done!"
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height"
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); //"Set home offsets"
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); //"Offsets applied"
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("设置原点"); //"Set origin"
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N0; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N1; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N2; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N3; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N4; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("预热 ") PREHEAT_1_LABEL " " LCD_STR_N5; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N0; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N1; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N2; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N3; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N4; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ") LCD_STR_N5; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf"
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("预热 ") PREHEAT_2_LABEL; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N0; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N1; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N2; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N3; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N4; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("预热 ") PREHEAT_2_LABEL " " LCD_STR_N5; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N0; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N1; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N2; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N3; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N4; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 喷嘴 ") LCD_STR_N5; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 全部"); //MSG_PREHEAT_2 " All"
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 热床"); //MSG_PREHEAT_2 " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("预热 ") PREHEAT_2_LABEL _UxGT(" 设置"); //MSG_PREHEAT_2 " conf"
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("降温"); //"Cooldown"
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("电源打开"); //"Switch power on"
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("电源关闭"); //"Switch power off"
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("挤出"); //"Extrude"
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("回抽"); //"Retract"
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("移动轴"); //"Move axis"
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("调平热床"); //"Bed leveling"
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("调平热床"); //"Level bed"
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("调平边角"); // "Level corners"
-#define MSG_NEXT_CORNER _UxGT("下个边角") // "Next corner"
-#define MSG_EDIT_MESH _UxGT("编辑网格") // "Edit Mesh"
-#define MSG_EDITING_STOPPED _UxGT("网格编辑已停止") // "Mesh Editing Stopped"
-#define MSG_USER_MENU _UxGT("定制命令") // "Custom Commands"
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("下个边角"); // "Next corner"
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("编辑网格"); // "Edit Mesh"
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("网格编辑已停止"); // "Mesh Editing Stopped"
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("定制命令"); // "Custom Commands"
-#define MSG_UBL_DOING_G29 _UxGT("执行G29") // "Doing G29"
-#define MSG_UBL_TOOLS _UxGT("UBL工具") // "UBL Tools"
-#define MSG_UBL_LEVEL_BED _UxGT("统一热床调平(UBL)") // "Unified Bed Leveling"
-#define MSG_UBL_MANUAL_MESH _UxGT("手工创设网格") // "Manually Build Mesh"
-#define MSG_UBL_BC_INSERT _UxGT("放置垫片并测量") // "Place shim & measure"
-#define MSG_UBL_BC_INSERT2 _UxGT("测量") // "Measure"
-#define MSG_UBL_BC_REMOVE _UxGT("移除并测量热床") // "Remove & measure bed"
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("移动到下一个") // "Moving to next"
-#define MSG_UBL_ACTIVATE_MESH _UxGT("激活UBL") // "Activate UBL"
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("关闭UBL") // "Deactivate UBL"
-#define MSG_UBL_SET_TEMP_BED _UxGT("设置热床温度") // "Bed Temp"
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("热端温度") // "Hotend Temp"
-#define MSG_UBL_MESH_EDIT _UxGT("网格编辑") // "Mesh Edit"
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("编辑客户网格") // "Edit Custom Mesh"
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("细调网格") // "Fine Tuning Mesh"
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("完成编辑网格") // "Done Editing Mesh"
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("创设客户网格") // "Build Custom Mesh"
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("创设网格") // "Build Mesh"
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("创设" PREHEAT_1_LABEL "网格") // "Build PREHEAT_1_LABEL Mesh"
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("创设" PREHEAT_2_LABEL "网格") // "Build PREHEAT_2_LABEL Mesh"
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("创设冷网格") // "Build Cold Mesh"
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("调整网格高度") // "Adjust Mesh Height"
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("高度合计") // "Height Amount"
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("批准网格") // "Validate Mesh"
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("批准" PREHEAT_1_LABEL "网格") // "Validate PREHEAT_1_LABEL Mesh"
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("批准" PREHEAT_2_LABEL "网格") // "Validate PREHEAT_2_LABEL Mesh"
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("批准客户网格") // "Validate Custom Mesh"
-#define MSG_UBL_CONTINUE_MESH _UxGT("继续热床网格") // "Continue Bed Mesh"
-#define MSG_UBL_MESH_LEVELING _UxGT("网格调平") // "Mesh Leveling"
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("三点调平") // "3-Point Leveling"
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("格子网格调平") // "Grid Mesh Leveling"
-#define MSG_UBL_MESH_LEVEL _UxGT("调平网格") // "Level Mesh"
-#define MSG_UBL_SIDE_POINTS _UxGT("边点") // "Side Points"
-#define MSG_UBL_MAP_TYPE _UxGT("图类型") // "Map Type"
-#define MSG_UBL_OUTPUT_MAP _UxGT("输出网格图") // "Output Mesh Map"
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("输出到主机") // "Output for Host"
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("输出到CSV") // "Output for CSV"
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("输出到备份") // "Off Printer Backup"
-#define MSG_UBL_INFO_UBL _UxGT("输出UBL信息") // "Output UBL Info"
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("填充合计") // "Fill-in Amount"
-#define MSG_UBL_MANUAL_FILLIN _UxGT("手工填充") // "Manual Fill-in"
-#define MSG_UBL_SMART_FILLIN _UxGT("聪明填充") // "Smart Fill-in"
-#define MSG_UBL_FILLIN_MESH _UxGT("填充网格") // "Fill-in Mesh"
-#define MSG_UBL_INVALIDATE_ALL _UxGT("作废所有的") // "Invalidate All"
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("作废最近的") // "Invalidate Closest"
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("细调所有的") // "Fine Tune All"
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("细调最近的") // "Fine Tune Closest"
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("网格存储") // "Mesh Storage"
-#define MSG_UBL_STORAGE_SLOT _UxGT("存储槽") // "Memory Slot"
-#define MSG_UBL_LOAD_MESH _UxGT("装载热床网格") // "Load Bed Mesh"
-#define MSG_UBL_SAVE_MESH _UxGT("保存热床网格") // "Save Bed Mesh"
-#define MSG_MESH_LOADED _UxGT("网格 %i 已装载") // "Mesh %i loaded"
-#define MSG_MESH_SAVED _UxGT("网格 %i 已保存") // "Mesh %i saved"
-#define MSG_UBL_NO_STORAGE _UxGT("没有存储") // "No storage"
-#define MSG_UBL_SAVE_ERROR _UxGT("错误: UBL保存") // "Err: UBL Save"
-#define MSG_UBL_RESTORE_ERROR _UxGT("错误: UBL还原") // "Err: UBL Restore"
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z偏移已停止") // "Z-Offset Stopped"
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("一步步UBL") // "Step-By-Step UBL"
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("执行G29"); // "Doing G29"
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools"
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling"
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("手工创设网格"); // "Manually Build Mesh"
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("放置垫片并测量"); // "Place shim & measure"
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("测量"); // "Measure"
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("移除并测量热床"); // "Remove & measure bed"
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("移动到下一个"); // "Moving to next"
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("激活UBL"); // "Activate UBL"
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("关闭UBL"); // "Deactivate UBL"
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("设置热床温度"); // "Bed Temp"
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("热端温度"); // "Hotend Temp"
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("网格编辑"); // "Mesh Edit"
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("编辑客户网格"); // "Edit Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("细调网格"); // "Fine Tuning Mesh"
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // "Done Editing Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // "Build Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // "Build Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("创设 ") PREHEAT_1_LABEL _UxGT(" 网格"); // "Build PREHEAT_1_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("创设 ") PREHEAT_2_LABEL _UxGT(" 网格"); // "Build PREHEAT_2_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // "Build Cold Mesh"
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // "Adjust Mesh Height"
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // "Height Amount"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准网格"); // "Validate Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 网格"); // "Validate PREHEAT_1_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 网格"); // "Validate PREHEAT_2_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客户网格"); // "Validate Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("继续热床网格"); // "Continue Bed Mesh"
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling"
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三点调平"); // "3-Point Leveling"
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子网格调平"); // "Grid Mesh Leveling"
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("调平网格"); // "Level Mesh"
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("边点"); // "Side Points"
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("图类型"); // "Map Type"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("输出网格图"); // "Output Mesh Map"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("输出到主机"); // "Output for Host"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("输出到CSV"); // "Output for CSV"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("输出到备份"); // "Off Printer Backup"
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("输出UBL信息"); // "Output UBL Info"
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合计"); // "Fill-in Amount"
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in"
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("聪明填充"); // "Smart Fill-in"
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("填充网格"); // "Fill-in Mesh"
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("作废所有的"); // "Invalidate All"
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作废最近的"); // "Invalidate Closest"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("细调所有的"); // "Fine Tune All"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("细调最近的"); // "Fine Tune Closest"
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("网格存储"); // "Mesh Storage"
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("存储槽"); // "Memory Slot"
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("装载热床网格"); // "Load Bed Mesh"
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("保存热床网格"); // "Save Bed Mesh"
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 网格 %i 已装载"); // "Mesh %i loaded"
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 网格 %i 已保存"); // "Mesh %i saved"
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("没有存储"); // "No storage"
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("错误: UBL保存"); // "Err: UBL Save"
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("错误: UBL还原"); // "Err: UBL Restore"
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped"
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL"
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 创设冷网格");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聪明填充");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准网格");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 细调所有的");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准网格");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 细调所有的");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格");
-#define MSG_LED_CONTROL _UxGT("灯管控制") // "LED Control")
-#define MSG_LEDS _UxGT("灯") // "Lights")
-#define MSG_LED_PRESETS _UxGT("灯预置") // "Light Presets")
-#define MSG_SET_LEDS_RED _UxGT("红") // "Red")
-#define MSG_SET_LEDS_ORANGE _UxGT("橙") // "Orange")
-#define MSG_SET_LEDS_YELLOW _UxGT("黄") // "Yellow")
-#define MSG_SET_LEDS_GREEN _UxGT("绿") // "Green")
-#define MSG_SET_LEDS_BLUE _UxGT("蓝") // "Blue")
-#define MSG_SET_LEDS_INDIGO _UxGT("青") // "Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("紫") // "Violet")
-#define MSG_SET_LEDS_WHITE _UxGT("白") // "White")
-#define MSG_SET_LEDS_DEFAULT _UxGT("缺省") // "Default")
-#define MSG_CUSTOM_LEDS _UxGT("定制灯") // "Custom Lights")
-#define MSG_INTENSITY_R _UxGT("红饱和度") // "Red Intensity")
-#define MSG_INTENSITY_G _UxGT("绿饱和度") // "Green Intensity")
-#define MSG_INTENSITY_B _UxGT("蓝饱和度") // "Blue Intensity")
-#define MSG_INTENSITY_W _UxGT("白饱和度") // "White Intensity")
-#define MSG_LED_BRIGHTNESS _UxGT("亮度") // "Brightness")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("灯管控制"); // "LED Control")
+ PROGMEM Language_Str MSG_LEDS = _UxGT("灯"); // "Lights")
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets")
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("红"); // "Red")
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange")
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow")
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green")
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue")
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo")
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet")
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("白"); // "White")
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default")
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights")
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity")
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness")
-#define MSG_MOVING _UxGT("移动 ...") // "Moving...")
-#define MSG_FREE_XY _UxGT("释放 XY") // "Free XY")
-#define MSG_MOVE_X _UxGT("移动X") //"Move X"
-#define MSG_MOVE_Y _UxGT("移动Y") //"Move Y"
-#define MSG_MOVE_Z _UxGT("移动Z") //"Move Z"
-#define MSG_MOVE_E _UxGT("挤出机") //"Extruder"
-#define MSG_MOVE_Z_DIST _UxGT("移动 %s mm") //"Move 0.025mm"
-#define MSG_MOVE_01MM _UxGT("移动 0.1 mm") //"Move 0.1mm"
-#define MSG_MOVE_1MM _UxGT("移动 1 mm") //"Move 1mm"
-#define MSG_MOVE_10MM _UxGT("移动 10 mm") //"Move 10mm"
-#define MSG_SPEED _UxGT("速率") //"Speed"
-#define MSG_BED_Z _UxGT("热床Z") //"Bed Z"
-#define MSG_NOZZLE _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 喷嘴") //"Nozzle" 噴嘴
-#define MSG_BED _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 热床") //"Bed"
-#define MSG_FAN_SPEED _UxGT("风扇速率") //"Fan speed"
-#define MSG_EXTRA_FAN_SPEED _UxGT("额外风扇速率") // "Extra fan speed"
-#define MSG_FLOW _UxGT("挤出速率") //"Flow"
-#define MSG_CONTROL _UxGT("控制") //"Control"
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最小") //" " LCD_STR_THERMOMETER " Min"
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最大") //" " LCD_STR_THERMOMETER " Max"
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 因数") //" " LCD_STR_THERMOMETER " Fact"
-#define MSG_AUTOTEMP _UxGT("自动控温") //"Autotemp"
-#define MSG_LCD_ON _UxGT("开") //"On"
-#define MSG_LCD_OFF _UxGT("关") //"Off"
-#define MSG_PID_P _UxGT("PID-P") //"PID-P"
-#define MSG_PID_I _UxGT("PID-I") //"PID-I"
-#define MSG_PID_D _UxGT("PID-D") //"PID-D"
-#define MSG_PID_C _UxGT("PID-C") //"PID-C"
-#define MSG_SELECT _UxGT("选择") //"Select"
-#define MSG_ACC _UxGT("加速度") //"Accel" acceleration
-#define MSG_JERK _UxGT("抖动速率") // "Jerk"
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("A轴抖动速率") //"Va-jerk"
- #define MSG_VB_JERK _UxGT("B轴抖动速率") //"Vb-jerk"
- #define MSG_VC_JERK _UxGT("C轴抖动速率") //"Vc-jerk"
-#else
- #define MSG_VA_JERK _UxGT("X轴抖动速率") //"Vx-jerk"
- #define MSG_VB_JERK _UxGT("Y轴抖动速率") //"Vy-jerk"
- #define MSG_VC_JERK _UxGT("Z轴抖动速率") //"Vz-jerk"
-#endif
-#define MSG_VE_JERK _UxGT("挤出机抖动速率") //"Ve-jerk"
-#define MSG_VELOCITY _UxGT("速度") // "Velocity"
-#define MSG_VMAX _UxGT("最大进料速率") //"Vmax " max_feedrate_mm_s
-#define MSG_VMIN _UxGT("最小进料速率") //"Vmin" min_feedrate_mm_s
-#define MSG_VTRAV_MIN _UxGT("最小移动速率") //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
-#define MSG_ACCELERATION _UxGT("加速度") // "Acceleration"
-#define MSG_AMAX _UxGT("最大打印加速度") //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
-#define MSG_A_RETRACT _UxGT("收进加速度") //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
-#define MSG_A_TRAVEL _UxGT("非打印移动加速度") //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
-#define MSG_STEPS_PER_MM _UxGT("轴步数/mm") //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A轴步数/mm") //"Asteps/mm"
- #define MSG_BSTEPS _UxGT("B轴步数/mm") //"Bsteps/mm"
- #define MSG_CSTEPS _UxGT("C轴步数/mm") //"Csteps/mm"
-#else
- #define MSG_ASTEPS _UxGT("X轴步数/mm") //"Xsteps/mm"
- #define MSG_BSTEPS _UxGT("Y轴步数/mm") //"Ysteps/mm"
- #define MSG_CSTEPS _UxGT("Z轴步数/mm") //"Zsteps/mm"
-#endif
-#define MSG_ESTEPS _UxGT("挤出机步数/mm") //"Esteps/mm"
-#define MSG_E0_STEPS _UxGT("挤出机1步数/mm") //"E1steps/mm"
-#define MSG_E1_STEPS _UxGT("挤出机2步数/mm") //"E2steps/mm"
-#define MSG_E2_STEPS _UxGT("挤出机3步数/mm") //"E3steps/mm"
-#define MSG_E3_STEPS _UxGT("挤出机4步数/mm") //"E4steps/mm"
-#define MSG_E4_STEPS _UxGT("挤出机5步数/mm") //"E5steps/mm"
-#define MSG_E5_STEPS _UxGT("挤出机6步数/mm") //"E6steps/mm"
-#define MSG_TEMPERATURE _UxGT("温度") //"Temperature"
-#define MSG_MOTION _UxGT("运动") //"Motion"
-#define MSG_FILAMENT _UxGT("丝料测容") //"Filament" menu_advanced_filament
-#define MSG_VOLUMETRIC_ENABLED _UxGT("测容积mm³") //"E in mm3" volumetric_enabled
-#define MSG_FILAMENT_DIAM _UxGT("丝料直径") //"Fil. Dia."
-#define MSG_FILAMENT_UNLOAD _UxGT("卸载 mm") // "Unload mm"
-#define MSG_FILAMENT_LOAD _UxGT("装载 mm") // "Load mm"
-#define MSG_ADVANCE_K _UxGT("Advance K") // "Advance K"
-#define MSG_CONTRAST _UxGT("LCD对比度") //"LCD contrast"
-#define MSG_STORE_EEPROM _UxGT("保存设置") //"Store memory"
-#define MSG_LOAD_EEPROM _UxGT("装载设置") //"Load memory"
-#define MSG_RESTORE_FAILSAFE _UxGT("恢复安全值") //"Restore failsafe"
-#define MSG_INIT_EEPROM _UxGT("初始化设置") // "Initialize EEPROM"
-#define MSG_REFRESH _UxGT("刷新") //"Refresh"
-#define MSG_WATCH _UxGT("信息屏") //"Info screen"
-#define MSG_PREPARE _UxGT("准备") //"Prepare"
-#define MSG_TUNE _UxGT("调整") //"Tune"
-#define MSG_PAUSE_PRINT _UxGT("暂停打印") //"Pause print"
-#define MSG_RESUME_PRINT _UxGT("恢复打印") //"Resume print"
-#define MSG_STOP_PRINT _UxGT("停止打印") //"Stop print"
-#define MSG_MEDIA_MENU _UxGT("从存储卡上打印") //"Print from SD"
-#define MSG_NO_MEDIA _UxGT("无存储卡") //"No SD card"
-#define MSG_DWELL _UxGT("休眠中 ...") //"Sleep..."
-#define MSG_USERWAIT _UxGT("点击继续 ...") //"Click to resume..."
-#define MSG_PRINT_PAUSED _UxGT("暫停打印") // "Print paused"
-#define MSG_PRINT_ABORTED _UxGT("已取消打印") //"Print aborted"
-#define MSG_NO_MOVE _UxGT("无移动") //"No move."
-#define MSG_KILLED _UxGT("已杀掉") //"KILLED. "
-#define MSG_STOPPED _UxGT("已停止") //"STOPPED. "
-#define MSG_CONTROL_RETRACT _UxGT("回抽长度mm") //"Retract mm" retract_length, retract length (positive mm)
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("换手回抽长度mm") //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
-#define MSG_CONTROL_RETRACTF _UxGT("回抽速率mm/s") //"Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm") //"Hop mm" retract_zraise, retract Z-lift
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("回抽恢复长度mm") //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("换手回抽恢复长度mm") //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("回抽恢复后进料速率mm/s") //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V") // "S UnRet V"
-#define MSG_AUTORETRACT _UxGT("自动抽回") //"AutoRetr." autoretract_enabled,
-#define MSG_FILAMENTCHANGE _UxGT("更换丝料") //"Change filament"
-#define MSG_FILAMENTLOAD _UxGT("装载丝料") // "Load filament"
-#define MSG_FILAMENTUNLOAD _UxGT("卸载丝料") // "Unload filament"
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("卸载全部") // "Unload All"
-#define MSG_INIT_MEDIA _UxGT("初始化存储卡") //"Init. SD card"
-#define MSG_CHANGE_MEDIA _UxGT("更换存储卡") //"Change SD card"
-#define MSG_ZPROBE_OUT _UxGT("Z探针在热床之外") //"Z probe out. bed" Z probe is not within the physical limits
-#define MSG_SKEW_FACTOR _UxGT("偏斜因数") // "Skew Factor"
-#define MSG_BLTOUCH _UxGT("BLTouch") // "BLTouch"
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch 自检") // "BLTouch Self-Test"
-#define MSG_BLTOUCH_RESET _UxGT("重置BLTouch") // "Reset BLTouch"
-#define MSG_BLTOUCH_DEPLOY _UxGT("部署BLTouch") // "Deploy BLTouch"
-#define MSG_BLTOUCH_STOW _UxGT("装载BLTouch") // "Stow BLTouch"
-#define MSG_HOME_FIRST _UxGT("归位 %s%s%s 先") //"Home ... first"
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z偏移") //"Z Offset"
-#define MSG_BABYSTEP_X _UxGT("微量调整X轴") //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
-#define MSG_BABYSTEP_Y _UxGT("微量调整Y轴") //"Babystep Y"
-#define MSG_BABYSTEP_Z _UxGT("微量调整Z轴") //"Babystep Z"
-#define MSG_ENDSTOP_ABORT _UxGT("挡块终止") //"Endstop abort"
-#define MSG_HEATING_FAILED_LCD _UxGT("加热失败") //"Heating failed"
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("错误:REDUNDANT TEMP") //"Err: REDUNDANT TEMP"
-#define MSG_THERMAL_RUNAWAY _UxGT("温控失控") //"THERMAL RUNAWAY"
-#define MSG_ERR_MAXTEMP _UxGT("错误:最高温度") //"Err: MAXTEMP"
-#define MSG_ERR_MINTEMP _UxGT("错误:最低温度") //"Err: MINTEMP"
-#define MSG_ERR_MAXTEMP_BED _UxGT("错误:最高热床温度") //"Err: MAXTEMP BED"
-#define MSG_ERR_MINTEMP_BED _UxGT("错误:最低热床温度") //"Err: MINTEMP BED"
-#define MSG_ERR_Z_HOMING _UxGT("归位 XY 先") // "Home XY First"
-#define MSG_HALTED _UxGT("打印停机") //"PRINTER HALTED"
-#define MSG_PLEASE_RESET _UxGT("请重置") //"Please reset"
-#define MSG_SHORT_DAY _UxGT("天") //"d" // One character only
-#define MSG_SHORT_HOUR _UxGT("时") //"h" // One character only
-#define MSG_SHORT_MINUTE _UxGT("分") //"m" // One character only
-#define MSG_HEATING _UxGT("加热中 ...") //"Heating..."
-#define MSG_BED_HEATING _UxGT("加热热床中 ...") //"Bed Heating..."
-#define MSG_DELTA_CALIBRATE _UxGT("⊿校准") //"Delta Calibration"
-#define MSG_DELTA_CALIBRATE_X _UxGT("⊿校准X") //"Calibrate X"
-#define MSG_DELTA_CALIBRATE_Y _UxGT("⊿校准Y") //"Calibrate Y"
-#define MSG_DELTA_CALIBRATE_Z _UxGT("⊿校准Z") //"Calibrate Z"
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("⊿校准中心") //"Calibrate Center"
-#define MSG_DELTA_SETTINGS _UxGT("⊿设置") // "Delta Settings"
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("⊿自动校准") // "Auto Calibration"
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("设置⊿高度") // "Set Delta Height"
-#define MSG_DELTA_DIAG_ROD _UxGT("⊿斜柱") // "Diag Rod"
-#define MSG_DELTA_HEIGHT _UxGT("⊿高度") // "Height"
-#define MSG_DELTA_RADIUS _UxGT("⊿半径") // "Radius"
-#define MSG_INFO_MENU _UxGT("关于打印机") //"About Printer"
-#define MSG_INFO_PRINTER_MENU _UxGT("打印机信息") //"Printer Info"
-#define MSG_3POINT_LEVELING _UxGT("三点调平") // "3-Point Leveling"
-#define MSG_LINEAR_LEVELING _UxGT("线性调平") // "Linear Leveling"
-#define MSG_BILINEAR_LEVELING _UxGT("双线性调平") // "Bilinear Leveling"
-#define MSG_UBL_LEVELING _UxGT("统一热床调平(UBL)") // "Unified Bed Leveling"
-#define MSG_MESH_LEVELING _UxGT("网格调平") // "Mesh Leveling"
-#define MSG_INFO_STATS_MENU _UxGT("打印机统计") //"Printer Stats"
-#define MSG_INFO_BOARD_MENU _UxGT("主板信息") //"Board Info"
-#define MSG_INFO_THERMISTOR_MENU _UxGT("温度计") //"Thermistors"
-#define MSG_INFO_EXTRUDERS _UxGT("挤出机") //"Extruders"
-#define MSG_INFO_BAUDRATE _UxGT("波特率") //"Baud"
-#define MSG_INFO_PROTOCOL _UxGT("协议") //"Protocol"
-#define MSG_CASE_LIGHT _UxGT("外壳灯") // "Case light"
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("灯亮度") // "Light BRIGHTNESS"
+ PROGMEM Language_Str MSG_MOVING = _UxGT("移动 ..."); // "Moving...")
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY")
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("移动X"); //"Move X"
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("移动Y"); //"Move Y"
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("移动Z"); //"Move Z"
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("挤出机"); //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("挤出机 ") LCD_STR_E0; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("挤出机 ") LCD_STR_E1; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("挤出机 ") LCD_STR_E2; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("挤出机 ") LCD_STR_E3; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("挤出机 ") LCD_STR_E4; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("挤出机 ") LCD_STR_E5; //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("移动 %s mm"); //"Move 0.025mm"
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("移动 0.1 mm"); //"Move 0.1mm"
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("移动 1 mm"); //"Move 1mm"
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("移动 10 mm"); //"Move 10mm"
+ PROGMEM Language_Str MSG_SPEED = _UxGT("速率"); //"Speed"
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("热床Z"); //"Bed Z"
+ PROGMEM Language_Str MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴"); //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_0 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N0; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_1 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N1; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_2 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N2; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_3 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N3; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_4 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N4; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_5 = " " LCD_STR_THERMOMETER _UxGT(" 喷嘴 ") LCD_STR_N5; //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 热床"); //"Bed"
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("风扇速率"); //"Fan speed"
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("风扇速率 1"); //"Fan speed"
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("风扇速率 2"); //"Fan speed"
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("风扇速率 3"); //"Fan speed"
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // "Extra fan speed"
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("额外风扇速率 1"); // "Extra fan speed"
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("额外风扇速率 2"); // "Extra fan speed"
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("额外风扇速率 3"); // "Extra fan speed"
+ PROGMEM Language_Str MSG_FLOW = _UxGT("挤出速率"); //"Flow"
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("挤出速率 ") LCD_STR_N0; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("挤出速率 ") LCD_STR_N1; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("挤出速率 ") LCD_STR_N2; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("挤出速率 ") LCD_STR_N3; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("挤出速率 ") LCD_STR_N4; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("挤出速率 ") LCD_STR_N5; //"Flow"
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("控制"); //"Control"
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); //" " LCD_STR_THERMOMETER " Min"
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); //" " LCD_STR_THERMOMETER " Max"
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 因数"); //" " LCD_STR_THERMOMETER " Fact"
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("自动控温"); //"Autotemp"
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("开"); //"On"
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("关"); //"Off"
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P"); //"PID-P"
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I"); //"PID-I"
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D"); //"PID-D"
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C"); //"PID-C"
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("选择"); //"Select"
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("选择 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("选择 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("选择 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("选择 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("选择 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("选择 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("加速度"); //"Accel" acceleration
+ PROGMEM Language_Str MSG_JERK = _UxGT("抖动速率"); // "Jerk"
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("轴抖动速率") LCD_STR_A; //"Va-jerk"
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("轴抖动速率") LCD_STR_B; //"Vb-jerk"
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("轴抖动速率") LCD_STR_C; //"Vc-jerk"
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("挤出机抖动速率"); //"Ve-jerk"
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("速度"); // "Velocity"
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("最大进料速率") LCD_STR_A; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("最大进料速率") LCD_STR_B; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("最大进料速率") LCD_STR_C; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("最大进料速率") LCD_STR_E; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("最大进料速率 ") LCD_STR_E0; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("最大进料速率 ") LCD_STR_E1; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("最大进料速率 ") LCD_STR_E2; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("最大进料速率 ") LCD_STR_E3; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("最大进料速率 ") LCD_STR_E4; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("最大进料速率 ") LCD_STR_E5; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMIN = _UxGT("最小进料速率"); //"Vmin" min_feedrate_mm_s
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("最小移动速率"); //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration"
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("最大打印加速度") LCD_STR_A; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("最大打印加速度") LCD_STR_B; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("最大打印加速度") LCD_STR_C; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("最大打印加速度") LCD_STR_E; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("最大打印加速度 ") LCD_STR_E0; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("最大打印加速度 ") LCD_STR_E1; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("最大打印加速度 ") LCD_STR_E2; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("最大打印加速度 ") LCD_STR_E3; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("最大打印加速度 ") LCD_STR_E4; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("最大打印加速度 ") LCD_STR_E5; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("收进加速度"); //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("非打印移动加速度"); //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("轴步数/mm"); //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("轴步数/mm"); //"Asteps/mm"
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("轴步数/mm"); //"Bsteps/mm"
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("轴步数/mm"); //"Csteps/mm"
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("挤出机步数/mm"); //"Esteps/mm"
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("挤出机") LCD_STR_N0 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("挤出机") LCD_STR_N1 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("挤出机") LCD_STR_N2 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("挤出机") LCD_STR_N3 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("挤出机") LCD_STR_N4 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("挤出机") LCD_STR_N5 _UxGT("步数/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("温度"); //"Temperature"
+ PROGMEM Language_Str MSG_MOTION = _UxGT("运动"); //"Motion"
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("丝料测容"); //"Filament" menu_advanced_filament
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("测容积mm³"); //"E in mm3" volumetric_enabled
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("丝料直径"); //"Fil. Dia."
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("丝料直径 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("丝料直径 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("丝料直径 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("丝料直径 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("丝料直径 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("丝料直径 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("卸载 mm"); // "Unload mm"
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("装载 mm"); // "Load mm"
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD对比度"); //"LCD contrast"
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("保存设置"); //"Store memory"
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("装载设置"); //"Load memory"
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("恢复安全值"); //"Restore failsafe"
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM"
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); //"Refresh"
+ PROGMEM Language_Str MSG_WATCH = _UxGT("信息屏"); //"Info screen"
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("准备"); //"Prepare"
+ PROGMEM Language_Str MSG_TUNE = _UxGT("调整"); //"Tune"
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("暂停打印"); //"Pause print"
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("恢复打印"); //"Resume print"
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("停止打印"); //"Stop print"
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); //"Print from SD"
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("无存储卡"); //"No SD card"
+ PROGMEM Language_Str MSG_DWELL = _UxGT("休眠中 ..."); //"Sleep..."
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("点击继续 ..."); //"Click to resume..."
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("暫停打印"); // "Print paused"
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("已取消打印"); //"Print aborted"
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("无移动"); //"No move."
+ PROGMEM Language_Str MSG_KILLED = _UxGT("已杀掉"); //"KILLED. "
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("已停止"); //"STOPPED. "
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("回抽长度mm"); //"Retract mm" retract_length, retract length (positive mm)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("换手回抽长度mm"); //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("回抽速率mm/s"); //"Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); //"Hop mm" retract_zraise, retract Z-lift
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("回抽恢复长度mm"); //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("换手回抽恢复长度mm"); //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回抽恢复后进料速率mm/s"); //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V"
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("自动抽回"); //"AutoRetr." autoretract_enabled,
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("更换丝料"); //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("更换丝料 ") LCD_STR_E0; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("更换丝料 ") LCD_STR_E1; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("更换丝料 ") LCD_STR_E2; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("更换丝料 ") LCD_STR_E3; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("更换丝料 ") LCD_STR_E4; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("更换丝料 ") LCD_STR_E5; //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("装载丝料 ") LCD_STR_E0; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("装载丝料 ") LCD_STR_E1; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("装载丝料 ") LCD_STR_E2; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("装载丝料 ") LCD_STR_E3; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("装载丝料 ") LCD_STR_E4; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("装载丝料 ") LCD_STR_E5; // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("卸载丝料 ") LCD_STR_E0; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("卸载丝料 ") LCD_STR_E1; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("卸载丝料 ") LCD_STR_E2; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("卸载丝料 ") LCD_STR_E3; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("卸载丝料 ") LCD_STR_E4; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("卸载丝料 ") LCD_STR_E5; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("卸载全部"); // "Unload All"
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("初始化存储卡"); //"Init. SD card"
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("更换存储卡"); //"Change SD card"
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z探针在热床之外"); //"Z probe out. bed" Z probe is not within the physical limits
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("偏斜因数"); // "Skew Factor"
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch"); // "BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自检"); // "BLTouch Self-Test"
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // "Reset BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // "Deploy BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("装载BLTouch"); // "Stow BLTouch"
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("归位 %s%s%s 先"); //"Home ... first"
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z偏移"); //"Z Offset"
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("微量调整X轴"); //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); //"Babystep Y"
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("微量调整Z轴"); //"Babystep Z"
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("挡块终止"); //"Endstop abort"
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("加热失败"); //"Heating failed"
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("错误:REDUNDANT TEMP"); //"Err: REDUNDANT TEMP"
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("温控失控"); //"THERMAL RUNAWAY"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("错误:最高温度"); //"Err: MAXTEMP"
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); //"Err: MINTEMP"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("错误:最高热床温度"); //"Err: MAXTEMP BED"
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("错误:最低热床温度"); //"Err: MINTEMP BED"
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("归位 XY 先"); // "Home XY First"
+ PROGMEM Language_Str MSG_HALTED = _UxGT("打印停机"); //"PRINTER HALTED"
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("请重置"); //"Please reset"
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("天"); //"d" // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("时"); //"h" // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("分"); //"m" // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("加热中 ..."); //"Heating..."
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("加热热床中 ..."); //"Bed Heating..."
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("⊿校准"); //"Delta Calibration"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("⊿校准X"); //"Calibrate X"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校准Y"); //"Calibrate Y"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校准Z"); //"Calibrate Z"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校准中心"); //"Calibrate Center"
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("⊿设置"); // "Delta Settings"
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自动校准"); // "Auto Calibration"
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("设置⊿高度"); // "Set Delta Height"
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod"
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height"
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("⊿半径"); // "Radius"
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("关于打印机"); //"About Printer"
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("打印机信息"); //"Printer Info"
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("三点调平"); // "3-Point Leveling"
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("线性调平"); // "Linear Leveling"
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("双线性调平"); // "Bilinear Leveling"
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling"
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling"
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("打印机统计"); //"Printer Stats"
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("主板信息"); //"Board Info"
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("温度计"); //"Thermistors"
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("挤出机"); //"Extruders"
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("波特率"); //"Baud"
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("协议"); //"Protocol"
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("外壳灯"); // "Case light"
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("灯亮度"); // "Light BRIGHTNESS"
-#define MSG_EXPECTED_PRINTER _UxGT("打印机不正确") // "The printer is incorrect"
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("打印机不正确"); // "The printer is incorrect"
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("打印计数") //"Print Count"
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("完成了") //"Completed"
- #define MSG_INFO_PRINT_TIME _UxGT("总打印时间") //"Total print time"
- #define MSG_INFO_PRINT_LONGEST _UxGT("最长工作时间") //"Longest job time"
- #define MSG_INFO_PRINT_FILAMENT _UxGT("总计挤出") //"Extruded total"
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("打印数") //"Prints"
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("完成") //"Completed"
- #define MSG_INFO_PRINT_TIME _UxGT("总共") //"Total"
- #define MSG_INFO_PRINT_LONGEST _UxGT("最长") //"Longest"
- #define MSG_INFO_PRINT_FILAMENT _UxGT("已挤出") //"Extruded"
-#endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); //"Print Count"
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); //"Completed"
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); //"Total print time"
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); //"Longest job time"
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); //"Extruded total"
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("打印数"); //"Prints"
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); //"Completed"
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("总共"); //"Total"
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("最长"); //"Longest"
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); //"Extruded"
+ #endif
-#define MSG_INFO_MIN_TEMP _UxGT("最低温度") //"Min Temp"
-#define MSG_INFO_MAX_TEMP _UxGT("最高温度") //"Max Temp"
-#define MSG_INFO_PSU _UxGT("电源供应") //"Power Supply"
-#define MSG_DRIVE_STRENGTH _UxGT("驱动力度") // "Drive Strength"
-#define MSG_DAC_PERCENT _UxGT("驱动 %") // "Driver %"
-#define MSG_DAC_EEPROM_WRITE _UxGT("保存驱动设置") // "DAC EEPROM Write"
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("打印已暂停") // "PRINT PAUSED"
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("装载丝料") // "LOAD FILAMENT"
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("卸载丝料") // "UNLOAD FILAMENT"
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("恢复选项:") // "RESUME OPTIONS:"
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("清除更多") // "Purge more"
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢复打印") //"Resume print"
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" 喷嘴: ") // " Nozzle: "
-#define MSG_ERR_HOMING_FAILED _UxGT("归原位失败") // "Homing failed"
-#define MSG_ERR_PROBING_FAILED _UxGT("探针探测失败") // "Probing failed"
-#define MSG_M600_TOO_COLD _UxGT("M600: 太凉") // "M600: Too cold"
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("最低温度"); //"Min Temp"
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("最高温度"); //"Max Temp"
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("电源供应"); //"Power Supply"
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("驱动力度"); // "Drive Strength"
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("驱动 %"); // "Driver %"
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("保存驱动设置"); // "DAC EEPROM Write"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("打印已暂停"); // "PRINT PAUSED"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("装载丝料"); // "LOAD FILAMENT"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸载丝料"); // "UNLOAD FILAMENT"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢复选项:"); // "RESUME OPTIONS:"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢复打印"); //"Resume print"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 喷嘴: "); // " Nozzle: "
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("归原位失败"); // "Homing failed"
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("探针探测失败"); // "Probing failed"
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: 太凉"); // "M600: Too cold"
-#if LCD_HEIGHT >= 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("等待开始") //"Wait for start"
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("丝料") //"of the filament"
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("变更") //"change"
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("等待") //"Wait for"
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("卸下丝料") //"filament unload"
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入丝料") //"Insert filament"
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("并按键") //"and press button"
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("来继续 ...") //"to continue..."
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("按下按钮来") // "Press button to"
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("加热喷嘴.") // "heat nozzle."
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("加热喷嘴") // "Heating nozzle"
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("请等待 ...") // "Please wait..."
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("等待") //"Wait for"
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("进料") //"filament load"
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("等待") // "Wait for"
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("丝料清除") // "filament purge"
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("等待打印") //"Wait for print"
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("恢复") //"to resume"
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("请等待 ...") //"Please wait..."
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("退出中 ...") //"Ejecting..."
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入并单击") //"Insert and Click"
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("加热中 ...") // "Heating..."
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("装载中 ...") //"Loading..."
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("清除中 ...") // "Purging..."
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("恢复中 ...") //"Resuming..."
-#endif // LCD_HEIGHT < 4
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入丝料", "并按键", "来继续 ...")); // "Insert filament and press button to continue..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume"
+ #else
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); //"Please wait..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); //"Ejecting..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); //"Insert and Click"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); //"Loading..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); //"Resuming..."
+ #endif
+}
diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h
index 90b7b00758..051e71ccae 100644
--- a/Marlin/src/lcd/language/language_zh_TW.h
+++ b/Marlin/src/lcd/language/language_zh_TW.h
@@ -28,357 +28,464 @@
* See also http://marlinfw.org/docs/development/lcd_language.html
*
*/
+namespace Language_zh_TW {
+ using namespace Language_en; // Inherit undefined strings from English
-#define CHARSIZE 3
+ constexpr uint8_t CHARSIZE = 3;
+ PROGMEM Language_Str LANGUAGE = _UxGT("Traditional Chinese");
-#define WELCOME_MSG MACHINE_NAME _UxGT("已就緒.") //" ready."
-#define MSG_BACK _UxGT("返回") // ”Back“
-#define MSG_MEDIA_INSERTED _UxGT("記憶卡已插入") //"Card inserted"
-#define MSG_MEDIA_REMOVED _UxGT("記憶卡被拔出") //"Card removed"
-#define MSG_LCD_ENDSTOPS _UxGT("擋塊") //"Endstops" // Max length 8 characters
-#define MSG_MAIN _UxGT("主選單") //"Main"
-#define MSG_AUTOSTART _UxGT("自動開始") //"Autostart"
-#define MSG_DISABLE_STEPPERS _UxGT("關閉步進馬達") //"Disable steppers"
-#define MSG_DEBUG_MENU _UxGT("除錯選單") // "Debug Menu"
-#define MSG_PROGRESS_BAR_TEST _UxGT("進度條測試") // "Progress Bar Test"
-#define MSG_AUTO_HOME _UxGT("自動回原點") //"Auto home"
-#define MSG_AUTO_HOME_X _UxGT("回X原點") //"Home X"
-#define MSG_AUTO_HOME_Y _UxGT("回Y原點") //"Home Y"
-#define MSG_AUTO_HOME_Z _UxGT("回Z原點") //"Home Z"
-#define MSG_LEVEL_BED_HOMING _UxGT("平台調平XYZ歸原點") //"Homing XYZ"
-#define MSG_LEVEL_BED_WAITING _UxGT("單擊開始熱床調平") //"Click to Begin"
-#define MSG_LEVEL_BED_NEXT_POINT _UxGT("下個熱床調平點") //"Next Point"
-#define MSG_LEVEL_BED_DONE _UxGT("完成熱床調平") //"Leveling Done!"
-#define MSG_Z_FADE_HEIGHT _UxGT("淡出高度") // "Fade Height"
-#define MSG_SET_HOME_OFFSETS _UxGT("設置原點偏移") //"Set home offsets"
-#define MSG_HOME_OFFSETS_APPLIED _UxGT("偏移已啟用") //"Offsets applied"
-#define MSG_SET_ORIGIN _UxGT("設置原點") //"Set origin"
-#define MSG_PREHEAT_1 _UxGT("預熱" PREHEAT_1_LABEL) //"Preheat PREHEAT_1_LABEL"
-#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ") //MSG_PREHEAT_1 " "
-#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" 全部") //MSG_PREHEAT_1 " All"
-#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" 熱床") //MSG_PREHEAT_1 " Bed"
-#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" 設置") //MSG_PREHEAT_1 " conf"
-#define MSG_PREHEAT_2 _UxGT("預熱" PREHEAT_2_LABEL) //"Preheat PREHEAT_2_LABEL"
-#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ") //MSG_PREHEAT_2 " "
-#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" 全部") //MSG_PREHEAT_2 " All"
-#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" 熱床") //MSG_PREHEAT_2 " Bed"
-#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" 設置") //MSG_PREHEAT_2 " conf"
-#define MSG_COOLDOWN _UxGT("降溫") //"Cooldown"
-#define MSG_SWITCH_PS_ON _UxGT("電源打開") //"Switch power on"
-#define MSG_SWITCH_PS_OFF _UxGT("電源關閉") //"Switch power off"
-#define MSG_EXTRUDE _UxGT("擠出") //"Extrude"
-#define MSG_RETRACT _UxGT("回縮") //"Retract"
-#define MSG_MOVE_AXIS _UxGT("移動軸") //"Move axis"
-#define MSG_BED_LEVELING _UxGT("調平熱床") //"Bed leveling"
-#define MSG_LEVEL_BED _UxGT("調平熱床") //"Level bed"
-#define MSG_LEVEL_CORNERS _UxGT("調平邊角") // "Level corners"
+ PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT("已就緒."); //" ready."
+ PROGMEM Language_Str MSG_BACK = _UxGT("返回"); // ”Back“
+ PROGMEM Language_Str MSG_MEDIA_INSERTED = _UxGT("記憶卡已插入"); //"Card inserted"
+ PROGMEM Language_Str MSG_MEDIA_REMOVED = _UxGT("記憶卡被拔出"); //"Card removed"
+ PROGMEM Language_Str MSG_LCD_ENDSTOPS = _UxGT("擋塊"); //"Endstops" // Max length 8 characters
+ PROGMEM Language_Str MSG_MAIN = _UxGT("主選單"); //"Main"
+ PROGMEM Language_Str MSG_AUTOSTART = _UxGT("自動開始"); //"Autostart"
+ PROGMEM Language_Str MSG_DISABLE_STEPPERS = _UxGT("關閉步進馬達"); //"Disable steppers"
+ PROGMEM Language_Str MSG_DEBUG_MENU = _UxGT("除錯選單"); // "Debug Menu"
+ PROGMEM Language_Str MSG_PROGRESS_BAR_TEST = _UxGT("進度條測試"); // "Progress Bar Test"
+ PROGMEM Language_Str MSG_AUTO_HOME = _UxGT("自動回原點"); //"Auto home"
+ PROGMEM Language_Str MSG_AUTO_HOME_X = _UxGT("回X原點"); //"Home X"
+ PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("回Y原點"); //"Home Y"
+ PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("回Z原點"); //"Home Z"
+ PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("平台調平XYZ歸原點"); //"Homing XYZ"
+ PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("單擊開始熱床調平"); //"Click to Begin"
+ PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("下個熱床調平點"); //"Next Point"
+ PROGMEM Language_Str MSG_LEVEL_BED_DONE = _UxGT("完成熱床調平"); //"Leveling Done!"
+ PROGMEM Language_Str MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height"
+ PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); //"Set home offsets"
+ PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); //"Offsets applied"
+ PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("設置原點"); //"Set origin"
+ PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H0 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N0; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H1 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N1; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H2 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N2; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H3 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N3; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H4 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N4; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_H5 = _UxGT("預熱 ") PREHEAT_1_LABEL " " LCD_STR_N5; //"Preheat PREHEAT_1_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E0 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N0; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E1 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N1; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E2 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N2; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E3 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N3; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E4 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N4; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_END_E5 = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ") LCD_STR_N5; //MSG_PREHEAT_1 " "
+ PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All"
+ PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf"
+ PROGMEM Language_Str MSG_PREHEAT_2 = _UxGT("預熱 ") PREHEAT_2_LABEL; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H0 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N0; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H1 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N1; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H2 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N2; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H3 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N3; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H4 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N4; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_H5 = _UxGT("預熱 ") PREHEAT_2_LABEL " " LCD_STR_N5; //"Preheat PREHEAT_2_LABEL"
+ PROGMEM Language_Str MSG_PREHEAT_2_END = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E0 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N0; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E1 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N1; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E2 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N2; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E3 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N3; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E4 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N4; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_END_E5 = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 噴嘴 ") LCD_STR_N5; //MSG_PREHEAT_2 " "
+ PROGMEM Language_Str MSG_PREHEAT_2_ALL = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 全部"); //MSG_PREHEAT_2 " All"
+ PROGMEM Language_Str MSG_PREHEAT_2_BEDONLY = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_2 " Bed"
+ PROGMEM Language_Str MSG_PREHEAT_2_SETTINGS = _UxGT("預熱 ") PREHEAT_2_LABEL _UxGT(" 設置"); //MSG_PREHEAT_2 " conf"
+ PROGMEM Language_Str MSG_COOLDOWN = _UxGT("降溫"); //"Cooldown"
+ PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("電源打開"); //"Switch power on"
+ PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("電源關閉"); //"Switch power off"
+ PROGMEM Language_Str MSG_EXTRUDE = _UxGT("擠出"); //"Extrude"
+ PROGMEM Language_Str MSG_RETRACT = _UxGT("回縮"); //"Retract"
+ PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("移動軸"); //"Move axis"
+ PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("調平熱床"); //"Bed leveling"
+ PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("調平熱床"); //"Level bed"
+ PROGMEM Language_Str MSG_LEVEL_CORNERS = _UxGT("調平邊角"); // "Level corners"
-#define MSG_NEXT_CORNER _UxGT("下个邊角") // "Next corner"
-#define MSG_EDIT_MESH _UxGT("編輯網格") // "Edit Mesh"
-#define MSG_EDITING_STOPPED _UxGT("網格編輯已停止") // "Mesh Editing Stopped"
-#define MSG_USER_MENU _UxGT("客制命令") // "Custom Commands"
+ PROGMEM Language_Str MSG_NEXT_CORNER = _UxGT("下個邊角"); // "Next corner"
+ PROGMEM Language_Str MSG_EDIT_MESH = _UxGT("編輯網格"); // "Edit Mesh"
+ PROGMEM Language_Str MSG_EDITING_STOPPED = _UxGT("網格編輯已停止"); // "Mesh Editing Stopped"
+ PROGMEM Language_Str MSG_USER_MENU = _UxGT("客制命令"); // "Custom Commands"
-#define MSG_UBL_DOING_G29 _UxGT("执行G29") // "Doing G29"
-#define MSG_UBL_TOOLS _UxGT("UBL工具") // "UBL Tools"
-#define MSG_UBL_LEVEL_BED _UxGT("統一熱床調平(UBL)") // "Unified Bed Leveling"
-#define MSG_UBL_MANUAL_MESH _UxGT("手工建网") // "Manually Build Mesh"
-#define MSG_UBL_BC_INSERT _UxGT("放置墊片並測量") // "Place shim & measure"
-#define MSG_UBL_BC_INSERT2 _UxGT("測量") // "Measure"
-#define MSG_UBL_BC_REMOVE _UxGT("移除並測量熱床") // "Remove & measure bed"
-#define MSG_UBL_MOVING_TO_NEXT _UxGT("移動到下一個") // "Moving to next"
-#define MSG_UBL_ACTIVATE_MESH _UxGT("激活UBL") // "Activate UBL"
-#define MSG_UBL_DEACTIVATE_MESH _UxGT("關閉UBL") // "Deactivate UBL"
-#define MSG_UBL_SET_TEMP_BED _UxGT("設置熱床溫度") // "Bed Temp"
-#define MSG_UBL_SET_TEMP_HOTEND _UxGT("熱端溫度") // "Hotend Temp"
-#define MSG_UBL_MESH_EDIT _UxGT("網格編輯") // "Mesh Edit"
-#define MSG_UBL_EDIT_CUSTOM_MESH _UxGT("編輯客戶網格") // "Edit Custom Mesh"
-#define MSG_UBL_FINE_TUNE_MESH _UxGT("細調網格") // "Fine Tuning Mesh"
-#define MSG_UBL_DONE_EDITING_MESH _UxGT("完成編輯網格") // "Done Editing Mesh"
-#define MSG_UBL_BUILD_CUSTOM_MESH _UxGT("創設客戶網格") // "Build Custom Mesh"
-#define MSG_UBL_BUILD_MESH_MENU _UxGT("創設網格") // "Build Mesh"
-#define MSG_UBL_BUILD_MESH_M1 _UxGT("創設" PREHEAT_1_LABEL "網格") // "Build PREHEAT_1_LABEL Mesh"
-#define MSG_UBL_BUILD_MESH_M2 _UxGT("創設" PREHEAT_2_LABEL "網格") // "Build PREHEAT_2_LABEL Mesh"
-#define MSG_UBL_BUILD_COLD_MESH _UxGT("創設冷網格") // "Build Cold Mesh"
-#define MSG_UBL_MESH_HEIGHT_ADJUST _UxGT("調整網格高度") // "Adjust Mesh Height"
-#define MSG_UBL_MESH_HEIGHT_AMOUNT _UxGT("高度合計") // "Height Amount"
-#define MSG_UBL_VALIDATE_MESH_MENU _UxGT("批准網格") // "Validate Mesh"
-#define MSG_UBL_VALIDATE_MESH_M1 _UxGT("批准" PREHEAT_1_LABEL "網格") // "Validate PREHEAT_1_LABEL Mesh"
-#define MSG_UBL_VALIDATE_MESH_M2 _UxGT("批准" PREHEAT_2_LABEL "網格") // "Validate PREHEAT_2_LABEL Mesh"
-#define MSG_UBL_VALIDATE_CUSTOM_MESH _UxGT("批准客戶網格") // "Validate Custom Mesh"
-#define MSG_UBL_CONTINUE_MESH _UxGT("繼續熱床網格") // "Continue Bed Mesh"
-#define MSG_UBL_MESH_LEVELING _UxGT("網格調平") // "Mesh Leveling"
-#define MSG_UBL_3POINT_MESH_LEVELING _UxGT("三點調平") // "3-Point Leveling"
-#define MSG_UBL_GRID_MESH_LEVELING _UxGT("格子網格調平") // "Grid Mesh Leveling"
-#define MSG_UBL_MESH_LEVEL _UxGT("調平網格") // "Level Mesh"
-#define MSG_UBL_SIDE_POINTS _UxGT("邊點") // "Side Points"
-#define MSG_UBL_MAP_TYPE _UxGT("圖類型") // "Map Type"
-#define MSG_UBL_OUTPUT_MAP _UxGT("輸出網格圖") // "Output Mesh Map"
-#define MSG_UBL_OUTPUT_MAP_HOST _UxGT("輸出到主機") // "Output for Host"
-#define MSG_UBL_OUTPUT_MAP_CSV _UxGT("輸出到CSV") // "Output for CSV"
-#define MSG_UBL_OUTPUT_MAP_BACKUP _UxGT("輸出到備份") // "Off Printer Backup"
-#define MSG_UBL_INFO_UBL _UxGT("輸出UBL信息") // "Output UBL Info"
-#define MSG_UBL_FILLIN_AMOUNT _UxGT("填充合計") // "Fill-in Amount"
-#define MSG_UBL_MANUAL_FILLIN _UxGT("手工填充") // "Manual Fill-in"
-#define MSG_UBL_SMART_FILLIN _UxGT("聰明填充") // "Smart Fill-in"
-#define MSG_UBL_FILLIN_MESH _UxGT("填充網格") // "Fill-in Mesh"
-#define MSG_UBL_INVALIDATE_ALL _UxGT("作廢所有的") // "Invalidate All"
-#define MSG_UBL_INVALIDATE_CLOSEST _UxGT("作廢最近的") // "Invalidate Closest"
-#define MSG_UBL_FINE_TUNE_ALL _UxGT("細調所有的") // "Fine Tune All"
-#define MSG_UBL_FINE_TUNE_CLOSEST _UxGT("細調最近的") // "Fine Tune Closest"
-#define MSG_UBL_STORAGE_MESH_MENU _UxGT("網格存儲") // "Mesh Storage"
-#define MSG_UBL_STORAGE_SLOT _UxGT("存儲槽") // "Memory Slot"
-#define MSG_UBL_LOAD_MESH _UxGT("裝載熱床網格") // "Load Bed Mesh"
-#define MSG_UBL_SAVE_MESH _UxGT("保存熱床網格") // "Save Bed Mesh"
-#define MSG_MESH_LOADED _UxGT("網格 %i 已裝載") // "Mesh %i loaded"
-#define MSG_MESH_SAVED _UxGT("網格 %i 已保存") // "Mesh %i saved"
-#define MSG_UBL_NO_STORAGE _UxGT("沒有存儲") // "No storage"
-#define MSG_UBL_SAVE_ERROR _UxGT("錯誤: UBL保存") // "Err: UBL Save"
-#define MSG_UBL_RESTORE_ERROR _UxGT("錯誤: UBL還原") // "Err: UBL Restore"
-#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z偏移已停止") // "Z-Offset Stopped"
-#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("一步步UBL") // "Step-By-Step UBL"
+ PROGMEM Language_Str MSG_UBL_DOING_G29 = _UxGT("執行G29"); // "Doing G29"
+ PROGMEM Language_Str MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools"
+ PROGMEM Language_Str MSG_UBL_LEVEL_BED = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling"
+ PROGMEM Language_Str MSG_UBL_MANUAL_MESH = _UxGT("手工建網"); // "Manually Build Mesh"
+ PROGMEM Language_Str MSG_UBL_BC_INSERT = _UxGT("放置墊片並測量"); // "Place shim & measure"
+ PROGMEM Language_Str MSG_UBL_BC_INSERT2 = _UxGT("測量"); // "Measure"
+ PROGMEM Language_Str MSG_UBL_BC_REMOVE = _UxGT("移除並測量熱床"); // "Remove & measure bed"
+ PROGMEM Language_Str MSG_UBL_MOVING_TO_NEXT = _UxGT("移動到下一個"); // "Moving to next"
+ PROGMEM Language_Str MSG_UBL_ACTIVATE_MESH = _UxGT("啟動UBL"); // "Activate UBL"
+ PROGMEM Language_Str MSG_UBL_DEACTIVATE_MESH = _UxGT("關閉UBL"); // "Deactivate UBL"
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_BED = _UxGT("設置熱床溫度"); // "Bed Temp"
+ PROGMEM Language_Str MSG_UBL_SET_TEMP_HOTEND = _UxGT("熱端溫度"); // "Hotend Temp"
+ PROGMEM Language_Str MSG_UBL_MESH_EDIT = _UxGT("網格編輯"); // "Mesh Edit"
+ PROGMEM Language_Str MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("編輯客戶網格"); // "Edit Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_MESH = _UxGT("細調網格"); // "Fine Tuning Mesh"
+ PROGMEM Language_Str MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // "Done Editing Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // "Build Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // "Build Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M1 = _UxGT("創設 ") PREHEAT_1_LABEL _UxGT(" 網格"); // "Build PREHEAT_1_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_MESH_M2 = _UxGT("創設 ") PREHEAT_2_LABEL _UxGT(" 網格"); // "Build PREHEAT_2_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // "Build Cold Mesh"
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // "Adjust Mesh Height"
+ PROGMEM Language_Str MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // "Height Amount"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准網格"); // "Validate Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M1 = _UxGT("批准 ") PREHEAT_1_LABEL _UxGT(" 網格"); // "Validate PREHEAT_1_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_MESH_M2 = _UxGT("批准 ") PREHEAT_2_LABEL _UxGT(" 網格"); // "Validate PREHEAT_2_LABEL Mesh"
+ PROGMEM Language_Str MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客戶網格"); // "Validate Custom Mesh"
+ PROGMEM Language_Str MSG_UBL_CONTINUE_MESH = _UxGT("繼續熱床網格"); // "Continue Bed Mesh"
+ PROGMEM Language_Str MSG_UBL_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling"
+ PROGMEM Language_Str MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三點調平"); // "3-Point Leveling"
+ PROGMEM Language_Str MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子網格調平"); // "Grid Mesh Leveling"
+ PROGMEM Language_Str MSG_UBL_MESH_LEVEL = _UxGT("調平網格"); // "Level Mesh"
+ PROGMEM Language_Str MSG_UBL_SIDE_POINTS = _UxGT("邊點"); // "Side Points"
+ PROGMEM Language_Str MSG_UBL_MAP_TYPE = _UxGT("圖類型"); // "Map Type"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP = _UxGT("輸出網格圖"); // "Output Mesh Map"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_HOST = _UxGT("輸出到主機"); // "Output for Host"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_CSV = _UxGT("輸出到CSV"); // "Output for CSV"
+ PROGMEM Language_Str MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("輸出到備份"); // "Off Printer Backup"
+ PROGMEM Language_Str MSG_UBL_INFO_UBL = _UxGT("輸出UBL信息"); // "Output UBL Info"
+ PROGMEM Language_Str MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合計"); // "Fill-in Amount"
+ PROGMEM Language_Str MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in"
+ PROGMEM Language_Str MSG_UBL_SMART_FILLIN = _UxGT("聰明填充"); // "Smart Fill-in"
+ PROGMEM Language_Str MSG_UBL_FILLIN_MESH = _UxGT("填充網格"); // "Fill-in Mesh"
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_ALL = _UxGT("作廢所有的"); // "Invalidate All"
+ PROGMEM Language_Str MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作廢最近的"); // "Invalidate Closest"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_ALL = _UxGT("細調所有的"); // "Fine Tune All"
+ PROGMEM Language_Str MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("細調最近的"); // "Fine Tune Closest"
+ PROGMEM Language_Str MSG_UBL_STORAGE_MESH_MENU = _UxGT("網格存儲"); // "Mesh Storage"
+ PROGMEM Language_Str MSG_UBL_STORAGE_SLOT = _UxGT("存儲槽"); // "Memory Slot"
+ PROGMEM Language_Str MSG_UBL_LOAD_MESH = _UxGT("裝載熱床網格"); // "Load Bed Mesh"
+ PROGMEM Language_Str MSG_UBL_SAVE_MESH = _UxGT("保存熱床網格"); // "Save Bed Mesh"
+ PROGMEM Language_Str MSG_MESH_LOADED = _UxGT("M117 網格 %i 已裝載"); // "Mesh %i loaded"
+ PROGMEM Language_Str MSG_MESH_SAVED = _UxGT("M117 網格 %i 已保存"); // "Mesh %i saved"
+ PROGMEM Language_Str MSG_UBL_NO_STORAGE = _UxGT("沒有存儲"); // "No storage"
+ PROGMEM Language_Str MSG_UBL_SAVE_ERROR = _UxGT("錯誤: UBL保存"); // "Err: UBL Save"
+ PROGMEM Language_Str MSG_UBL_RESTORE_ERROR = _UxGT("錯誤: UBL還原"); // "Err: UBL Restore"
+ PROGMEM Language_Str MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped"
+ PROGMEM Language_Str MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL"
+ PROGMEM Language_Str MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 創設冷網格");
+ PROGMEM Language_Str MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聰明填充");
+ PROGMEM Language_Str MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准網格");
+ PROGMEM Language_Str MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 細調所有的");
+ PROGMEM Language_Str MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准網格");
+ PROGMEM Language_Str MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 細調所有的");
+ PROGMEM Language_Str MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格");
-#define MSG_LED_CONTROL _UxGT("灯管控制") // "LED Control")
-#define MSG_LEDS _UxGT("灯") // "Lights")
-#define MSG_LED_PRESETS _UxGT("灯预置") // "Light Presets")
-#define MSG_SET_LEDS_RED _UxGT("红") // "Red")
-#define MSG_SET_LEDS_ORANGE _UxGT("橙") // "Orange")
-#define MSG_SET_LEDS_YELLOW _UxGT("黄") // "Yellow")
-#define MSG_SET_LEDS_GREEN _UxGT("绿") // "Green")
-#define MSG_SET_LEDS_BLUE _UxGT("蓝") // "Blue")
-#define MSG_SET_LEDS_INDIGO _UxGT("青") // "Indigo")
-#define MSG_SET_LEDS_VIOLET _UxGT("紫") // "Violet")
-#define MSG_SET_LEDS_WHITE _UxGT("白") // "White")
-#define MSG_SET_LEDS_DEFAULT _UxGT("缺省") // "Default")
-#define MSG_CUSTOM_LEDS _UxGT("定制灯") // "Custom Lights")
-#define MSG_INTENSITY_R _UxGT("红飽和度") // "Red Intensity")
-#define MSG_INTENSITY_G _UxGT("绿飽和度") // "Green Intensity")
-#define MSG_INTENSITY_B _UxGT("蓝飽和度") // "Blue Intensity")
-#define MSG_INTENSITY_W _UxGT("白飽和度") // "White Intensity")
-#define MSG_LED_BRIGHTNESS _UxGT("亮度") // "Brightness")
+ PROGMEM Language_Str MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control")
+ PROGMEM Language_Str MSG_LEDS = _UxGT("燈"); // "Lights")
+ PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets")
+ PROGMEM Language_Str MSG_SET_LEDS_RED = _UxGT("红"); // "Red")
+ PROGMEM Language_Str MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange")
+ PROGMEM Language_Str MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow")
+ PROGMEM Language_Str MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green")
+ PROGMEM Language_Str MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue")
+ PROGMEM Language_Str MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo")
+ PROGMEM Language_Str MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet")
+ PROGMEM Language_Str MSG_SET_LEDS_WHITE = _UxGT("白"); // "White")
+ PROGMEM Language_Str MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default")
+ PROGMEM Language_Str MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights")
+ PROGMEM Language_Str MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity")
+ PROGMEM Language_Str MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity")
+ PROGMEM Language_Str MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness")
-#define MSG_MOVING _UxGT("移动 ...") // "Moving...")
-#define MSG_FREE_XY _UxGT("释放 XY") // "Free XY")
-#define MSG_MOVE_X _UxGT("移動X") //"Move X"
-#define MSG_MOVE_Y _UxGT("移動Y") //"Move Y"
-#define MSG_MOVE_Z _UxGT("移動Z") //"Move Z"
-#define MSG_MOVE_E _UxGT("擠出機") //"Extruder"
-#define MSG_MOVE_Z_DIST _UxGT("移動 %s mm") //"Move 0.025mm"
-#define MSG_MOVE_01MM _UxGT("移動 0.1 mm") //"Move 0.1mm"
-#define MSG_MOVE_1MM _UxGT("移動 1 mm") //"Move 1mm"
-#define MSG_MOVE_10MM _UxGT("移動 10 mm") //"Move 10mm"
-#define MSG_SPEED _UxGT("速率") //"Speed"
-#define MSG_BED_Z _UxGT("熱床Z") //"Bed Z"
-#define MSG_NOZZLE _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 噴嘴") //"Nozzle" 噴嘴
-#define MSG_BED _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 熱床") //"Bed"
-#define MSG_FAN_SPEED _UxGT("風扇速率") //"Fan speed"
-#define MSG_EXTRA_FAN_SPEED _UxGT("額外風扇速率") // "Extra fan speed"
-#define MSG_FLOW _UxGT("擠出速率") //"Flow"
-#define MSG_CONTROL _UxGT("控制") //"Control"
-#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最小") //" " LCD_STR_THERMOMETER " Min"
-#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最大") //" " LCD_STR_THERMOMETER " Max"
-#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 系數") //" " LCD_STR_THERMOMETER " Fact"
-#define MSG_AUTOTEMP _UxGT("自動控溫") //"Autotemp"
-#define MSG_LCD_ON _UxGT("開") //"On"
-#define MSG_LCD_OFF _UxGT("關") //"Off"
-#define MSG_PID_P _UxGT("PID-P") //"PID-P"
-#define MSG_PID_I _UxGT("PID-I") //"PID-I"
-#define MSG_PID_D _UxGT("PID-D") //"PID-D"
-#define MSG_PID_C _UxGT("PID-C") //"PID-C"
-#define MSG_SELECT _UxGT("選擇") //"Select"
-#define MSG_ACC _UxGT("加速度") //"Accel" acceleration
-#define MSG_JERK _UxGT("抖動速率") //"Jerk"
-#if IS_KINEMATIC
- #define MSG_VA_JERK _UxGT("A軸抖動速率") //"Va-jerk"
- #define MSG_VB_JERK _UxGT("B軸抖動速率") //"Vb-jerk"
- #define MSG_VC_JERK _UxGT("C軸抖動速率") //"Vc-jerk"
-#else
- #define MSG_VA_JERK _UxGT("X軸抖動速率") //"Vx-jerk"
- #define MSG_VB_JERK _UxGT("Y軸抖動速率") //"Vy-jerk"
- #define MSG_VC_JERK _UxGT("Z軸抖動速率") //"Vz-jerk"
-#endif
-#define MSG_VE_JERK _UxGT("擠出機抖動速率") //"Ve-jerk"
-#define MSG_VELOCITY _UxGT("速度") // "Velocity"
-#define MSG_VMAX _UxGT("最大進料速率") //"Vmax " max_feedrate_mm_s
-#define MSG_VMIN _UxGT("最小進料速率") //"Vmin" min_feedrate_mm_s
-#define MSG_VTRAV_MIN _UxGT("最小移動速率") //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
-#define MSG_ACCELERATION _UxGT("加速度") // "Acceleration"
-#define MSG_AMAX _UxGT("最大列印加速度") //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
-#define MSG_A_RETRACT _UxGT("回縮加速度") //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
-#define MSG_A_TRAVEL _UxGT("非列印移動加速度") //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
-#define MSG_STEPS_PER_MM _UxGT("軸步數/mm") //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#if IS_KINEMATIC
- #define MSG_ASTEPS _UxGT("A軸步數/mm") //"Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
- #define MSG_BSTEPS _UxGT("B軸步數/mm") //"Bsteps/mm"
- #define MSG_CSTEPS _UxGT("C軸步數/mm") //"Csteps/mm"
-#else
- #define MSG_ASTEPS _UxGT("X軸步數/mm") //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
- #define MSG_BSTEPS _UxGT("Y軸步數/mm") //"Ysteps/mm"
- #define MSG_CSTEPS _UxGT("Z軸步數/mm") //"Zsteps/mm"
-#endif
-#define MSG_ESTEPS _UxGT("擠出機步數/mm") //"Esteps/mm"
-#define MSG_E0_STEPS _UxGT("擠出機1步數/mm") //"E1steps/mm"
-#define MSG_E1_STEPS _UxGT("擠出機2步數/mm") //"E2steps/mm"
-#define MSG_E2_STEPS _UxGT("擠出機3步數/mm") //"E3steps/mm"
-#define MSG_E3_STEPS _UxGT("擠出機4步數/mm") //"E4steps/mm"
-#define MSG_E4_STEPS _UxGT("擠出機5步數/mm") //"E5steps/mm"
-#define MSG_E5_STEPS _UxGT("擠出機6步數/mm") //"E6steps/mm"
-#define MSG_TEMPERATURE _UxGT("溫度") //"Temperature"
-#define MSG_MOTION _UxGT("運作") //"Motion"
-#define MSG_FILAMENT _UxGT("絲料測容") //"Filament" menu_control_volumetric
-#define MSG_VOLUMETRIC_ENABLED _UxGT("測容積mm³") //"E in mm3" volumetric_enabled
-#define MSG_FILAMENT_DIAM _UxGT("絲料直徑") //"Fil. Dia."
-#define MSG_FILAMENT_UNLOAD _UxGT("卸載 mm") // "Unload mm"
-#define MSG_FILAMENT_LOAD _UxGT("装載 mm") // "Load mm"
-#define MSG_ADVANCE_K _UxGT("Advance K") // "Advance K"
-#define MSG_CONTRAST _UxGT("LCD對比度") //"LCD contrast"
-#define MSG_STORE_EEPROM _UxGT("保存設置") //"Store memory"
-#define MSG_LOAD_EEPROM _UxGT("載入設置") //"Load memory"
-#define MSG_RESTORE_FAILSAFE _UxGT("恢復安全值") //"Restore failsafe"
-#define MSG_INIT_EEPROM _UxGT("初始化設置") // "Initialize EEPROM"
-#define MSG_REFRESH _UxGT("刷新") //"Refresh"
-#define MSG_WATCH _UxGT("資訊界面") //"Info screen"
-#define MSG_PREPARE _UxGT("準備") //"Prepare"
-#define MSG_TUNE _UxGT("調整") //"Tune"
-#define MSG_PAUSE_PRINT _UxGT("暫停列印") //"Pause print"
-#define MSG_RESUME_PRINT _UxGT("恢復列印") //"Resume print"
-#define MSG_STOP_PRINT _UxGT("停止列印") //"Stop print"
-#define MSG_MEDIA_MENU _UxGT("從記憶卡上列印") //"Print from SD"
-#define MSG_NO_MEDIA _UxGT("無記憶卡") //"No SD card"
-#define MSG_DWELL _UxGT("休眠 ...") //"Sleep..."
-#define MSG_USERWAIT _UxGT("點擊繼續 ...") //"Click to resume..."
-#define MSG_PRINT_PAUSED _UxGT("列印已暫停") // "Print paused"
-#define MSG_PRINT_ABORTED _UxGT("已取消列印") //"Print aborted"
-#define MSG_NO_MOVE _UxGT("無移動") //"No move."
-#define MSG_KILLED _UxGT("已砍掉") //"KILLED. "
-#define MSG_STOPPED _UxGT("已停止") //"STOPPED. "
-#define MSG_CONTROL_RETRACT _UxGT("回縮長度mm") //"Retract mm" retract_length, retract length (positive mm)
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("換手回抽長度mm") //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
-#define MSG_CONTROL_RETRACTF _UxGT("回縮速率mm/s") //"Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
-#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Hop mm") //"Hop mm" retract_zraise, retract Z-lift
-#define MSG_CONTROL_RETRACT_RECOVER _UxGT("回縮恢復長度mm") //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("換手回縮恢復長度mm") //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
-#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("回縮恢復後進料速率mm/s") //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
-#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V") // "S UnRet V"
-#define MSG_AUTORETRACT _UxGT("自動回縮") //"AutoRetr." autoretract_enabled,
-#define MSG_FILAMENTCHANGE _UxGT("更換絲料") //"Change filament"
-#define MSG_FILAMENTLOAD _UxGT("裝載絲料") // "Load filament"
-#define MSG_FILAMENTUNLOAD _UxGT("卸載絲料") // "Unload filament"
-#define MSG_FILAMENTUNLOAD_ALL _UxGT("卸載全部") // "Unload All"
-#define MSG_INIT_MEDIA _UxGT("初始化記憶卡") //"Init. SD card"
-#define MSG_CHANGE_MEDIA _UxGT("更換記憶卡") //"Change SD card"
-#define MSG_ZPROBE_OUT _UxGT("Z探針在熱床之外") //"Z probe out. bed" Z probe is not within the physical limits
-#define MSG_SKEW_FACTOR _UxGT("偏斜因數") // "Skew Factor"
-#define MSG_BLTOUCH _UxGT("BLTouch") // "BLTouch"
-#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch 自檢") // "BLTouch Self-Test"
-#define MSG_BLTOUCH_RESET _UxGT("重置BLTouch") // "Reset BLTouch"
-#define MSG_BLTOUCH_DEPLOY _UxGT("部署BLTouch") // "Deploy BLTouch"
-#define MSG_BLTOUCH_STOW _UxGT("裝載BLTouch") // "Stow BLTouch"
-#define MSG_HOME_FIRST _UxGT("歸位 %s%s%s 先") //"Home ... first"
-#define MSG_ZPROBE_ZOFFSET _UxGT("Z偏移") //"Z Offset"
-#define MSG_BABYSTEP_X _UxGT("微量調整X軸") //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
-#define MSG_BABYSTEP_Y _UxGT("微量調整Y軸") //"Babystep Y"
-#define MSG_BABYSTEP_Z _UxGT("微量調整Z軸") //"Babystep Z"
-#define MSG_ENDSTOP_ABORT _UxGT("擋塊終止") //"Endstop abort"
-#define MSG_HEATING_FAILED_LCD _UxGT("加熱失敗") //"Heating failed"
-#define MSG_ERR_REDUNDANT_TEMP _UxGT("錯誤:REDUNDANT TEMP") //"Err: REDUNDANT TEMP"
-#define MSG_THERMAL_RUNAWAY _UxGT("溫控失控") //"THERMAL RUNAWAY"
-#define MSG_ERR_MAXTEMP _UxGT("錯誤:最高溫度") //"Err: MAXTEMP"
-#define MSG_ERR_MINTEMP _UxGT("錯誤:最低溫度") //"Err: MINTEMP"
-#define MSG_ERR_MAXTEMP_BED _UxGT("錯誤:最高熱床溫度") //"Err: MAXTEMP BED"
-#define MSG_ERR_MINTEMP_BED _UxGT("錯誤:最低熱床溫度") //"Err: MINTEMP BED"
-#define MSG_ERR_Z_HOMING _UxGT("歸位 XY 先") //"Home XY First"
-#define MSG_HALTED _UxGT("印表機停機") //"PRINTER HALTED"
-#define MSG_PLEASE_RESET _UxGT("請重置") //"Please reset"
-#define MSG_SHORT_DAY _UxGT("天") //"d" // One character only
-#define MSG_SHORT_HOUR _UxGT("時") //"h" // One character only
-#define MSG_SHORT_MINUTE _UxGT("分") //"m" // One character only
-#define MSG_HEATING _UxGT("加熱中 ...") //"Heating..."
-#define MSG_BED_HEATING _UxGT("加熱熱床中 ...") //"Bed Heating..."
-#define MSG_DELTA_CALIBRATE _UxGT("⊿校準") //"Delta Calibration"
-#define MSG_DELTA_CALIBRATE_X _UxGT("⊿校準X") //"Calibrate X"
-#define MSG_DELTA_CALIBRATE_Y _UxGT("⊿校準Y") //"Calibrate Y"
-#define MSG_DELTA_CALIBRATE_Z _UxGT("⊿校準Z") //"Calibrate Z"
-#define MSG_DELTA_CALIBRATE_CENTER _UxGT("⊿校準中心") //"Calibrate Center"
-#define MSG_DELTA_SETTINGS _UxGT("⊿設置") // "Delta Settings"
-#define MSG_DELTA_AUTO_CALIBRATE _UxGT("⊿自動校準") // "Auto Calibration"
-#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("設置⊿高度") // "Set Delta Height"
-#define MSG_DELTA_DIAG_ROD _UxGT("⊿斜柱") // "Diag Rod"
-#define MSG_DELTA_HEIGHT _UxGT("⊿高度") // "Height"
-#define MSG_DELTA_RADIUS _UxGT("⊿半徑") // "Radius"
-#define MSG_INFO_MENU _UxGT("關於印表機") //"About Printer"
-#define MSG_INFO_PRINTER_MENU _UxGT("印表機訊息") //"Printer Info"
-#define MSG_3POINT_LEVELING _UxGT("三點調平") // "3-Point Leveling"
-#define MSG_LINEAR_LEVELING _UxGT("線性調平") // "Linear Leveling"
-#define MSG_BILINEAR_LEVELING _UxGT("雙線性調平") // "Bilinear Leveling"
-#define MSG_UBL_LEVELING _UxGT("統一熱床調平(UBL)") // "Unified Bed Leveling"
-#define MSG_MESH_LEVELING _UxGT("網格調平") // "Mesh Leveling"
-#define MSG_INFO_STATS_MENU _UxGT("印表機統計") //"Printer Stats"
-#define MSG_INFO_BOARD_MENU _UxGT("主板訊息") //"Board Info"
-#define MSG_INFO_THERMISTOR_MENU _UxGT("溫度計") //"Thermistors"
-#define MSG_INFO_EXTRUDERS _UxGT("擠出機") //"Extruders"
-#define MSG_INFO_BAUDRATE _UxGT("傳輸率") //"Baud"
-#define MSG_INFO_PROTOCOL _UxGT("協議") //"Protocol"
-#define MSG_CASE_LIGHT _UxGT("外殼燈") // "Case light"
-#define MSG_CASE_LIGHT_BRIGHTNESS _UxGT("燈亮度") // "Light BRIGHTNESS"
+ PROGMEM Language_Str MSG_MOVING = _UxGT("移動 ..."); // "Moving...")
+ PROGMEM Language_Str MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY")
+ PROGMEM Language_Str MSG_MOVE_X = _UxGT("移動X"); //"Move X"
+ PROGMEM Language_Str MSG_MOVE_Y = _UxGT("移動Y"); //"Move Y"
+ PROGMEM Language_Str MSG_MOVE_Z = _UxGT("移動Z"); //"Move Z"
+ PROGMEM Language_Str MSG_MOVE_E = _UxGT("擠出機"); //"Extruder"
+ PROGMEM Language_Str MSG_MOVE_E0 = _UxGT("擠出機 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_MOVE_E1 = _UxGT("擠出機 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_MOVE_E2 = _UxGT("擠出機 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_MOVE_E3 = _UxGT("擠出機 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_MOVE_E4 = _UxGT("擠出機 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_MOVE_E5 = _UxGT("擠出機 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_MOVE_Z_DIST = _UxGT("移動 %s mm"); //"Move 0.025mm"
+ PROGMEM Language_Str MSG_MOVE_01MM = _UxGT("移動 0.1 mm"); //"Move 0.1mm"
+ PROGMEM Language_Str MSG_MOVE_1MM = _UxGT("移動 1 mm"); //"Move 1mm"
+ PROGMEM Language_Str MSG_MOVE_10MM = _UxGT("移動 10 mm"); //"Move 10mm"
+ PROGMEM Language_Str MSG_SPEED = _UxGT("速率"); //"Speed"
+ PROGMEM Language_Str MSG_BED_Z = _UxGT("熱床Z"); //"Bed Z"
+ PROGMEM Language_Str MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); //"Nozzle" 噴嘴
+ PROGMEM Language_Str MSG_NOZZLE_0 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N0;
+ PROGMEM Language_Str MSG_NOZZLE_1 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N1;
+ PROGMEM Language_Str MSG_NOZZLE_2 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N2;
+ PROGMEM Language_Str MSG_NOZZLE_3 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N3;
+ PROGMEM Language_Str MSG_NOZZLE_4 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N4;
+ PROGMEM Language_Str MSG_NOZZLE_5 = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ") LCD_STR_N5;
+ PROGMEM Language_Str MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); //"Bed"
+ PROGMEM Language_Str MSG_FAN_SPEED = _UxGT("風扇速率"); //"Fan speed"
+ PROGMEM Language_Str MSG_FAN_SPEED_1 = _UxGT("風扇速率 1");
+ PROGMEM Language_Str MSG_FAN_SPEED_2 = _UxGT("風扇速率 2");
+ PROGMEM Language_Str MSG_FAN_SPEED_3 = _UxGT("風扇速率 3");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed"
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_1 = _UxGT("額外風扇速率 1");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_2 = _UxGT("額外風扇速率 2");
+ PROGMEM Language_Str MSG_EXTRA_FAN_SPEED_3 = _UxGT("額外風扇速率 3");
+ PROGMEM Language_Str MSG_FLOW = _UxGT("擠出速率");
+ PROGMEM Language_Str MSG_FLOW_0 = _UxGT("擠出速率 ") LCD_STR_N0; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_1 = _UxGT("擠出速率 ") LCD_STR_N1; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_2 = _UxGT("擠出速率 ") LCD_STR_N2; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_3 = _UxGT("擠出速率 ") LCD_STR_N3; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_4 = _UxGT("擠出速率 ") LCD_STR_N4; //"Flow"
+ PROGMEM Language_Str MSG_FLOW_5 = _UxGT("擠出速率 ") LCD_STR_N5; //"Flow"
+ PROGMEM Language_Str MSG_CONTROL = _UxGT("控制"); //"Control"
+ PROGMEM Language_Str MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); //" " LCD_STR_THERMOMETER " Min"
+ PROGMEM Language_Str MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); //" " LCD_STR_THERMOMETER " Max"
+ PROGMEM Language_Str MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 系數"); //" " LCD_STR_THERMOMETER " Fact"
+ PROGMEM Language_Str MSG_AUTOTEMP = _UxGT("自動控溫"); //"Autotemp"
+ PROGMEM Language_Str MSG_LCD_ON = _UxGT("開"); //"On"
+ PROGMEM Language_Str MSG_LCD_OFF = _UxGT("關"); //"Off"
+ PROGMEM Language_Str MSG_PID_P = _UxGT("PID-P"); //"PID-P"
+ PROGMEM Language_Str MSG_PID_P_E0 = _UxGT("PID-P ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_P_E1 = _UxGT("PID-P ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_P_E2 = _UxGT("PID-P ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_P_E3 = _UxGT("PID-P ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_P_E4 = _UxGT("PID-P ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_P_E5 = _UxGT("PID-P ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_I = _UxGT("PID-I"); //"PID-I"
+ PROGMEM Language_Str MSG_PID_I_E0 = _UxGT("PID-I ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_I_E1 = _UxGT("PID-I ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_I_E2 = _UxGT("PID-I ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_I_E3 = _UxGT("PID-I ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_I_E4 = _UxGT("PID-I ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_I_E5 = _UxGT("PID-I ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_D = _UxGT("PID-D"); //"PID-D"
+ PROGMEM Language_Str MSG_PID_D_E0 = _UxGT("PID-D ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_D_E1 = _UxGT("PID-D ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_D_E2 = _UxGT("PID-D ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_D_E3 = _UxGT("PID-D ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_D_E4 = _UxGT("PID-D ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_D_E5 = _UxGT("PID-D ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_PID_C = _UxGT("PID-C"); //"PID-C"
+ PROGMEM Language_Str MSG_PID_C_E0 = _UxGT("PID-C ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_PID_C_E1 = _UxGT("PID-C ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_PID_C_E2 = _UxGT("PID-C ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_PID_C_E3 = _UxGT("PID-C ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_PID_C_E4 = _UxGT("PID-C ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_PID_C_E5 = _UxGT("PID-C ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_SELECT = _UxGT("選擇"); //"Select"
+ PROGMEM Language_Str MSG_SELECT_E0 = _UxGT("選擇 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_SELECT_E1 = _UxGT("選擇 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_SELECT_E2 = _UxGT("選擇 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_SELECT_E3 = _UxGT("選擇 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_SELECT_E4 = _UxGT("選擇 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_SELECT_E5 = _UxGT("選擇 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_ACC = _UxGT("加速度"); //"Accel" acceleration
+ PROGMEM Language_Str MSG_JERK = _UxGT("抖動速率"); //"Jerk"
+ PROGMEM Language_Str MSG_VA_JERK = _UxGT("軸抖動速率") LCD_STR_A; //"Va-jerk"
+ PROGMEM Language_Str MSG_VB_JERK = _UxGT("軸抖動速率") LCD_STR_B; //"Vb-jerk"
+ PROGMEM Language_Str MSG_VC_JERK = _UxGT("軸抖動速率") LCD_STR_C; //"Vc-jerk"
+ PROGMEM Language_Str MSG_VE_JERK = _UxGT("擠出機抖動速率"); //"Ve-jerk"
+ PROGMEM Language_Str MSG_VELOCITY = _UxGT("速度"); // "Velocity"
+ PROGMEM Language_Str MSG_VMAX_A = _UxGT("最大進料速率") LCD_STR_A; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_B = _UxGT("最大進料速率") LCD_STR_B;
+ PROGMEM Language_Str MSG_VMAX_C = _UxGT("最大進料速率") LCD_STR_C;
+ PROGMEM Language_Str MSG_VMAX_E = _UxGT("最大進料速率") LCD_STR_E;
+ PROGMEM Language_Str MSG_VMAX_E0 = _UxGT("最大進料速率 ") LCD_STR_E0; //"Vmax " max_feedrate_mm_s
+ PROGMEM Language_Str MSG_VMAX_E1 = _UxGT("最大進料速率 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_VMAX_E2 = _UxGT("最大進料速率 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_VMAX_E3 = _UxGT("最大進料速率 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_VMAX_E4 = _UxGT("最大進料速率 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_VMAX_E5 = _UxGT("最大進料速率 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_VMIN = _UxGT("最小進料速率"); //"Vmin" min_feedrate_mm_s
+ PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("最小移動速率"); //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
+ PROGMEM Language_Str MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration"
+ PROGMEM Language_Str MSG_AMAX_A = _UxGT("最大列印加速度") LCD_STR_A; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_B = _UxGT("最大列印加速度") LCD_STR_B;
+ PROGMEM Language_Str MSG_AMAX_C = _UxGT("最大列印加速度") LCD_STR_C;
+ PROGMEM Language_Str MSG_AMAX_E = _UxGT("最大列印加速度") LCD_STR_E;
+ PROGMEM Language_Str MSG_AMAX_E0 = _UxGT("最大列印加速度 ") LCD_STR_E0; //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
+ PROGMEM Language_Str MSG_AMAX_E1 = _UxGT("最大列印加速度 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_AMAX_E2 = _UxGT("最大列印加速度 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_AMAX_E3 = _UxGT("最大列印加速度 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_AMAX_E4 = _UxGT("最大列印加速度 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_AMAX_E5 = _UxGT("最大列印加速度 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_A_RETRACT = _UxGT("回縮加速度"); //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
+ PROGMEM Language_Str MSG_A_TRAVEL = _UxGT("非列印移動加速度"); //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
+ PROGMEM Language_Str MSG_STEPS_PER_MM = _UxGT("軸步數/mm"); //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
+ PROGMEM Language_Str MSG_A_STEPS = LCD_STR_A _UxGT("軸步數/mm"); //"Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
+ PROGMEM Language_Str MSG_B_STEPS = LCD_STR_B _UxGT("軸步數/mm");
+ PROGMEM Language_Str MSG_C_STEPS = LCD_STR_C _UxGT("軸步數/mm");
+ PROGMEM Language_Str MSG_E_STEPS = _UxGT("擠出機步數/mm"); //"Esteps/mm"
+ PROGMEM Language_Str MSG_E0_STEPS = _UxGT("擠出機") LCD_STR_N0 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_E1_STEPS = _UxGT("擠出機") LCD_STR_N1 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_E2_STEPS = _UxGT("擠出機") LCD_STR_N2 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_E3_STEPS = _UxGT("擠出機") LCD_STR_N3 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_E4_STEPS = _UxGT("擠出機") LCD_STR_N4 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_E5_STEPS = _UxGT("擠出機") LCD_STR_N5 _UxGT("步數/mm");
+ PROGMEM Language_Str MSG_TEMPERATURE = _UxGT("溫度"); //"Temperature"
+ PROGMEM Language_Str MSG_MOTION = _UxGT("運作"); //"Motion"
+ PROGMEM Language_Str MSG_FILAMENT = _UxGT("絲料測容"); //"Filament" menu_control_volumetric
+ PROGMEM Language_Str MSG_VOLUMETRIC_ENABLED = _UxGT("測容積mm³"); //"E in mm3" volumetric_enabled
+ PROGMEM Language_Str MSG_FILAMENT_DIAM = _UxGT("絲料直徑"); //"Fil. Dia."
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E0 = _UxGT("絲料直徑 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E1 = _UxGT("絲料直徑 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E2 = _UxGT("絲料直徑 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E3 = _UxGT("絲料直徑 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E4 = _UxGT("絲料直徑 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENT_DIAM_E5 = _UxGT("絲料直徑 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENT_UNLOAD = _UxGT("卸載 mm"); // "Unload mm"
+ PROGMEM Language_Str MSG_FILAMENT_LOAD = _UxGT("装載 mm"); // "Load mm"
+ PROGMEM Language_Str MSG_CONTRAST = _UxGT("LCD對比度"); //"LCD contrast"
+ PROGMEM Language_Str MSG_STORE_EEPROM = _UxGT("保存設置"); //"Store memory"
+ PROGMEM Language_Str MSG_LOAD_EEPROM = _UxGT("載入設置"); //"Load memory"
+ PROGMEM Language_Str MSG_RESTORE_FAILSAFE = _UxGT("恢復安全值"); //"Restore failsafe"
+ PROGMEM Language_Str MSG_INIT_EEPROM = _UxGT("初始化設置"); // "Initialize EEPROM"
+ PROGMEM Language_Str MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); //"Refresh"
+ PROGMEM Language_Str MSG_WATCH = _UxGT("資訊界面"); //"Info screen"
+ PROGMEM Language_Str MSG_PREPARE = _UxGT("準備"); //"Prepare"
+ PROGMEM Language_Str MSG_TUNE = _UxGT("調整"); //"Tune"
+ PROGMEM Language_Str MSG_PAUSE_PRINT = _UxGT("暫停列印"); //"Pause print"
+ PROGMEM Language_Str MSG_RESUME_PRINT = _UxGT("恢復列印"); //"Resume print"
+ PROGMEM Language_Str MSG_STOP_PRINT = _UxGT("停止列印"); //"Stop print"
+ PROGMEM Language_Str MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); //"Print from SD"
+ PROGMEM Language_Str MSG_NO_MEDIA = _UxGT("無記憶卡"); //"No SD card"
+ PROGMEM Language_Str MSG_DWELL = _UxGT("休眠 ..."); //"Sleep..."
+ PROGMEM Language_Str MSG_USERWAIT = _UxGT("點擊繼續 ..."); //"Click to resume..."
+ PROGMEM Language_Str MSG_PRINT_PAUSED = _UxGT("列印已暫停"); // "Print paused"
+ PROGMEM Language_Str MSG_PRINT_ABORTED = _UxGT("已取消列印"); //"Print aborted"
+ PROGMEM Language_Str MSG_NO_MOVE = _UxGT("無移動"); //"No move."
+ PROGMEM Language_Str MSG_KILLED = _UxGT("已砍掉"); //"KILLED. "
+ PROGMEM Language_Str MSG_STOPPED = _UxGT("已停止"); //"STOPPED. "
+ PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("回縮長度mm"); //"Retract mm" retract_length, retract length (positive mm)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("換手回抽長度mm"); //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
+ PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("回縮速率mm/s"); //"Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); //"Hop mm" retract_zraise, retract Z-lift
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER = _UxGT("回縮恢復長度mm"); //"UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("換手回縮恢復長度mm"); //"S UnRet+mm" swap_retract_recover_extra, additional swap recover length (mm, added to retract length when recovering from extruder change)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回縮恢復後進料速率mm/s"); //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
+ PROGMEM Language_Str MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V"
+ PROGMEM Language_Str MSG_AUTORETRACT = _UxGT("自動回縮"); //"AutoRetr." autoretract_enabled,
+ PROGMEM Language_Str MSG_FILAMENTCHANGE = _UxGT("更換絲料"); //"Change filament"
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E0 = _UxGT("更換絲料 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E1 = _UxGT("更換絲料 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E2 = _UxGT("更換絲料 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E3 = _UxGT("更換絲料 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E4 = _UxGT("更換絲料 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTCHANGE_E5 = _UxGT("更換絲料 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTLOAD = _UxGT("裝載絲料"); // "Load filament"
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E0 = _UxGT("裝載絲料 ") LCD_STR_E0;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E1 = _UxGT("裝載絲料 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E2 = _UxGT("裝載絲料 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E3 = _UxGT("裝載絲料 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E4 = _UxGT("裝載絲料 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTLOAD_E5 = _UxGT("裝載絲料 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E0 = _UxGT("卸載絲料 ") LCD_STR_E0; // "Unload filament"
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E1 = _UxGT("卸載絲料 ") LCD_STR_E1;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E2 = _UxGT("卸載絲料 ") LCD_STR_E2;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E3 = _UxGT("卸載絲料 ") LCD_STR_E3;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E4 = _UxGT("卸載絲料 ") LCD_STR_E4;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_E5 = _UxGT("卸載絲料 ") LCD_STR_E5;
+ PROGMEM Language_Str MSG_FILAMENTUNLOAD_ALL = _UxGT("卸載全部"); // "Unload All"
+ PROGMEM Language_Str MSG_INIT_MEDIA = _UxGT("初始化記憶卡"); //"Init. SD card"
+ PROGMEM Language_Str MSG_CHANGE_MEDIA = _UxGT("更換記憶卡"); //"Change SD card"
+ PROGMEM Language_Str MSG_ZPROBE_OUT = _UxGT("Z探針在熱床之外"); //"Z probe out. bed" Z probe is not within the physical limits
+ PROGMEM Language_Str MSG_SKEW_FACTOR = _UxGT("偏斜因數"); // "Skew Factor"
+ PROGMEM Language_Str MSG_BLTOUCH = _UxGT("BLTouch"); // "BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自檢"); // "BLTouch Self-Test"
+ PROGMEM Language_Str MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // "Reset BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // "Deploy BLTouch"
+ PROGMEM Language_Str MSG_BLTOUCH_STOW = _UxGT("裝載BLTouch"); // "Stow BLTouch"
+ PROGMEM Language_Str MSG_HOME_FIRST = _UxGT("歸位 %s%s%s 先"); //"Home ... first"
+ PROGMEM Language_Str MSG_ZPROBE_ZOFFSET = _UxGT("Z偏移"); //"Z Offset"
+ PROGMEM Language_Str MSG_BABYSTEP_X = _UxGT("微量調整X軸"); //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
+ PROGMEM Language_Str MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); //"Babystep Y"
+ PROGMEM Language_Str MSG_BABYSTEP_Z = _UxGT("微量調整Z軸"); //"Babystep Z"
+ PROGMEM Language_Str MSG_ENDSTOP_ABORT = _UxGT("擋塊終止"); //"Endstop abort"
+ PROGMEM Language_Str MSG_HEATING_FAILED_LCD = _UxGT("加熱失敗"); //"Heating failed"
+ PROGMEM Language_Str MSG_ERR_REDUNDANT_TEMP = _UxGT("錯誤:REDUNDANT TEMP"); //"Err: REDUNDANT TEMP"
+ PROGMEM Language_Str MSG_THERMAL_RUNAWAY = _UxGT("溫控失控"); //"THERMAL RUNAWAY"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP = _UxGT("錯誤:最高溫度"); //"Err: MAXTEMP"
+ PROGMEM Language_Str MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); //"Err: MINTEMP"
+ PROGMEM Language_Str MSG_ERR_MAXTEMP_BED = _UxGT("錯誤:最高熱床溫度"); //"Err: MAXTEMP BED"
+ PROGMEM Language_Str MSG_ERR_MINTEMP_BED = _UxGT("錯誤:最低熱床溫度"); //"Err: MINTEMP BED"
+ PROGMEM Language_Str MSG_ERR_Z_HOMING = _UxGT("歸位 XY 先"); //"Home XY First"
+ PROGMEM Language_Str MSG_HALTED = _UxGT("印表機停機"); //"PRINTER HALTED"
+ PROGMEM Language_Str MSG_PLEASE_RESET = _UxGT("請重置"); //"Please reset"
+ PROGMEM Language_Str MSG_SHORT_DAY = _UxGT("天"); //"d" // One character only
+ PROGMEM Language_Str MSG_SHORT_HOUR = _UxGT("時"); //"h" // One character only
+ PROGMEM Language_Str MSG_SHORT_MINUTE = _UxGT("分"); //"m" // One character only
+ PROGMEM Language_Str MSG_HEATING = _UxGT("加熱中 ..."); //"Heating..."
+ PROGMEM Language_Str MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); //"Bed Heating..."
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE = _UxGT("⊿校準"); //"Delta Calibration"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_X = _UxGT("⊿校準X"); //"Calibrate X"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校準Y"); //"Calibrate Y"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校準Z"); //"Calibrate Z"
+ PROGMEM Language_Str MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校準中心"); //"Calibrate Center"
+ PROGMEM Language_Str MSG_DELTA_SETTINGS = _UxGT("⊿設置"); // "Delta Settings"
+ PROGMEM Language_Str MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自動校準"); // "Auto Calibration"
+ PROGMEM Language_Str MSG_DELTA_HEIGHT_CALIBRATE = _UxGT("設置⊿高度"); // "Set Delta Height"
+ PROGMEM Language_Str MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod"
+ PROGMEM Language_Str MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height"
+ PROGMEM Language_Str MSG_DELTA_RADIUS = _UxGT("⊿半徑"); // "Radius"
+ PROGMEM Language_Str MSG_INFO_MENU = _UxGT("關於印表機"); //"About Printer"
+ PROGMEM Language_Str MSG_INFO_PRINTER_MENU = _UxGT("印表機訊息"); //"Printer Info"
+ PROGMEM Language_Str MSG_3POINT_LEVELING = _UxGT("三點調平"); // "3-Point Leveling"
+ PROGMEM Language_Str MSG_LINEAR_LEVELING = _UxGT("線性調平"); // "Linear Leveling"
+ PROGMEM Language_Str MSG_BILINEAR_LEVELING = _UxGT("雙線性調平"); // "Bilinear Leveling"
+ PROGMEM Language_Str MSG_UBL_LEVELING = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling"
+ PROGMEM Language_Str MSG_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling"
+ PROGMEM Language_Str MSG_INFO_STATS_MENU = _UxGT("印表機統計"); //"Printer Stats"
+ PROGMEM Language_Str MSG_INFO_BOARD_MENU = _UxGT("主板訊息"); //"Board Info"
+ PROGMEM Language_Str MSG_INFO_THERMISTOR_MENU = _UxGT("溫度計"); //"Thermistors"
+ PROGMEM Language_Str MSG_INFO_EXTRUDERS = _UxGT("擠出機"); //"Extruders"
+ PROGMEM Language_Str MSG_INFO_BAUDRATE = _UxGT("傳輸率"); //"Baud"
+ PROGMEM Language_Str MSG_INFO_PROTOCOL = _UxGT("協議"); //"Protocol"
+ PROGMEM Language_Str MSG_CASE_LIGHT = _UxGT("外殼燈"); // "Case light"
+ PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // "Light BRIGHTNESS"
-#define MSG_EXPECTED_PRINTER _UxGT("打印機不正確") // "The printer is incorrect"
+ PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("打印機不正確"); // "The printer is incorrect"
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("列印計數") //"Print Count"
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("已完成") //"Completed"
- #define MSG_INFO_PRINT_TIME _UxGT("總列印時間") //"Total print time"
- #define MSG_INFO_PRINT_LONGEST _UxGT("最長工作時間") //"Longest job time"
- #define MSG_INFO_PRINT_FILAMENT _UxGT("總計擠出") //"Extruded total"
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("列印數") //"Prints"
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("完成") //"Completed"
- #define MSG_INFO_PRINT_TIME _UxGT("總共") //"Total"
- #define MSG_INFO_PRINT_LONGEST _UxGT("最長") //"Longest"
- #define MSG_INFO_PRINT_FILAMENT _UxGT("已擠出") //"Extruded"
-#endif
+ #if LCD_WIDTH >= 20
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); //"Print Count"
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); //"Completed"
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); //"Total print time"
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); //"Longest job time"
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); //"Extruded total"
+ #else
+ PROGMEM Language_Str MSG_INFO_PRINT_COUNT = _UxGT("列印數"); //"Prints"
+ PROGMEM Language_Str MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); //"Completed"
+ PROGMEM Language_Str MSG_INFO_PRINT_TIME = _UxGT("總共"); //"Total"
+ PROGMEM Language_Str MSG_INFO_PRINT_LONGEST = _UxGT("最長"); //"Longest"
+ PROGMEM Language_Str MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); //"Extruded"
+ #endif
-#define MSG_INFO_MIN_TEMP _UxGT("最低溫度") //"Min Temp"
-#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
-#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
-#define MSG_DRIVE_STRENGTH _UxGT("驅動力度") // "Drive Strength"
-#define MSG_DAC_PERCENT _UxGT("驅動 %") // "Driver %"
-#define MSG_DAC_EEPROM_WRITE _UxGT("保存驅動設置") // "DAC EEPROM Write"
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("列印已暫停") // "PRINT PAUSED"
-#define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("裝載絲料") // "LOAD FILAMENT"
-#define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("卸載絲料") // "UNLOAD FILAMENT"
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("恢複選項:") // "RESUME OPTIONS:"
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("清除更多") // "Purge more"
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢復列印") //"Resume print"
-#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" 噴嘴: ") // " Nozzle: "
-#define MSG_ERR_HOMING_FAILED _UxGT("歸原位失敗") // "Homing failed"
-#define MSG_ERR_PROBING_FAILED _UxGT("探針探測失敗") // "Probing failed"
-#define MSG_M600_TOO_COLD _UxGT("M600: 太涼") // "M600: Too cold"
+ PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); //"Min Temp"
+ PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); //"Max Temp"
+ PROGMEM Language_Str MSG_INFO_PSU = _UxGT("電源供應"); //"Power Supply"
+ PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("驅動力度"); // "Drive Strength"
+ PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("驅動 %"); // "Driver %"
+ PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("保存驅動設置"); // "DAC EEPROM Write"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("列印已暫停"); // "PRINT PAUSED"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("裝載絲料"); // "LOAD FILAMENT"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸載絲料"); // "UNLOAD FILAMENT"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢複選項:"); // "RESUME OPTIONS:"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢復列印"); //"Resume print"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 噴嘴: "); // " Nozzle: "
+ PROGMEM Language_Str MSG_LCD_HOMING_FAILED = _UxGT("歸原位失敗"); // "Homing failed"
+ PROGMEM Language_Str MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // "Probing failed"
+ PROGMEM Language_Str MSG_M600_TOO_COLD = _UxGT("M600: 太冷"); // "M600: Too cold"
-#if LCD_HEIGHT >= 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("等待開始") //"Wait for start"
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("絲料") //"of the filament"
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("變更") //"change"
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("等待") //"Wait for"
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("卸下絲料") //"filament unload"
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入絲料") //"Insert filament"
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("並按鍵") //"and press button"
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("繼續 ...") //"to continue..."
- #define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("按下按鈕來") // "Press button to"
- #define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("加熱噴嘴.") // "heat nozzle."
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("加熱噴嘴") // "Heating nozzle"
- #define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("請等待 ...") // "Please wait..."
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("等待") //"Wait for"
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("進料") //"filament load"
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("等待") // "Wait for"
- #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("絲料清除") // "filament purge"
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("等待列印") //"Wait for print"
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("恢復") //"to resume"
-#else // LCD_HEIGHT < 4
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("請等待 ...") //"Please wait..."
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("退出中 ...") //"Ejecting..."
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入並點擊") //"Insert and Click"
- #define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("加熱中 ...") // "Heating..."
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("載入中 ...") //"Loading..."
- #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("清除中 ...") // "Purging..."
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("恢復中 ...") //"Resuming..."
-#endif // LCD_HEIGHT < 4
+ #if LCD_HEIGHT >= 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); //"Wait for start of the filament change"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下絲料")); //"Wait for filament unload"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ...")); //"Insert filament and press button to continue..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按鈕來", "加熱噴嘴.")); // "Press button to heat nozzle."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ...")); // "Heating nozzle Please wait..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "進料")); //"Wait for filament load"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // "Wait for filament purge"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); //"Wait for print to resume"
+ #else // LCD_HEIGHT < 4
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); //"Please wait..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); //"Ejecting..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); //"Insert and Click"
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); //"Loading..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..."
+ PROGMEM Language_Str MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); //"Resuming..."
+ #endif // LCD_HEIGHT < 4
+}
diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp
index 1691e47995..a953318bfa 100644
--- a/Marlin/src/lcd/menu/menu.cpp
+++ b/Marlin/src/lcd/menu/menu.cpp
@@ -138,7 +138,7 @@ void MenuItem_gcode::action(PGM_P const, PGM_P const pgcode) { queue.inject_P(pg
* EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
*
* This expands into a more primitive menu item:
- * _MENU_ITEM_P(int3, false, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
+ * _MENU_ITEM_P(int3, false, GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
*
* ...which calls:
* MenuItem_int3::action(plabel, &feedrate_percentage, 10, 999)
@@ -324,8 +324,7 @@ void MarlinUI::_synchronize() {
// Display the synchronize screen with a custom message
// ** This blocks the command queue! **
void MarlinUI::synchronize(PGM_P const msg/*=nullptr*/) {
- static const char moving[] PROGMEM = MSG_MOVING;
- sync_message = msg ? msg : moving;
+ sync_message = msg ?: GET_TEXT(MSG_MOVING);
_synchronize();
}
@@ -419,10 +418,10 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
if (ui.should_draw()) {
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
if (!do_probe)
- draw_edit_screen(PSTR(MSG_Z_OFFSET), ftostr43sign(hotend_offset[active_extruder].z));
+ draw_edit_screen(GET_TEXT(MSG_Z_OFFSET), ftostr43sign(hotend_offset[active_extruder].z));
else
#endif
- draw_edit_screen(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(probe_offset.z));
+ draw_edit_screen(GET_TEXT(MSG_ZPROBE_ZOFFSET), ftostr43sign(probe_offset.z));
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
if (do_probe) _lcd_zoffset_overlay_gfx(probe_offset.z);
@@ -467,7 +466,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
void _lcd_draw_homing() {
constexpr uint8_t line = (LCD_HEIGHT - 1) / 2;
- if (ui.should_draw()) draw_menu_item_static(line, PSTR(MSG_LEVEL_BED_HOMING));
+ if (ui.should_draw()) draw_menu_item_static(line, GET_TEXT(MSG_LEVEL_BED_HOMING));
ui.refresh(LCDVIEW_CALL_NO_REDRAW);
}
diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h
index 2376215776..d395057b76 100644
--- a/Marlin/src/lcd/menu/menu.h
+++ b/Marlin/src/lcd/menu/menu.h
@@ -75,16 +75,17 @@ typedef void (*selectFunc_t)();
void draw_select_screen(PGM_P const yes, PGM_P const no, const bool yesno, PGM_P const pref, const char * const string, PGM_P const suff);
void do_select_screen(PGM_P const yes, PGM_P const no, selectFunc_t yesFunc, selectFunc_t noFunc, PGM_P const pref, const char * const string=nullptr, PGM_P const suff=nullptr);
inline void do_select_screen_yn(selectFunc_t yesFunc, selectFunc_t noFunc, PGM_P const pref, const char * const string=nullptr, PGM_P const suff=nullptr) {
- do_select_screen(PSTR(MSG_YES), PSTR(MSG_NO), yesFunc, noFunc, pref, string, suff);
+ do_select_screen(GET_TEXT(MSG_YES), GET_TEXT(MSG_NO), yesFunc, noFunc, pref, string, suff);
}
-#define SS_LEFT 0x00
-#define SS_CENTER 0x01
-#define SS_INVERT 0x02
+#define SS_LEFT 0x00
+#define SS_CENTER 0x01
+#define SS_INVERT 0x02
+#define SS_DEFAULT SS_CENTER
void draw_edit_screen(PGM_P const pstr, const char* const value=nullptr);
void draw_menu_item(const bool sel, const uint8_t row, PGM_P const pstr, const char pre_char, const char post_char);
-void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style=SS_CENTER, const char * const valstr=nullptr);
+void draw_menu_item_static(const uint8_t row, PGM_P const pstr, const uint8_t style=SS_DEFAULT, const char * const valstr=nullptr);
void _draw_menu_item_edit(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm);
FORCE_INLINE void draw_menu_item_back(const bool sel, const uint8_t row, PGM_P const pstr) { draw_menu_item(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]); }
FORCE_INLINE void draw_menu_item_edit(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data) { _draw_menu_item_edit(sel, row, pstr, data, false); }
@@ -93,7 +94,7 @@ FORCE_INLINE void draw_menu_item_edit_P(const bool sel, const uint8_t row, PGM_P
#define draw_menu_item_gcode(sel, row, pstr, gcode) draw_menu_item(sel, row, pstr, '>', ' ')
#define draw_menu_item_function(sel, row, pstr, data) draw_menu_item(sel, row, pstr, '>', ' ')
#define DRAW_MENU_ITEM_SETTING_EDIT_GENERIC(VAL) draw_menu_item_edit(sel, row, pstr, VAL)
-#define DRAW_BOOL_SETTING(sel, row, pstr, data) draw_menu_item_edit_P(sel, row, pstr, (*(data))?PSTR(MSG_LCD_ON):PSTR(MSG_LCD_OFF))
+#define DRAW_BOOL_SETTING(sel, row, pstr, data) draw_menu_item_edit_P(sel, row, pstr, (*(data))?GET_TEXT(MSG_LCD_ON):GET_TEXT(MSG_LCD_OFF))
#if ENABLED(SDSUPPORT)
class CardReader;
@@ -321,17 +322,17 @@ class MenuItem_bool {
* Examples:
* BACK_ITEM(MSG_WATCH)
* MENU_ITEM(back, MSG_WATCH)
- * draw_menu_item_back(sel, row, PSTR(MSG_WATCH))
+ * draw_menu_item_back(sel, row, GET_TEXT(MSG_WATCH))
* MenuItem_back::action()
*
* ACTION_ITEM(MSG_PAUSE_PRINT, lcd_sdcard_pause)
* MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause)
- * draw_menu_item_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause)
+ * draw_menu_item_function(sel, row, GET_TEXT(MSG_PAUSE_PRINT), lcd_sdcard_pause)
* MenuItem_function::action(lcd_sdcard_pause)
*
* EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
- * draw_menu_item_int3(sel, row, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
- * MenuItem_int3::action(PSTR(MSG_SPEED), &feedrate_percentage, 10, 999)
+ * draw_menu_item_int3(sel, row, GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
+ * MenuItem_int3::action(GET_TEXT(MSG_SPEED), &feedrate_percentage, 10, 999)
*
*/
#define _MENU_ITEM_P(TYPE, USE_MULTIPLIER, PLABEL, V...) do { \
@@ -370,18 +371,28 @@ class MenuItem_bool {
#define MENU_ITEM_ADDON_END() } }while(0)
-#define STATIC_ITEM(LABEL, V...) STATIC_ITEM_P(PSTR(LABEL), ##V)
+#define STATIC_ITEM(LABEL, V...) STATIC_ITEM_P(GET_TEXT(LABEL), ##V)
-#define MENU_ITEM_P(TYPE, PLABEL, V...) _MENU_ITEM_P(TYPE, false, PLABEL, ##V)
-#define MENU_ITEM(TYPE, LABEL, V...) _MENU_ITEM_P(TYPE, false, PSTR(LABEL), ##V)
-#define EDIT_ITEM(TYPE, LABEL, V...) _MENU_ITEM_P(TYPE, false, PSTR(LABEL), ##V)
-#define EDIT_ITEM_FAST(TYPE, LABEL, V...) _MENU_ITEM_P(TYPE, true, PSTR(LABEL), ##V)
+#define MENU_ITEM_P(TYPE, PLABEL, V...) _MENU_ITEM_P(TYPE, false, PLABEL, ##V)
+#define MENU_ITEM(TYPE, LABEL, V...) MENU_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
-#define SKIP_ITEM() (_thisItemNr++)
-#define BACK_ITEM(LABEL) MENU_ITEM(back,LABEL)
-#define SUBMENU(LABEL, DEST) MENU_ITEM(submenu, LABEL, DEST)
-#define GCODES_ITEM(LABEL, GCODES) MENU_ITEM(gcode, LABEL, GCODES)
-#define ACTION_ITEM(LABEL, ACTION) MENU_ITEM(function, LABEL, ACTION)
+#define EDIT_ITEM_P(TYPE, PLABEL, V...) MENU_ITEM_P(TYPE, PLABEL, ##V)
+#define EDIT_ITEM(TYPE, LABEL, V...) EDIT_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
+
+#define EDIT_ITEM_FAST_P(TYPE, PLABEL, V...) _MENU_ITEM_P(TYPE, true, PLABEL, ##V)
+#define EDIT_ITEM_FAST(TYPE, LABEL, V...) EDIT_ITEM_FAST_P(TYPE, GET_TEXT(LABEL), ##V)
+
+#define ACTION_ITEM_P(PLABEL, ACTION) MENU_ITEM_P(function, PLABEL, ACTION)
+#define ACTION_ITEM(LABEL, ACTION) ACTION_ITEM_P(GET_TEXT(LABEL), ACTION)
+
+#define GCODES_ITEM_P(PLABEL, GCODES) MENU_ITEM_P(gcode, PLABEL, GCODES)
+#define GCODES_ITEM(LABEL, GCODES) GCODES_ITEM_P(GET_TEXT(LABEL), GCODES)
+
+#define SUBMENU_P(PLABEL, DEST) MENU_ITEM_P(submenu, PLABEL, DEST)
+#define SUBMENU(LABEL, DEST) SUBMENU_P(GET_TEXT(LABEL), DEST)
+
+#define BACK_ITEM(LABEL) MENU_ITEM(back, LABEL)
+#define SKIP_ITEM() (_thisItemNr++)
////////////////////////////////////////////
/////////////// Menu Screens ///////////////
diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp
index c86ae2fec7..64c90923c9 100644
--- a/Marlin/src/lcd/menu/menu_advanced.cpp
+++ b/Marlin/src/lcd/menu/menu_advanced.cpp
@@ -78,7 +78,7 @@ void menu_backlash();
void menu_pwm() {
START_MENU();
BACK_ITEM(MSG_ADVANCED_SETTINGS);
- #define EDIT_CURRENT_PWM(LABEL,I) EDIT_ITEM(long5, LABEL, &stepper.motor_current_setting[I], 100, 2000, stepper.refresh_motor_power)
+ #define EDIT_CURRENT_PWM(LABEL,I) EDIT_ITEM_P(long5, PSTR(LABEL), &stepper.motor_current_setting[I], 100, 2000, stepper.refresh_motor_power)
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
EDIT_CURRENT_PWM(MSG_X MSG_Y, 0);
#endif
@@ -109,7 +109,7 @@ void menu_backlash();
#if EXTRUDERS == 1
EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
#elif EXTRUDERS > 1
- #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
+ #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K_E##N, &planner.extruder_advance_K[N], 0, 999)
EDIT_ADVANCE_K(0);
EDIT_ADVANCE_K(1);
#if EXTRUDERS > 2
@@ -134,7 +134,7 @@ void menu_backlash();
#if EXTRUDERS == 1
EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
#else // EXTRUDERS > 1
- #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM LCD_STR_N##N, &planner.filament_size[N], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
+ #define EDIT_FIL_DIAM(N) EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM_E##N, &planner.filament_size[N], 1.5f, 3.25f, planner.calculate_volumetric_multipliers)
EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers);
EDIT_FIL_DIAM(0);
EDIT_FIL_DIAM(1);
@@ -166,7 +166,7 @@ void menu_backlash();
#if EXTRUDERS == 1
EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[0].unload_length, 0, extrude_maxlength);
#elif EXTRUDERS > 1
- #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD LCD_STR_N##N, &fc_settings[N].unload_length, 0, extrude_maxlength)
+ #define EDIT_FIL_UNLOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENTUNLOAD_E##N, &fc_settings[N].unload_length, 0, extrude_maxlength)
EDIT_ITEM_FAST(float3, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength);
EDIT_FIL_UNLOAD(0);
EDIT_FIL_UNLOAD(1);
@@ -187,7 +187,7 @@ void menu_backlash();
#if EXTRUDERS == 1
EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[0].load_length, 0, extrude_maxlength);
#elif EXTRUDERS > 1
- #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD LCD_STR_N##N, &fc_settings[N].load_length, 0, extrude_maxlength)
+ #define EDIT_FIL_LOAD(N) EDIT_ITEM_FAST(float3, MSG_FILAMENTLOAD_E##N, &fc_settings[N].load_length, 0, extrude_maxlength)
EDIT_ITEM_FAST(float3, MSG_FILAMENT_LOAD, &fc_settings[active_extruder].load_length, 0, extrude_maxlength);
EDIT_FIL_LOAD(0);
EDIT_FIL_LOAD(1);
@@ -268,8 +268,43 @@ void menu_backlash();
thermalManager.updatePID();
}
+ #define _DEFINE_PIDTEMP_BASE_FUNCS(N) \
+ void copy_and_scalePID_i_E##N() { copy_and_scalePID_i(N); } \
+ void copy_and_scalePID_d_E##N() { copy_and_scalePID_d(N); }
+
+#else
+
+ #define _DEFINE_PIDTEMP_BASE_FUNCS(N) //
+
#endif
+#if ENABLED(PID_AUTOTUNE_MENU)
+ #define DEFINE_PIDTEMP_FUNCS(N) \
+ _DEFINE_PIDTEMP_BASE_FUNCS(N); \
+ void lcd_autotune_callback_E##N() { _lcd_autotune(N); } //
+#else
+ #define DEFINE_PIDTEMP_FUNCS(N) _DEFINE_PIDTEMP_BASE_FUNCS(N); //
+#endif
+
+#if HOTENDS
+ DEFINE_PIDTEMP_FUNCS(0);
+ #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
+ DEFINE_PIDTEMP_FUNCS(1);
+ #if HOTENDS > 2
+ DEFINE_PIDTEMP_FUNCS(2);
+ #if HOTENDS > 3
+ DEFINE_PIDTEMP_FUNCS(3);
+ #if HOTENDS > 4
+ DEFINE_PIDTEMP_FUNCS(4);
+ #if HOTENDS > 5
+ DEFINE_PIDTEMP_FUNCS(5);
+ #endif // HOTENDS > 5
+ #endif // HOTENDS > 4
+ #endif // HOTENDS > 3
+ #endif // HOTENDS > 2
+ #endif // HOTENDS > 1 && PID_PARAMS_PER_HOTEND
+#endif // HOTENDS
+
#define SHOW_MENU_ADVANCED_TEMPERATURE ((ENABLED(AUTOTEMP) && HAS_TEMP_HOTEND) || EITHER(PID_AUTOTUNE_MENU, PID_EDIT_MENU))
//
@@ -300,53 +335,57 @@ void menu_backlash();
//
#if ENABLED(PID_EDIT_MENU)
- #define _PID_BASE_MENU_ITEMS(ELABEL, eindex) \
- raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
- raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
- EDIT_ITEM(float52sign, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
- EDIT_ITEM(float52sign, MSG_PID_I ELABEL, &raw_Ki, 0.01f, 9990, [](){ copy_and_scalePID_i(eindex); }); \
- EDIT_ITEM(float52sign, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, [](){ copy_and_scalePID_d(eindex); })
+ #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
+ #define PID_LABEL(MSG,N) MSG##_E##N
+ #else
+ #define PID_LABEL(MSG,N) MSG
+ #endif
+
+ #define _PID_BASE_MENU_ITEMS(N) \
+ raw_Ki = unscalePID_i(PID_PARAM(Ki, N)); \
+ raw_Kd = unscalePID_d(PID_PARAM(Kd, N)); \
+ EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_P,N), &PID_PARAM(Kp, N), 1, 9990); \
+ EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_I,N), &raw_Ki, 0.01f, 9990, [](){ copy_and_scalePID_i(N); }); \
+ EDIT_ITEM(float52sign, PID_LABEL(MSG_PID_D,N), &raw_Kd, 1, 9990, [](){ copy_and_scalePID_d(N); })
#if ENABLED(PID_EXTRUSION_SCALING)
- #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
- _PID_BASE_MENU_ITEMS(ELABEL, eindex); \
- EDIT_ITEM(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990)
+ #define _PID_EDIT_MENU_ITEMS(N) \
+ _PID_BASE_MENU_ITEMS(N); \
+ EDIT_ITEM(float3, PID_LABEL(MSG_PID_C,N), &PID_PARAM(Kc, N), 1, 9990)
#else
- #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) _PID_BASE_MENU_ITEMS(ELABEL, eindex)
+ #define _PID_EDIT_MENU_ITEMS(N) _PID_BASE_MENU_ITEMS(N)
#endif
#else
- #define _PID_EDIT_MENU_ITEMS(ELABEL, eindex) NOOP
+ #define _PID_EDIT_MENU_ITEMS(N) NOOP
#endif
#if ENABLED(PID_AUTOTUNE_MENU)
- #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) \
- _PID_EDIT_MENU_ITEMS(ELABEL, eindex); \
- EDIT_ITEM_FAST(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, [](){ _lcd_autotune(eindex); })
+ #define PID_EDIT_MENU_ITEMS(N) \
+ _PID_EDIT_MENU_ITEMS(N); \
+ EDIT_ITEM_FAST(int3, PID_LABEL(MSG_AUTOTUNE_PID,N), &autotune_temp[N], 150, heater_maxtemp[N] - 15, [](){ _lcd_autotune(N); })
#else
- #define PID_EDIT_MENU_ITEMS(ELABEL, eindex) _PID_EDIT_MENU_ITEMS(ELABEL, eindex)
+ #define PID_EDIT_MENU_ITEMS(N) _PID_EDIT_MENU_ITEMS(N)
#endif
- #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E0, 0);
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E1, 1);
+ PID_EDIT_MENU_ITEMS(0);
+ #if HOTENDS > 1 && ENABLED(PID_PARAMS_PER_HOTEND)
+ PID_EDIT_MENU_ITEMS(1);
#if HOTENDS > 2
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E2, 2);
+ PID_EDIT_MENU_ITEMS(2);
#if HOTENDS > 3
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E3, 3);
+ PID_EDIT_MENU_ITEMS(3);
#if HOTENDS > 4
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E4, 4);
+ PID_EDIT_MENU_ITEMS(4);
#if HOTENDS > 5
- PID_EDIT_MENU_ITEMS(" " LCD_STR_E5, 5);
+ PID_EDIT_MENU_ITEMS(5);
#endif // HOTENDS > 5
#endif // HOTENDS > 4
#endif // HOTENDS > 3
#endif // HOTENDS > 2
- #else // !PID_PARAMS_PER_HOTEND || HOTENDS == 1
- PID_EDIT_MENU_ITEMS("", 0);
- #endif // !PID_PARAMS_PER_HOTEND || HOTENDS == 1
+ #endif // HOTENDS > 1 && PID_PARAMS_PER_HOTEND
END_MENU();
}
@@ -385,14 +424,14 @@ void menu_backlash();
#else
const xyze_feedrate_t &max_fr_edit_scaled = max_fr_edit;
#endif
- #define EDIT_VMAX(N) EDIT_ITEM_FAST(float3, MSG_VMAX MSG_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
+ #define EDIT_VMAX(N) EDIT_ITEM_FAST(float3, MSG_VMAX_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
EDIT_VMAX(A);
EDIT_VMAX(B);
EDIT_VMAX(C);
#if ENABLED(DISTINCT_E_FACTORS)
- #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX LCD_STR_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N)], 1, max_fr_edit_scaled.e)
- EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
+ #define EDIT_VMAX_E(N) EDIT_ITEM_FAST(float3, MSG_VMAX_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N)], 1, max_fr_edit_scaled.e)
+ EDIT_ITEM_FAST(float3, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
EDIT_VMAX_E(0);
EDIT_VMAX_E(1);
#if E_STEPPERS > 2
@@ -408,7 +447,7 @@ void menu_backlash();
#endif // E_STEPPERS > 3
#endif // E_STEPPERS > 2
#elif E_STEPPERS
- EDIT_ITEM_FAST(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, max_fr_edit_scaled.e);
+ EDIT_ITEM_FAST(float3, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, max_fr_edit_scaled.e);
#endif
// M205 S Min Feedrate
@@ -451,15 +490,15 @@ void menu_backlash();
const xyze_ulong_t &max_accel_edit_scaled = max_accel_edit;
#endif
- #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], [](){ planner.reset_acceleration_rates(); })
+ #define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], [](){ planner.reset_acceleration_rates(); })
EDIT_AMAX(A,100);
EDIT_AMAX(B,100);
EDIT_AMAX(C, 10);
#if ENABLED(DISTINCT_E_FACTORS)
- #define EDIT_AMAX_E(N) EDIT_ITEM_FAST(long5_25, MSG_AMAX LCD_STR_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(N)], 100, max_accel_edit_scaled.e, [](){ _reset_e_acceleration_rate(N); })
- EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
+ #define EDIT_AMAX_E(N) EDIT_ITEM_FAST(long5_25, MSG_AMAX_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(N)], 100, max_accel_edit_scaled.e, [](){ _reset_e_acceleration_rate(N); })
+ EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
EDIT_AMAX_E(0);
EDIT_AMAX_E(1);
#if E_STEPPERS > 2
@@ -475,7 +514,7 @@ void menu_backlash();
#endif // E_STEPPERS > 3
#endif // E_STEPPERS > 2
#elif E_STEPPERS
- EDIT_ITEM_FAST(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
+ EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, [](){ planner.reset_acceleration_rates(); });
#endif
END_MENU();
@@ -524,14 +563,14 @@ void menu_backlash();
START_MENU();
BACK_ITEM(MSG_ADVANCED_SETTINGS);
- #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, [](){ planner.refresh_positioning(); })
+ #define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float51, MSG_##Q##_STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, [](){ planner.refresh_positioning(); })
EDIT_QSTEPS(A);
EDIT_QSTEPS(B);
EDIT_QSTEPS(C);
#if ENABLED(DISTINCT_E_FACTORS)
#define EDIT_ESTEPS(N) EDIT_ITEM_FAST(float51, MSG_E##N##_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(N)], 5, 9999, [](){ _planner_refresh_e_positioning(N); })
- EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, [](){ planner.refresh_positioning(); });
+ EDIT_ITEM_FAST(float51, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(active_extruder)], 5, 9999, [](){ planner.refresh_positioning(); });
EDIT_ESTEPS(0);
EDIT_ESTEPS(1);
#if E_STEPPERS > 2
@@ -547,7 +586,7 @@ void menu_backlash();
#endif // E_STEPPERS > 3
#endif // E_STEPPERS > 2
#elif E_STEPPERS
- EDIT_ITEM_FAST(float51, MSG_ESTEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, [](){ planner.refresh_positioning(); });
+ EDIT_ITEM_FAST(float51, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, [](){ planner.refresh_positioning(); });
#endif
END_MENU();
@@ -559,7 +598,7 @@ void menu_backlash();
static void lcd_init_eeprom_confirm() {
do_select_screen(
- PSTR(MSG_BUTTON_INIT), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_INIT), GET_TEXT(MSG_BUTTON_CANCEL),
[]{
const bool inited = settings.init_eeprom();
#if HAS_BUZZER
@@ -568,7 +607,7 @@ void menu_backlash();
UNUSED(inited);
},
ui.goto_previous_screen,
- PSTR(MSG_INIT_EEPROM), nullptr, PSTR("?")
+ GET_TEXT(MSG_INIT_EEPROM), nullptr, PSTR("?")
);
}
@@ -632,7 +671,7 @@ void menu_advanced_settings() {
#if EXTRUDERS == 1
EDIT_ITEM(float52, MSG_ADVANCE_K, &planner.extruder_advance_K[0], 0, 999);
#elif EXTRUDERS > 1
- #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K LCD_STR_E##N, &planner.extruder_advance_K[N], 0, 999)
+ #define EDIT_ADVANCE_K(N) EDIT_ITEM(float52, MSG_ADVANCE_K_E##N, &planner.extruder_advance_K[N], 0, 999)
EDIT_ADVANCE_K(0);
EDIT_ADVANCE_K(1);
#if EXTRUDERS > 2
diff --git a/Marlin/src/lcd/menu/menu_backlash.cpp b/Marlin/src/lcd/menu/menu_backlash.cpp
index 30ef29a64e..cc0b3a2c99 100644
--- a/Marlin/src/lcd/menu/menu_backlash.cpp
+++ b/Marlin/src/lcd/menu/menu_backlash.cpp
@@ -38,7 +38,7 @@ void menu_backlash() {
EDIT_ITEM_FAST(percent, MSG_BACKLASH_CORRECTION, &backlash.correction, all_off, all_on);
- #define EDIT_BACKLASH_DISTANCE(N) EDIT_ITEM_FAST(float43, MSG_##N, &backlash.distance_mm[_AXIS(N)], 0.0f, 9.9f);
+ #define EDIT_BACKLASH_DISTANCE(N) EDIT_ITEM_FAST(float43, MSG_BACKLASH_##N, &backlash.distance_mm[_AXIS(N)], 0.0f, 9.9f);
EDIT_BACKLASH_DISTANCE(A);
EDIT_BACKLASH_DISTANCE(B);
EDIT_BACKLASH_DISTANCE(C);
diff --git a/Marlin/src/lcd/menu/menu_bed_corners.cpp b/Marlin/src/lcd/menu/menu_bed_corners.cpp
index 13441e6f3d..ac2a68fb36 100644
--- a/Marlin/src/lcd/menu/menu_bed_corners.cpp
+++ b/Marlin/src/lcd/menu/menu_bed_corners.cpp
@@ -86,7 +86,7 @@ static inline void _lcd_goto_next_corner() {
static inline void menu_level_bed_corners() {
do_select_screen(
- PSTR(MSG_BUTTON_NEXT), PSTR(MSG_BUTTON_DONE),
+ GET_TEXT(MSG_BUTTON_NEXT), GET_TEXT(MSG_BUTTON_DONE),
_lcd_goto_next_corner,
[]{
#if HAS_LEVELING
@@ -94,7 +94,7 @@ static inline void menu_level_bed_corners() {
#endif
ui.goto_previous_screen_no_defer();
},
- PSTR(
+ GET_TEXT(
#if ENABLED(LEVEL_CENTER_TOO)
MSG_LEVEL_BED_NEXT_POINT
#else
diff --git a/Marlin/src/lcd/menu/menu_bed_leveling.cpp b/Marlin/src/lcd/menu/menu_bed_leveling.cpp
index ba03477735..1318e2307e 100644
--- a/Marlin/src/lcd/menu/menu_bed_leveling.cpp
+++ b/Marlin/src/lcd/menu/menu_bed_leveling.cpp
@@ -74,14 +74,14 @@
#if MANUAL_PROBE_HEIGHT > 0 && DISABLED(MESH_BED_LEVELING)
// Display "Done" screen and wait for moves to complete
line_to_z(MANUAL_PROBE_HEIGHT);
- ui.synchronize(PSTR(MSG_LEVEL_BED_DONE));
+ ui.synchronize(GET_TEXT(MSG_LEVEL_BED_DONE));
#endif
ui.goto_previous_screen_no_defer();
#if HAS_BUZZER
ui.completion_feedback();
#endif
}
- if (ui.should_draw()) draw_menu_item_static(LCD_HEIGHT >= 4 ? 1 : 0, PSTR(MSG_LEVEL_BED_DONE));
+ if (ui.should_draw()) draw_menu_item_static(LCD_HEIGHT >= 4 ? 1 : 0, GET_TEXT(MSG_LEVEL_BED_DONE));
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
}
@@ -132,7 +132,7 @@
//
if (ui.should_draw()) {
const float v = current_position.z;
- draw_edit_screen(PSTR(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001f : 0.0001f), '+'));
+ draw_edit_screen(GET_TEXT(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001f : 0.0001f), '+'));
}
}
@@ -143,7 +143,7 @@
if (ui.should_draw()) {
char msg[10];
sprintf_P(msg, PSTR("%i / %u"), (int)(manual_probe_index + 1), total_probe_points);
- draw_edit_screen(PSTR(MSG_LEVEL_BED_NEXT_POINT), msg);
+ draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_NEXT_POINT), msg);
}
ui.refresh(LCDVIEW_CALL_NO_REDRAW);
if (!ui.wait_for_bl_move) ui.goto_screen(_lcd_level_bed_get_z);
@@ -169,7 +169,7 @@
// Move to the first probe position
//
void _lcd_level_bed_homing_done() {
- if (ui.should_draw()) draw_edit_screen(PSTR(MSG_LEVEL_BED_WAITING));
+ if (ui.should_draw()) draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_WAITING));
if (ui.use_click()) {
manual_probe_index = 0;
_lcd_level_goto_next_point();
diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp
index 3dd2d9c5b1..62f6f45ce5 100644
--- a/Marlin/src/lcd/menu/menu_configuration.cpp
+++ b/Marlin/src/lcd/menu/menu_configuration.cpp
@@ -68,7 +68,7 @@ void menu_advanced_settings();
bar_percent += (int8_t)ui.encoderPosition;
LIMIT(bar_percent, 0, 100);
ui.encoderPosition = 0;
- draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), SS_CENTER|SS_INVERT);
+ draw_menu_item_static(0, GET_TEXT(MSG_PROGRESS_BAR_TEST), SS_CENTER|SS_INVERT);
lcd_put_int((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2, bar_percent); lcd_put_wchar('%');
lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
}
@@ -203,17 +203,17 @@ void menu_advanced_settings();
ACTION_ITEM(MSG_BLTOUCH_SW_MODE, bltouch._set_SW_mode);
#if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU)
SUBMENU(MSG_BLTOUCH_5V_MODE, []{
- do_select_screen(PSTR(MSG_BLTOUCH_5V_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_5V_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ do_select_screen(GET_TEXT(MSG_BLTOUCH_5V_MODE), GET_TEXT(MSG_BUTTON_CANCEL), bltouch._set_5V_mode, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
});
SUBMENU(MSG_BLTOUCH_OD_MODE, []{
- do_select_screen(PSTR(MSG_BLTOUCH_OD_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_OD_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ do_select_screen(GET_TEXT(MSG_BLTOUCH_OD_MODE), GET_TEXT(MSG_BUTTON_CANCEL), bltouch._set_OD_mode, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
});
ACTION_ITEM(MSG_BLTOUCH_MODE_STORE, bltouch._mode_store);
SUBMENU(MSG_BLTOUCH_MODE_STORE_5V, []{
- do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_5V), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_5V, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ do_select_screen(GET_TEXT(MSG_BLTOUCH_MODE_STORE_5V), GET_TEXT(MSG_BUTTON_CANCEL), bltouch.mode_conv_5V, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
});
SUBMENU(MSG_BLTOUCH_MODE_STORE_OD, []{
- do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_OD), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_OD, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ do_select_screen(GET_TEXT(MSG_BLTOUCH_MODE_STORE_OD), GET_TEXT(MSG_BUTTON_CANCEL), bltouch.mode_conv_OD, ui.goto_previous_screen, GET_TEXT(MSG_BLTOUCH_MODE_CHANGE));
});
ACTION_ITEM(MSG_BLTOUCH_MODE_ECHO, bltouch_report);
#endif
diff --git a/Marlin/src/lcd/menu/menu_custom.cpp b/Marlin/src/lcd/menu/menu_custom.cpp
index 24c213544c..81b324114a 100644
--- a/Marlin/src/lcd/menu/menu_custom.cpp
+++ b/Marlin/src/lcd/menu/menu_custom.cpp
@@ -51,19 +51,19 @@ void menu_user() {
START_MENU();
BACK_ITEM(MSG_MAIN);
#if defined(USER_DESC_1) && defined(USER_GCODE_1)
- ACTION_ITEM(USER_DESC_1, [](){ _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); });
+ ACTION_ITEM_P(PSTR(USER_DESC_1), [](){ _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); });
#endif
#if defined(USER_DESC_2) && defined(USER_GCODE_2)
- ACTION_ITEM(USER_DESC_2, [](){ _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); });
+ ACTION_ITEM_P(PSTR(USER_DESC_2), [](){ _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); });
#endif
#if defined(USER_DESC_3) && defined(USER_GCODE_3)
- ACTION_ITEM(USER_DESC_3, [](){ _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); });
+ ACTION_ITEM_P(PSTR(USER_DESC_3), [](){ _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); });
#endif
#if defined(USER_DESC_4) && defined(USER_GCODE_4)
- ACTION_ITEM(USER_DESC_4, [](){ _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); });
+ ACTION_ITEM_P(PSTR(USER_DESC_4), [](){ _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); });
#endif
#if defined(USER_DESC_5) && defined(USER_GCODE_5)
- ACTION_ITEM(USER_DESC_5, [](){ _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); });
+ ACTION_ITEM_P(PSTR(USER_DESC_5), [](){ _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); });
#endif
END_MENU();
}
diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp
index ae827f2483..38e94c0908 100644
--- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp
+++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp
@@ -60,7 +60,7 @@ void _man_probe_pt(const xy_pos_t &xy) {
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Delta Calibration in progress"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("Delta Calibration in progress"));
+ ExtUI::onUserConfirmRequired_P(PSTR("Delta Calibration in progress"));
#endif
while (wait_for_user) idle();
ui.goto_previous_screen_no_defer();
@@ -104,12 +104,12 @@ void lcd_delta_settings() {
START_MENU();
BACK_ITEM(MSG_DELTA_CALIBRATE);
EDIT_ITEM(float52sign, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10, delta_height + 10, _recalc_delta_settings);
- #define EDIT_ENDSTOP_ADJ(LABEL,N) EDIT_ITEM(float43, LABEL, &delta_endstop_adj.N, -5, 5, _recalc_delta_settings)
+ #define EDIT_ENDSTOP_ADJ(LABEL,N) EDIT_ITEM_P(float43, PSTR(LABEL), &delta_endstop_adj.N, -5, 5, _recalc_delta_settings)
EDIT_ENDSTOP_ADJ("Ex",a);
EDIT_ENDSTOP_ADJ("Ey",b);
EDIT_ENDSTOP_ADJ("Ez",c);
EDIT_ITEM(float52sign, MSG_DELTA_RADIUS, &delta_radius, delta_radius - 5, delta_radius + 5, _recalc_delta_settings);
- #define EDIT_ANGLE_TRIM(LABEL,N) EDIT_ITEM(float43, LABEL, &delta_tower_angle_trim.N, -5, 5, _recalc_delta_settings)
+ #define EDIT_ANGLE_TRIM(LABEL,N) EDIT_ITEM_P(float43, PSTR(LABEL), &delta_tower_angle_trim.N, -5, 5, _recalc_delta_settings)
EDIT_ANGLE_TRIM("Tx",a);
EDIT_ANGLE_TRIM("Ty",b);
EDIT_ANGLE_TRIM("Tz",c);
diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp
index f3b202623f..e32e93d23c 100644
--- a/Marlin/src/lcd/menu/menu_filament.cpp
+++ b/Marlin/src/lcd/menu/menu_filament.cpp
@@ -52,7 +52,7 @@ inline PGM_P _change_filament_temp_command() {
default:
return PSTR("M600 B0 T%d");
}
- return PSTR(MSG_FILAMENTCHANGE);
+ return GET_TEXT(MSG_FILAMENTCHANGE);
}
// Initiate Filament Load/Unload/Change at the specified temperature
@@ -70,12 +70,12 @@ static void _change_filament_temp(const uint16_t temperature) {
inline PGM_P change_filament_header(const PauseMode mode) {
switch (mode) {
case PAUSE_MODE_LOAD_FILAMENT:
- return PSTR(MSG_FILAMENTLOAD);
+ return GET_TEXT(MSG_FILAMENTLOAD);
case PAUSE_MODE_UNLOAD_FILAMENT:
- return PSTR(MSG_FILAMENTUNLOAD);
+ return GET_TEXT(MSG_FILAMENTUNLOAD);
default: break;
}
- return PSTR(MSG_FILAMENTCHANGE);
+ return GET_TEXT(MSG_FILAMENTCHANGE);
}
void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
@@ -107,14 +107,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
// Change filament
#if E_STEPPERS == 1
- PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE);
+ PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE);
if (thermalManager.targetTooColdToExtrude(active_extruder))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
else
MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
#else
- PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E0);
- PGM_P const msg1 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E1);
+ PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE_E0);
+ PGM_P const msg1 = GET_TEXT(MSG_FILAMENTCHANGE_E1);
if (thermalManager.targetTooColdToExtrude(0))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
else
@@ -124,25 +124,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
else
MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
#if E_STEPPERS > 2
- PGM_P const msg2 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E2);
+ PGM_P const msg2 = GET_TEXT(MSG_FILAMENTCHANGE_E2);
if (thermalManager.targetTooColdToExtrude(2))
MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 2); });
else
MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
#if E_STEPPERS > 3
- PGM_P const msg3 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E3);
+ PGM_P const msg3 = GET_TEXT(MSG_FILAMENTCHANGE_E3);
if (thermalManager.targetTooColdToExtrude(3))
MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 3); });
else
MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
#if E_STEPPERS > 4
- PGM_P const msg4 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E4);
+ PGM_P const msg4 = GET_TEXT(MSG_FILAMENTCHANGE_E4);
if (thermalManager.targetTooColdToExtrude(4))
MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 4); });
else
MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
#if E_STEPPERS > 5
- PGM_P const msg5 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E5);
+ PGM_P const msg5 = GET_TEXT(MSG_FILAMENTCHANGE_E5);
if (thermalManager.targetTooColdToExtrude(5))
MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 5); });
else
@@ -157,14 +157,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
if (!printer_busy()) {
// Load filament
#if E_STEPPERS == 1
- PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD);
+ PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD);
if (thermalManager.targetTooColdToExtrude(active_extruder))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
else
MENU_ITEM_P(gcode, msg0, PSTR("M701"));
#else
- PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E0);
- PGM_P const msg1 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E1);
+ PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD_E0);
+ PGM_P const msg1 = GET_TEXT(MSG_FILAMENTLOAD_E1);
if (thermalManager.targetTooColdToExtrude(0))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
else
@@ -174,25 +174,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
else
MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
#if E_STEPPERS > 2
- PGM_P const msg2 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E2);
+ PGM_P const msg2 = GET_TEXT(MSG_FILAMENTLOAD_E2);
if (thermalManager.targetTooColdToExtrude(2))
MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 2); });
else
MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
#if E_STEPPERS > 3
- PGM_P const msg3 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E3);
+ PGM_P const msg3 = GET_TEXT(MSG_FILAMENTLOAD_E3);
if (thermalManager.targetTooColdToExtrude(3))
MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 3); });
else
MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
#if E_STEPPERS > 4
- PGM_P const msg4 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E4);
+ PGM_P const msg4 = GET_TEXT(MSG_FILAMENTLOAD_E4);
if (thermalManager.targetTooColdToExtrude(4))
MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 4); });
else
MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
#if E_STEPPERS > 5
- PGM_P const msg5 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E5);
+ PGM_P const msg5 = GET_TEXT(MSG_FILAMENTLOAD_E5);
if (thermalManager.targetTooColdToExtrude(5))
MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 5); });
else
@@ -223,33 +223,33 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
SUBMENU(MSG_FILAMENTUNLOAD_ALL, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, -1); });
#endif
if (thermalManager.targetHotEnoughToExtrude(0))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E0, PSTR("M702 T0"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E0, PSTR("M702 T0"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
if (thermalManager.targetHotEnoughToExtrude(1))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E1, PSTR("M702 T1"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E1, PSTR("M702 T1"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
#if E_STEPPERS > 2
if (thermalManager.targetHotEnoughToExtrude(2))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E2, PSTR("M702 T2"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E2, PSTR("M702 T2"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
#if E_STEPPERS > 3
if (thermalManager.targetHotEnoughToExtrude(3))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E3, PSTR("M702 T3"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E3, PSTR("M702 T3"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
#if E_STEPPERS > 4
if (thermalManager.targetHotEnoughToExtrude(4))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E4, PSTR("M702 T4"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E4, PSTR("M702 T4"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
#if E_STEPPERS > 5
if (thermalManager.targetHotEnoughToExtrude(5))
- GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E5, PSTR("M702 T5"));
+ GCODES_ITEM(MSG_FILAMENTUNLOAD_E5, PSTR("M702 T5"));
else
- SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
+ SUBMENU(MSG_FILAMENTUNLOAD_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
#endif // E_STEPPERS > 5
#endif // E_STEPPERS > 4
#endif // E_STEPPERS > 3
@@ -267,22 +267,21 @@ static uint8_t hotend_status_extruder = 0;
static PGM_P pause_header() {
switch (pause_mode) {
case PAUSE_MODE_CHANGE_FILAMENT:
- return PSTR(MSG_FILAMENT_CHANGE_HEADER);
+ return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER);
case PAUSE_MODE_LOAD_FILAMENT:
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
+ return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_LOAD);
case PAUSE_MODE_UNLOAD_FILAMENT:
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
- case PAUSE_MODE_PAUSE_PRINT:
+ return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
default: break;
}
- return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
+ return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
}
// Portions from STATIC_ITEM...
#define HOTEND_STATUS_ITEM() do { \
if (_menuLineNr == _thisItemNr) { \
if (ui.should_draw()) { \
- draw_menu_item_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
+ draw_menu_item_static(_lcdLineNr, GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
ui.draw_hotend_status(_lcdLineNr, hotend_status_extruder); \
} \
if (_skipStatic && encoderLine <= _thisItemNr) { \
@@ -312,137 +311,42 @@ void menu_pause_option() {
//
// ADVANCED_PAUSE_FEATURE message screens
//
+// Warning: msg must have three null bytes to delimit lines!
+//
+void _lcd_pause_message(PGM_P const msg) {
+ PGM_P const msg1 = msg;
+ PGM_P const msg2 = msg1 + strlen_P(msg1) + 1;
+ PGM_P const msg3 = msg2 + strlen_P(msg2) + 1;
+ const bool has2 = msg2[0], has3 = msg3[0],
+ skip1 = !has2 && (LCD_HEIGHT) >= 5;
-void _lcd_pause_message(PGM_P const msg1, PGM_P const msg2=nullptr, PGM_P const msg3=nullptr) {
START_SCREEN();
- STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT);
- STATIC_ITEM_P(msg1);
- if (msg2) STATIC_ITEM_P(msg2);
- if (msg3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3);
- if ((!!msg2) + (!!msg3) + 2 < (LCD_HEIGHT) - 1) STATIC_ITEM(" ");
- HOTEND_STATUS_ITEM();
+ STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT); // 1: Header
+ if (skip1) SKIP_ITEM(); // Move a single-line message down
+ STATIC_ITEM_P(msg1); // 2: Message Line 1
+ if (has2) STATIC_ITEM_P(msg2); // 3: Message Line 2
+ if (has3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3); // 4: Message Line 3 (if LCD has 5 lines)
+ if (skip1 + 1 + has2 + has3 < (LCD_HEIGHT) - 2) SKIP_ITEM(); // Push Hotend Status down, if needed
+ HOTEND_STATUS_ITEM(); // 5: Hotend Status
END_SCREEN();
}
-void lcd_pause_pausing_message() {
- _lcd_pause_message(PSTR(MSG_PAUSE_PRINT_INIT_1)
- #ifdef MSG_PAUSE_PRINT_INIT_2
- , PSTR(MSG_PAUSE_PRINT_INIT_2)
- #ifdef MSG_PAUSE_PRINT_INIT_3
- , PSTR(MSG_PAUSE_PRINT_INIT_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_changing_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INIT_1)
- #ifdef MSG_FILAMENT_CHANGE_INIT_2
- , PSTR(MSG_FILAMENT_CHANGE_INIT_2)
- #ifdef MSG_FILAMENT_CHANGE_INIT_3
- , PSTR(MSG_FILAMENT_CHANGE_INIT_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_unload_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_UNLOAD_1)
- #ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
- , PSTR(MSG_FILAMENT_CHANGE_UNLOAD_2)
- #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
- , PSTR(MSG_FILAMENT_CHANGE_UNLOAD_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_heating_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEATING_1)
- #ifdef MSG_FILAMENT_CHANGE_HEATING_2
- , PSTR(MSG_FILAMENT_CHANGE_HEATING_2)
- #ifdef MSG_FILAMENT_CHANGE_HEATING_3
- , PSTR(MSG_FILAMENT_CHANGE_HEATING_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_heat_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEAT_1)
- #ifdef MSG_FILAMENT_CHANGE_HEAT_2
- , PSTR(MSG_FILAMENT_CHANGE_HEAT_2)
- #ifdef MSG_FILAMENT_CHANGE_HEAT_3
- , PSTR(MSG_FILAMENT_CHANGE_HEAT_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_insert_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INSERT_1)
- #ifdef MSG_FILAMENT_CHANGE_INSERT_2
- , PSTR(MSG_FILAMENT_CHANGE_INSERT_2)
- #ifdef MSG_FILAMENT_CHANGE_INSERT_3
- , PSTR(MSG_FILAMENT_CHANGE_INSERT_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_load_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_LOAD_1)
- #ifdef MSG_FILAMENT_CHANGE_LOAD_2
- , PSTR(MSG_FILAMENT_CHANGE_LOAD_2)
- #ifdef MSG_FILAMENT_CHANGE_LOAD_3
- , PSTR(MSG_FILAMENT_CHANGE_LOAD_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_waiting_message() {
- _lcd_pause_message(PSTR(MSG_ADVANCED_PAUSE_WAITING_1)
- #ifdef MSG_ADVANCED_PAUSE_WAITING_2
- , PSTR(MSG_ADVANCED_PAUSE_WAITING_2)
- #ifdef MSG_ADVANCED_PAUSE_WAITING_3
- , PSTR(MSG_ADVANCED_PAUSE_WAITING_3)
- #endif
- #endif
- );
-}
-
-void lcd_pause_resume_message() {
- _lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_RESUME_1)
- #ifdef MSG_FILAMENT_CHANGE_RESUME_2
- , PSTR(MSG_FILAMENT_CHANGE_RESUME_2)
- #ifdef MSG_FILAMENT_CHANGE_RESUME_3
- , PSTR(MSG_FILAMENT_CHANGE_RESUME_3)
- #endif
- #endif
- );
-}
+void lcd_pause_pausing_message() { _lcd_pause_message(GET_TEXT(MSG_PAUSE_PRINT_INIT)); }
+void lcd_pause_changing_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INIT)); }
+void lcd_pause_unload_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_UNLOAD)); }
+void lcd_pause_heating_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEATING)); }
+void lcd_pause_heat_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEAT)); }
+void lcd_pause_insert_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INSERT)); }
+void lcd_pause_load_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_LOAD)); }
+void lcd_pause_waiting_message() { _lcd_pause_message(GET_TEXT(MSG_ADVANCED_PAUSE_WAITING)); }
+void lcd_pause_resume_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_RESUME)); }
void lcd_pause_purge_message() {
- _lcd_pause_message(
- #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
- PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_1)
- #ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_2
- , PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_2)
- #ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_3
- , PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_3)
- #endif
- #endif
- #else
- PSTR(MSG_FILAMENT_CHANGE_PURGE_1)
- #ifdef MSG_FILAMENT_CHANGE_PURGE_2
- , PSTR(MSG_FILAMENT_CHANGE_PURGE_2)
- #ifdef MSG_FILAMENT_CHANGE_PURGE_3
- , PSTR(MSG_FILAMENT_CHANGE_PURGE_3)
- #endif
- #endif
- #endif
- );
+ #if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
+ _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_CONT_PURGE));
+ #else
+ _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE));
+ #endif
}
FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) {
diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp
index 26d9441ff7..5ef6bbfc46 100644
--- a/Marlin/src/lcd/menu/menu_info.cpp
+++ b/Marlin/src/lcd/menu/menu_info.cpp
@@ -34,8 +34,8 @@
#include "game/game.h"
#endif
-#define STATIC_PAIR(MSG, VALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy(buffer + 2, VALUE); STATIC_ITEM(MSG, STYL, buffer); }while(0)
-#define STATIC_PAIR_P(MSG, PVALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy_P(buffer + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, STYL, buffer); }while(0)
+#define VALUE_ITEM(MSG, VALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy(buffer + 2, VALUE); STATIC_ITEM(MSG, STYL, buffer); }while(0)
+#define VALUE_ITEM_P(MSG, PVALUE, STYL) do{ strcpy_P(buffer, PSTR(": ")); strcpy_P(buffer + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, STYL, buffer); }while(0)
#if ENABLED(PRINTCOUNTER)
@@ -51,37 +51,41 @@
#endif
);
- char buffer[21]; // for STATIC_PAIR_P
+ char buffer[21]; // For macro usage
printStatistics stats = print_job_timer.getStats();
START_SCREEN(); // 12345678901234567890
- STATIC_PAIR(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT); // Print Count: 999
- STATIC_PAIR(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT); // Completed : 666
+ VALUE_ITEM(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT); // Print Count: 999
+ VALUE_ITEM(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT); // Completed : 666
- STATIC_PAIR_P(MSG_INFO_PRINT_TIME, "", SS_LEFT); // Total print Time:
- STATIC_ITEM("> ", SS_LEFT, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s
+ STATIC_ITEM(MSG_INFO_PRINT_TIME, SS_LEFT); // Total print Time:
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s
- STATIC_PAIR_P(MSG_INFO_PRINT_LONGEST, "", SS_LEFT); // Longest job time:
- STATIC_ITEM("> ", SS_LEFT, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s
+ STATIC_ITEM(MSG_INFO_PRINT_LONGEST, SS_LEFT); // Longest job time:
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s
- STATIC_PAIR_P(MSG_INFO_PRINT_FILAMENT, "", SS_LEFT); // Extruded total:
+ STATIC_ITEM(MSG_INFO_PRINT_FILAMENT, SS_LEFT); // Extruded total:
sprintf_P(buffer, PSTR("%ld.%im"), long(stats.filamentUsed / 1000), int16_t(stats.filamentUsed / 100) % 10);
- STATIC_ITEM("> ", SS_LEFT, buffer); // > 125m
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, buffer); // > 125m
+
+ #if SERVICE_INTERVAL_1 > 0 || SERVICE_INTERVAL_2 > 0 || SERVICE_INTERVAL_3 > 0
+ strcpy_P(buffer, GET_TEXT(MSG_SERVICE_IN));
+ #endif
#if SERVICE_INTERVAL_1 > 0
- STATIC_ITEM(SERVICE_NAME_1 MSG_SERVICE_IN, SS_LEFT); // Service X in:
- STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s
+ STATIC_ITEM_P(PSTR(SERVICE_NAME_1 " "), SS_LEFT, buffer); // Service X in:
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s
#endif
#if SERVICE_INTERVAL_2 > 0
- STATIC_ITEM(SERVICE_NAME_2 MSG_SERVICE_IN, SS_LEFT);
- STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService2).toString(buffer));
+ STATIC_ITEM_P(PSTR(SERVICE_NAME_2 " "), SS_LEFT, buffer);
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService2).toString(buffer));
#endif
#if SERVICE_INTERVAL_3 > 0
- STATIC_ITEM(SERVICE_NAME_3 MSG_SERVICE_IN, SS_LEFT);
- STATIC_ITEM("> ", SS_LEFT, duration_t(stats.nextService3).toString(buffer));
+ STATIC_ITEM_P(PSTR(SERVICE_NAME_3 " "), SS_LEFT, buffer);
+ STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService3).toString(buffer));
#endif
END_SCREEN();
@@ -99,61 +103,61 @@ void menu_info_thermistors() {
#endif
);
- char buffer[21]; // for STATIC_PAIR_P
+ char buffer[21]; // For macro usage
START_SCREEN();
#if EXTRUDERS
#define THERMISTOR_ID TEMP_SENSOR_0
#include "../thermistornames.h"
- STATIC_ITEM("T0: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E0 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
#endif
#if TEMP_SENSOR_1 != 0
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_1
#include "../thermistornames.h"
- STATIC_ITEM("T1: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E1 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
#endif
#if TEMP_SENSOR_2 != 0
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_2
#include "../thermistornames.h"
- STATIC_ITEM("T2: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E2 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
#endif
#if TEMP_SENSOR_3 != 0
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_3
#include "../thermistornames.h"
- STATIC_ITEM("T3: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E3 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
#endif
#if TEMP_SENSOR_4 != 0
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_4
#include "../thermistornames.h"
- STATIC_ITEM("T4: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E4 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
#endif
#if TEMP_SENSOR_5 != 0
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_5
#include "../thermistornames.h"
- STATIC_ITEM("T5: " THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR(LCD_STR_E5 ": " THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
#endif
#if EXTRUDERS
@@ -174,9 +178,9 @@ void menu_info_thermistors() {
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_BED
#include "../thermistornames.h"
- STATIC_ITEM("TBed:" THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR("BED:" THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
STATIC_ITEM(
#if WATCH_BED
MSG_INFO_RUNAWAY_ON
@@ -193,9 +197,9 @@ void menu_info_thermistors() {
#undef THERMISTOR_ID
#define THERMISTOR_ID TEMP_SENSOR_CHAMBER
#include "../thermistornames.h"
- STATIC_ITEM("TCham:" THERMISTOR_NAME, SS_INVERT);
- STATIC_PAIR_P(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
- STATIC_PAIR_P(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
+ STATIC_ITEM_P(PSTR("CHAM:" THERMISTOR_NAME), SS_INVERT);
+ VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
+ VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
STATIC_ITEM(
#if WATCH_CHAMBER
MSG_INFO_RUNAWAY_ON
@@ -220,16 +224,16 @@ void menu_info_board() {
#endif
);
- char buffer[21]; // for STATIC_PAIR_P
+ char buffer[21]; // For macro usage
START_SCREEN();
- STATIC_ITEM(BOARD_INFO_NAME, SS_CENTER|SS_INVERT); // MyPrinterController
+ STATIC_ITEM_P(PSTR(BOARD_INFO_NAME), SS_CENTER|SS_INVERT); // MyPrinterController
#ifdef BOARD_WEBSITE_URL
- STATIC_ITEM(BOARD_WEBSITE_URL, SS_LEFT); // www.my3dprinter.com
+ STATIC_ITEM_P(PSTR(BOARD_WEBSITE_URL), SS_LEFT); // www.my3dprinter.com
#endif
- STATIC_PAIR_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
- STATIC_PAIR_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER); // Protocol: 1.0
- STATIC_PAIR_P(MSG_INFO_PSU, PSU_NAME, SS_CENTER);
+ VALUE_ITEM_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
+ VALUE_ITEM_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER); // Protocol: 1.0
+ VALUE_ITEM_P(MSG_INFO_PSU, PSU_NAME, SS_CENTER);
END_SCREEN();
}
@@ -259,12 +263,13 @@ void menu_info_board() {
#endif
);
START_SCREEN();
- STATIC_ITEM(MSG_MARLIN, SS_CENTER|SS_INVERT); // Marlin
- STATIC_ITEM(SHORT_BUILD_VERSION); // x.x.x-Branch
- STATIC_ITEM(STRING_DISTRIBUTION_DATE); // YYYY-MM-DD HH:MM
- STATIC_ITEM(MACHINE_NAME); // My3DPrinter
- STATIC_ITEM(WEBSITE_URL); // www.my3dprinter.com
- STATIC_ITEM(MSG_INFO_EXTRUDERS ": " STRINGIFY(EXTRUDERS)); // Extruders: 2
+ STATIC_ITEM_P(PSTR(MSG_MARLIN), SS_CENTER|SS_INVERT); // Marlin
+ STATIC_ITEM_P(PSTR(SHORT_BUILD_VERSION)); // x.x.x-Branch
+ STATIC_ITEM_P(PSTR(STRING_DISTRIBUTION_DATE)); // YYYY-MM-DD HH:MM
+ STATIC_ITEM_P(PSTR(MACHINE_NAME)); // My3DPrinter
+ STATIC_ITEM_P(PSTR(WEBSITE_URL)); // www.my3dprinter.com
+ char buffer[21];
+ VALUE_ITEM_P(MSG_INFO_EXTRUDERS, STRINGIFY(EXTRUDERS), SS_CENTER); // Extruders: 2
#if ENABLED(AUTO_BED_LEVELING_3POINT)
STATIC_ITEM(MSG_3POINT_LEVELING); // 3-Point Leveling
#elif ENABLED(AUTO_BED_LEVELING_LINEAR)
diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp
index b1e9d3a504..6bba3873b3 100644
--- a/Marlin/src/lcd/menu/menu_main.cpp
+++ b/Marlin/src/lcd/menu/menu_main.cpp
@@ -44,7 +44,7 @@
#if MACHINE_CAN_STOP
void menu_abort_confirm() {
- do_select_screen(PSTR(MSG_BUTTON_STOP), PSTR(MSG_BACK), ui.abort_print, ui.goto_previous_screen, PSTR(MSG_STOP_PRINT), nullptr, PSTR("?"));
+ do_select_screen(GET_TEXT(MSG_BUTTON_STOP), GET_TEXT(MSG_BACK), ui.abort_print, ui.goto_previous_screen, GET_TEXT(MSG_STOP_PRINT), nullptr, PSTR("?"));
}
#endif // MACHINE_CAN_STOP
@@ -238,13 +238,13 @@ void menu_main() {
#if HAS_SERVICE_INTERVALS
#if SERVICE_INTERVAL_1 > 0
- SUBMENU(SERVICE_NAME_1, menu_service1);
+ SUBMENU_P(PSTR(SERVICE_NAME_1), menu_service1);
#endif
#if SERVICE_INTERVAL_2 > 0
- SUBMENU(SERVICE_NAME_2, menu_service2);
+ SUBMENU_P(PSTR(SERVICE_NAME_2), menu_service2);
#endif
#if SERVICE_INTERVAL_3 > 0
- SUBMENU(SERVICE_NAME_3, menu_service3);
+ SUBMENU_P(PSTR(SERVICE_NAME_3), menu_service3);
#endif
#endif
diff --git a/Marlin/src/lcd/menu/menu_media.cpp b/Marlin/src/lcd/menu/menu_media.cpp
index d05ec01c82..11c57da605 100644
--- a/Marlin/src/lcd/menu/menu_media.cpp
+++ b/Marlin/src/lcd/menu/menu_media.cpp
@@ -80,9 +80,9 @@ inline void sdcard_start_selected_file() {
buffer[0] = ' ';
strcpy(buffer + 1, longest);
do_select_screen(
- PSTR(MSG_BUTTON_PRINT), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_PRINT), GET_TEXT(MSG_BUTTON_CANCEL),
sdcard_start_selected_file, ui.goto_previous_screen,
- PSTR(MSG_START_PRINT), buffer, PSTR("?")
+ GET_TEXT(MSG_START_PRINT), buffer, PSTR("?")
);
}
@@ -134,11 +134,11 @@ void menu_media() {
BACK_ITEM(MSG_MAIN);
if (card.flag.workDirIsRoot) {
#if !PIN_EXISTS(SD_DETECT)
- ACTION_ITEM(LCD_STR_REFRESH MSG_REFRESH, [](){ encoderTopLine = 0; card.mount(); });
+ ACTION_ITEM(MSG_REFRESH, [](){ encoderTopLine = 0; card.mount(); });
#endif
}
else if (card.isMounted())
- ACTION_ITEM(LCD_STR_FOLDER "..", lcd_sd_updir);
+ ACTION_ITEM_P(PSTR(LCD_STR_FOLDER ".."), lcd_sd_updir);
if (ui.should_draw()) for (uint16_t i = 0; i < fileCnt; i++) {
if (_menuLineNr == _thisItemNr) {
diff --git a/Marlin/src/lcd/menu/menu_mixer.cpp b/Marlin/src/lcd/menu/menu_mixer.cpp
index c89e67d368..bc3d2798f7 100644
--- a/Marlin/src/lcd/menu/menu_mixer.cpp
+++ b/Marlin/src/lcd/menu/menu_mixer.cpp
@@ -50,7 +50,8 @@
}
if (ui.should_draw()) {
char tmp[21];
- sprintf_P(tmp, PSTR(MSG_START_Z ": %4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
+ strcpy_P(tmp, GET_TEXT(MSG_START_Z));
+ sprintf_P(tmp + strlen(tmp), PSTR(": %4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
SETCURSOR(2, (LCD_HEIGHT - 1) / 2);
LCDPRINT(tmp);
}
@@ -75,7 +76,8 @@
if (ui.should_draw()) {
char tmp[21];
- sprintf_P(tmp, PSTR(MSG_END_Z ": %4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
+ strcpy_P(tmp, GET_TEXT(MSG_END_Z));
+ sprintf_P(tmp + strlen(tmp), PSTR(": %4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
SETCURSOR(2, (LCD_HEIGHT - 1) / 2);
LCDPRINT(tmp);
}
@@ -101,13 +103,13 @@
char tmp[18];
- SUBMENU(MSG_START_Z ":", lcd_mixer_gradient_z_start_edit);
+ SUBMENU(MSG_START_Z, lcd_mixer_gradient_z_start_edit);
MENU_ITEM_ADDON_START(9);
sprintf_P(tmp, PSTR("%4d.%d mm"), int(mixer.gradient.start_z), int(mixer.gradient.start_z * 10) % 10);
LCDPRINT(tmp);
MENU_ITEM_ADDON_END();
- SUBMENU(MSG_END_Z ":", lcd_mixer_gradient_z_end_edit);
+ SUBMENU(MSG_END_Z, lcd_mixer_gradient_z_end_edit);
MENU_ITEM_ADDON_START(9);
sprintf_P(tmp, PSTR("%4d.%d mm"), int(mixer.gradient.end_z), int(mixer.gradient.end_z * 10) % 10);
LCDPRINT(tmp);
@@ -122,9 +124,11 @@ static uint8_t v_index;
#if DUAL_MIXING_EXTRUDER
void _lcd_draw_mix(const uint8_t y) {
- char tmp[21];
- sprintf_P(tmp, PSTR(MSG_MIX ": %3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1]));
+ char tmp[10]; // "100%_100%"
SETCURSOR(2, y);
+ lcd_put_u8str_P(GET_TEXT(MSG_MIX));
+ SETCURSOR(LCD_WIDTH - 9, y);
+ sprintf_P(tmp, PSTR("%3d%% %3d%%"), int(mixer.mix[0]), int(mixer.mix[1]));
LCDPRINT(tmp);
}
#endif
@@ -158,7 +162,7 @@ void lcd_mixer_mix_edit() {
#if CHANNEL_MIX_EDITING
- #define EDIT_COLOR(N) EDIT_ITEM_FAST(float52, MSG_MIX_COMPONENT " " STRINGIFY(N), &mixer.collector[N-1], 0, 10);
+ #define EDIT_COLOR(N) EDIT_ITEM_FAST(float52, MSG_MIX_COMPONENT_##N, &mixer.collector[N-1], 0, 10);
START_MENU();
BACK_ITEM(MSG_MIXER);
@@ -250,14 +254,14 @@ void lcd_mixer_mix_edit() {
//
void menu_mixer_vtools_reset_confirm() {
do_select_screen(
- PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
[]{
mixer.reset_vtools();
LCD_MESSAGEPGM(MSG_VTOOLS_RESET);
ui.return_to_status();
},
ui.goto_previous_screen,
- PSTR(MSG_RESET_VTOOLS), nullptr, PSTR("?")
+ GET_TEXT(MSG_RESET_VTOOLS), nullptr, PSTR("?")
);
}
diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp
index 0412d86a6f..aa6eb27ea1 100644
--- a/Marlin/src/lcd/menu/menu_mmu2.cpp
+++ b/Marlin/src/lcd/menu/menu_mmu2.cpp
@@ -38,7 +38,7 @@ bool mmuMenuWait;
void _mmu2_load_filamentToNozzle(uint8_t index) {
ui.reset_status();
ui.return_to_status();
- ui.status_printf_P(0, PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
+ ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
if (mmu2.load_filament_to_nozzle(index)) ui.reset_status();
}
@@ -49,7 +49,7 @@ inline void action_mmu2_load_filament_to_nozzle(const uint8_t tool) {
void _mmu2_load_filament(uint8_t index) {
ui.return_to_status();
- ui.status_printf_P(0, PSTR(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
+ ui.status_printf_P(0, GET_TEXT(MSG_MMU2_LOADING_FILAMENT), int(index + 1));
mmu2.load_filament(index);
ui.reset_status();
}
@@ -89,7 +89,7 @@ void menu_mmu2_load_to_nozzle() {
void _mmu2_eject_filament(uint8_t index) {
ui.reset_status();
ui.return_to_status();
- ui.status_printf_P(0, PSTR(MSG_MMU2_EJECTING_FILAMENT), int(index + 1));
+ ui.status_printf_P(0, GET_TEXT(MSG_MMU2_EJECTING_FILAMENT), int(index + 1));
if (mmu2.eject_filament(index, true)) ui.reset_status();
}
@@ -162,7 +162,7 @@ void menu_mmu2_pause() {
currentTool = mmu2.get_current_tool();
START_MENU();
#if LCD_HEIGHT > 2
- STATIC_ITEM(MSG_MMU2_FILAMENT_CHANGE_HEADER, SS_CENTER|SS_INVERT);
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, SS_CENTER|SS_INVERT);
#endif
ACTION_ITEM(MSG_MMU2_RESUME, [](){ mmuMenuWait = false; });
ACTION_ITEM(MSG_MMU2_UNLOAD_FILAMENT, [](){ mmu2.unload(); });
diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp
index 6a3f7cec43..7861dfb7ea 100644
--- a/Marlin/src/lcd/menu/menu_motion.cpp
+++ b/Marlin/src/lcd/menu/menu_motion.cpp
@@ -155,9 +155,9 @@ static void _lcd_move_xyz(PGM_P name, AxisEnum axis) {
draw_edit_screen(name, move_menu_scale >= 0.1f ? ftostr41sign(pos) : ftostr43sign(pos));
}
}
-void lcd_move_x() { _lcd_move_xyz(PSTR(MSG_MOVE_X), X_AXIS); }
-void lcd_move_y() { _lcd_move_xyz(PSTR(MSG_MOVE_Y), Y_AXIS); }
-void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
+void lcd_move_x() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_X), X_AXIS); }
+void lcd_move_y() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Y), Y_AXIS); }
+void lcd_move_z() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_Z), Z_AXIS); }
#if E_MANUAL
@@ -185,21 +185,19 @@ void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS); }
ui.encoderPosition = 0;
}
if (ui.should_draw()) {
- PGM_P pos_label;
- #if E_MANUAL == 1
- pos_label = PSTR(MSG_MOVE_E);
- #else
+ PGM_P pos_label = GET_TEXT(MSG_MOVE_E);
+ #if E_MANUAL > 1
switch (eindex) {
- default: pos_label = PSTR(MSG_MOVE_E LCD_STR_N0); break;
- case 1: pos_label = PSTR(MSG_MOVE_E LCD_STR_N1); break;
+ default: pos_label = GET_TEXT(MSG_MOVE_E0); break;
+ case 1: pos_label = GET_TEXT(MSG_MOVE_E1); break;
#if E_MANUAL > 2
- case 2: pos_label = PSTR(MSG_MOVE_E LCD_STR_N2); break;
+ case 2: pos_label = GET_TEXT(MSG_MOVE_E2); break;
#if E_MANUAL > 3
- case 3: pos_label = PSTR(MSG_MOVE_E LCD_STR_N3); break;
+ case 3: pos_label = GET_TEXT(MSG_MOVE_E3); break;
#if E_MANUAL > 4
- case 4: pos_label = PSTR(MSG_MOVE_E LCD_STR_N4); break;
+ case 4: pos_label = GET_TEXT(MSG_MOVE_E4); break;
#if E_MANUAL > 5
- case 5: pos_label = PSTR(MSG_MOVE_E LCD_STR_N5); break;
+ case 5: pos_label = GET_TEXT(MSG_MOVE_E5); break;
#endif // E_MANUAL > 5
#endif // E_MANUAL > 4
#endif // E_MANUAL > 3
@@ -263,13 +261,13 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
SUBMENU(MSG_MOVE_1MM, [](){ _goto_manual_move( 1); });
SUBMENU(MSG_MOVE_01MM, [](){ _goto_manual_move( 0.1f); });
if (axis == Z_AXIS && (SHORT_MANUAL_Z_MOVE) > 0.0f && (SHORT_MANUAL_Z_MOVE) < 0.1f) {
- SUBMENU("", []{ _goto_manual_move(float(SHORT_MANUAL_Z_MOVE)); });
+ SUBMENU_P(PSTR(""), []{ _goto_manual_move(float(SHORT_MANUAL_Z_MOVE)); });
MENU_ITEM_ADDON_START(1);
char tmp[20], numstr[10];
// Determine digits needed right of decimal
const uint8_t digs = !UNEAR_ZERO((SHORT_MANUAL_Z_MOVE) * 1000 - int((SHORT_MANUAL_Z_MOVE) * 1000)) ? 4 :
!UNEAR_ZERO((SHORT_MANUAL_Z_MOVE) * 100 - int((SHORT_MANUAL_Z_MOVE) * 100)) ? 3 : 2;
- sprintf_P(tmp, PSTR(MSG_MOVE_Z_DIST), dtostrf(SHORT_MANUAL_Z_MOVE, 1, digs, numstr));
+ sprintf_P(tmp, GET_TEXT(MSG_MOVE_Z_DIST), dtostrf(SHORT_MANUAL_Z_MOVE, 1, digs, numstr));
LCDPRINT(tmp);
MENU_ITEM_ADDON_END();
}
@@ -316,35 +314,35 @@ void menu_move() {
#if EXTRUDERS >= 4
switch (active_extruder) {
- case 0: GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1")); break;
- case 1: GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0")); break;
- case 2: GCODES_ITEM(MSG_SELECT " " LCD_STR_E3, PSTR("T3")); break;
- case 3: GCODES_ITEM(MSG_SELECT " " LCD_STR_E2, PSTR("T2")); break;
+ case 0: GCODES_ITEM(MSG_SELECT_E1, PSTR("T1")); break;
+ case 1: GCODES_ITEM(MSG_SELECT_E0, PSTR("T0")); break;
+ case 2: GCODES_ITEM(MSG_SELECT_E3, PSTR("T3")); break;
+ case 3: GCODES_ITEM(MSG_SELECT_E2, PSTR("T2")); break;
#if EXTRUDERS == 6
- case 4: GCODES_ITEM(MSG_SELECT " " LCD_STR_E5, PSTR("T5")); break;
- case 5: GCODES_ITEM(MSG_SELECT " " LCD_STR_E4, PSTR("T4")); break;
+ case 4: GCODES_ITEM(MSG_SELECT_E5, PSTR("T5")); break;
+ case 5: GCODES_ITEM(MSG_SELECT_E4, PSTR("T4")); break;
#endif
}
#elif EXTRUDERS == 3
if (active_extruder < 2) {
if (active_extruder)
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
+ GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
else
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
+ GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
}
#else
if (active_extruder)
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
+ GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
else
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
+ GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
#endif
#elif ENABLED(DUAL_X_CARRIAGE)
if (active_extruder)
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E0, PSTR("T0"));
+ GCODES_ITEM(MSG_SELECT_E0, PSTR("T0"));
else
- GCODES_ITEM(MSG_SELECT " " LCD_STR_E1, PSTR("T1"));
+ GCODES_ITEM(MSG_SELECT_E1, PSTR("T1"));
#endif
@@ -353,7 +351,7 @@ void menu_move() {
// The current extruder
SUBMENU(MSG_MOVE_E, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(); }, -1); });
- #define SUBMENU_MOVE_E(N) SUBMENU(MSG_MOVE_E LCD_STR_N##N, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(N); }, N); });
+ #define SUBMENU_MOVE_E(N) SUBMENU(MSG_MOVE_E##N, [](){ _menu_move_distance(E_AXIS, [](){ lcd_move_e(N); }, N); });
#if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
diff --git a/Marlin/src/lcd/menu/menu_service.cpp b/Marlin/src/lcd/menu/menu_service.cpp
index fb7f05c905..0d305d0281 100644
--- a/Marlin/src/lcd/menu/menu_service.cpp
+++ b/Marlin/src/lcd/menu/menu_service.cpp
@@ -45,10 +45,10 @@ inline void _service_reset(const int index) {
char sram[30];
strncpy_P(sram, PSTR(SERVICE_NAME_1), 29);
do_select_screen(
- PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
[]{ _service_reset(1); },
ui.goto_previous_screen,
- PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
+ GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
);
}
#endif
@@ -58,10 +58,10 @@ inline void _service_reset(const int index) {
char sram[30];
strncpy_P(sram, PSTR(SERVICE_NAME_2), 29);
do_select_screen(
- PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
[]{ _service_reset(2); },
ui.goto_previous_screen,
- PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
+ GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
);
}
#endif
@@ -71,10 +71,10 @@ inline void _service_reset(const int index) {
char sram[30];
strncpy_P(sram, PSTR(SERVICE_NAME_3), 29);
do_select_screen(
- PSTR(MSG_BUTTON_RESET), PSTR(MSG_BUTTON_CANCEL),
+ GET_TEXT(MSG_BUTTON_RESET), GET_TEXT(MSG_BUTTON_CANCEL),
[]{ _service_reset(3); },
ui.goto_previous_screen,
- PSTR(MSG_SERVICE_RESET), sram, PSTR("?")
+ GET_TEXT(MSG_SERVICE_RESET), sram, PSTR("?")
);
}
#endif
diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp
index 6d5f3933e3..0d9d16bffe 100644
--- a/Marlin/src/lcd/menu/menu_temperature.cpp
+++ b/Marlin/src/lcd/menu/menu_temperature.cpp
@@ -87,14 +87,14 @@ void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb
#if HAS_TEMP_HOTEND || HAS_HEATED_BED
#define _PREHEAT_ITEMS(M,N) do{ \
- ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_both(M-1, N); }); \
- ACTION_ITEM(MSG_PREHEAT_##M##_END " " LCD_STR_E##N, [](){ _preheat_end(M-1, N); }); \
+ ACTION_ITEM(MSG_PREHEAT_##M##_H##N, [](){ _preheat_both(M-1, N); }); \
+ ACTION_ITEM(MSG_PREHEAT_##M##_END_E##N, [](){ _preheat_end(M-1, N); }); \
}while(0)
#if HAS_HEATED_BED
#define PREHEAT_ITEMS(M,N) _PREHEAT_ITEMS(M,N)
#else
#define PREHEAT_ITEMS(M,N) \
- ACTION_ITEM(MSG_PREHEAT_##M##_N LCD_STR_N##N, [](){ _preheat_end(M-1, N); })
+ ACTION_ITEM(MSG_PREHEAT_##M##_H##N, [](){ _preheat_end(M-1, N); })
#endif
void menu_preheat_m1() {
@@ -196,7 +196,7 @@ void menu_temperature() {
#if HOTENDS == 1
EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
#elif HOTENDS > 1
- #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
+ #define EDIT_TARGET(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE_##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
EDIT_TARGET(0);
EDIT_TARGET(1);
#if HOTENDS > 2
@@ -237,23 +237,23 @@ void menu_temperature() {
#if FAN_COUNT > 0
#if HAS_FAN0
editable.uint8 = thermalManager.fan_speed[0];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_1, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_1, &thermalManager.new_fan_speed[0], 3, 255);
#endif
#endif
#if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
editable.uint8 = thermalManager.fan_speed[1];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_2, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_2, &thermalManager.new_fan_speed[1], 3, 255);
#endif
#endif
#if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
editable.uint8 = thermalManager.fan_speed[2];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_3, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_3, &thermalManager.new_fan_speed[2], 3, 255);
#endif
#endif
#endif // FAN_COUNT > 0
diff --git a/Marlin/src/lcd/menu/menu_tmc.cpp b/Marlin/src/lcd/menu/menu_tmc.cpp
index 4d6f539e2d..ee74b95171 100644
--- a/Marlin/src/lcd/menu/menu_tmc.cpp
+++ b/Marlin/src/lcd/menu/menu_tmc.cpp
@@ -32,7 +32,7 @@
#include "../../module/stepper/indirection.h"
#include "../../feature/tmc_util.h"
-#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM(uint16_4, MSG, &stepper##ST.val_mA, 100, 3000, [](){ stepper##ST.refresh_stepper_current(); })
+#define TMC_EDIT_STORED_I_RMS(ST,MSG) EDIT_ITEM_P(uint16_4, PSTR(MSG), &stepper##ST.val_mA, 100, 3000, [](){ stepper##ST.refresh_stepper_current(); })
void menu_tmc_current() {
START_MENU();
@@ -81,7 +81,7 @@ void menu_tmc_current() {
#if ENABLED(HYBRID_THRESHOLD)
- #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM(uint8, MSG, &stepper##ST.stored.hybrid_thrs, 0, 255, [](){ stepper##ST.refresh_hybrid_thrs(); });
+ #define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) EDIT_ITEM_P(uint8, PSTR(MSG), &stepper##ST.stored.hybrid_thrs, 0, 255, [](){ stepper##ST.refresh_hybrid_thrs(); });
void menu_tmc_hybrid_thrs() {
START_MENU();
@@ -132,7 +132,7 @@ void menu_tmc_current() {
#if ENABLED(SENSORLESS_HOMING)
- #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, [](){ stepper##ST.refresh_homing_thrs(); });
+ #define TMC_EDIT_STORED_SGT(ST) EDIT_ITEM_P(int4, PSTR(MSG_##ST), &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, [](){ stepper##ST.refresh_homing_thrs(); });
void menu_tmc_homing_thrs() {
START_MENU();
@@ -156,7 +156,7 @@ void menu_tmc_current() {
#if HAS_STEALTHCHOP
- #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM(bool, MSG, &stepper##ST.stored.stealthChop_enabled, [](){ stepper##ST.refresh_stepping_mode(); })
+ #define TMC_EDIT_STEP_MODE(ST, MSG) EDIT_ITEM_P(bool, PSTR(MSG), &stepper##ST.stored.stealthChop_enabled, [](){ stepper##ST.refresh_stepping_mode(); })
void menu_tmc_step_mode() {
START_MENU();
diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp
index b096cd75bb..e89d18995c 100644
--- a/Marlin/src/lcd/menu/menu_tune.cpp
+++ b/Marlin/src/lcd/menu/menu_tune.cpp
@@ -74,7 +74,8 @@
#else
lcd_moveto(0, LCD_HEIGHT - 1);
#endif
- lcd_put_u8str_P(PSTR(MSG_BABYSTEP_TOTAL ":"));
+ lcd_put_u8str_P(GET_TEXT(MSG_BABYSTEP_TOTAL));
+ lcd_put_wchar(':');
lcd_put_u8str(ftostr54sign(spm * babystep.axis_total[BS_TOTAL_AXIS(axis)]));
}
#endif
@@ -88,12 +89,12 @@
}
#if ENABLED(BABYSTEP_XY)
- void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
- void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
+ void _lcd_babystep_x() { _lcd_babystep(X_AXIS, GET_TEXT(MSG_BABYSTEP_X)); }
+ void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, GET_TEXT(MSG_BABYSTEP_Y)); }
#endif
#if DISABLED(BABYSTEP_ZPROBE_OFFSET)
- void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
+ void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, GET_TEXT(MSG_BABYSTEP_Z)); }
void lcd_babystep_z() { _lcd_babystep_go(_lcd_babystep_z); }
#endif
@@ -122,7 +123,7 @@ void menu_tune() {
#if HOTENDS == 1
EDIT_ITEM_FAST(int3, MSG_NOZZLE, &thermalManager.temp_hotend[0].target, 0, HEATER_0_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(0); });
#elif HOTENDS > 1
- #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE LCD_STR_N##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
+ #define EDIT_NOZZLE(N) EDIT_ITEM_FAST(int3, MSG_NOZZLE_##N, &thermalManager.temp_hotend[N].target, 0, HEATER_##N##_MAXTEMP - 15, [](){ thermalManager.start_watching_hotend(N); })
EDIT_NOZZLE(0);
EDIT_NOZZLE(1);
#if HOTENDS > 2
@@ -155,24 +156,31 @@ void menu_tune() {
//
#if FAN_COUNT > 0
#if HAS_FAN0
+ #if FAN_COUNT == 1
+ #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED
+ #define MSG_FIRST_EXTRA_FAN_SPEED MSG_EXTRA_FAN_SPEED
+ #else
+ #define MSG_FIRST_FAN_SPEED MSG_FAN_SPEED_1
+ #define MSG_FIRST_EXTRA_FAN_SPEED MSG_EXTRA_FAN_SPEED_1
+ #endif
editable.uint8 = thermalManager.fan_speed[0];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FIRST_FAN_SPEED, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(0, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &thermalManager.new_fan_speed[0], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_FIRST_EXTRA_FAN_SPEED, &thermalManager.new_fan_speed[0], 3, 255);
#endif
#endif
#if HAS_FAN1 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 1)
editable.uint8 = thermalManager.fan_speed[1];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 2", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_2, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(1, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 2", &thermalManager.new_fan_speed[1], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_2, &thermalManager.new_fan_speed[1], 3, 255);
#endif
#endif
#if HAS_FAN2 || (ENABLED(SINGLENOZZLE) && EXTRUDERS > 2)
editable.uint8 = thermalManager.fan_speed[2];
- EDIT_ITEM_FAST(percent, MSG_FAN_SPEED " 3", &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
+ EDIT_ITEM_FAST(percent, MSG_FAN_SPEED_3, &editable.uint8, 0, 255, [](){ thermalManager.set_fan_speed(2, editable.uint8); });
#if ENABLED(EXTRA_FAN_SPEED)
- EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED " 3", &thermalManager.new_fan_speed[2], 3, 255);
+ EDIT_ITEM_FAST(percent, MSG_EXTRA_FAN_SPEED_3, &thermalManager.new_fan_speed[2], 3, 255);
#endif
#endif
#endif // FAN_COUNT > 0
@@ -185,7 +193,7 @@ void menu_tune() {
EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[0], 10, 999, [](){ planner.refresh_e_factor(0); });
#elif EXTRUDERS
EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], 10, 999, [](){ planner.refresh_e_factor(active_extruder); });
- #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW LCD_STR_N##N, &planner.flow_percentage[N], 10, 999, [](){ planner.refresh_e_factor(N); })
+ #define EDIT_FLOW(N) EDIT_ITEM(int3, MSG_FLOW_##N, &planner.flow_percentage[N], 10, 999, [](){ planner.refresh_e_factor(N); })
EDIT_FLOW(0);
EDIT_FLOW(1);
#if EXTRUDERS > 2
diff --git a/Marlin/src/lcd/menu/menu_ubl.cpp b/Marlin/src/lcd/menu/menu_ubl.cpp
index 2962d65d06..74a51f0b7b 100644
--- a/Marlin/src/lcd/menu/menu_ubl.cpp
+++ b/Marlin/src/lcd/menu/menu_ubl.cpp
@@ -79,7 +79,7 @@ void _lcd_mesh_edit_NOP() {
float lcd_mesh_edit() {
ui.goto_screen(_lcd_mesh_edit_NOP);
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
- _lcd_mesh_fine_tune(PSTR(MSG_MESH_EDITOR));
+ _lcd_mesh_fine_tune(GET_TEXT(MSG_MESH_EDITOR));
return mesh_edit_value;
}
@@ -89,7 +89,7 @@ void lcd_mesh_edit_setup(const float &initial) {
}
void _lcd_z_offset_edit() {
- _lcd_mesh_fine_tune(PSTR(MSG_UBL_Z_OFFSET));
+ _lcd_mesh_fine_tune(GET_TEXT(MSG_UBL_Z_OFFSET));
}
float lcd_z_offset_edit() {
@@ -358,7 +358,7 @@ void _lcd_ubl_load_mesh_cmd() {
char ubl_lcd_gcode[25];
sprintf_P(ubl_lcd_gcode, PSTR("G29 L%i"), ubl_storage_slot);
lcd_enqueue_one_now(ubl_lcd_gcode);
- sprintf_P(ubl_lcd_gcode, PSTR("M117 " MSG_MESH_LOADED), ubl_storage_slot);
+ sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_LOADED), ubl_storage_slot);
lcd_enqueue_one_now(ubl_lcd_gcode);
}
@@ -369,7 +369,7 @@ void _lcd_ubl_save_mesh_cmd() {
char ubl_lcd_gcode[25];
sprintf_P(ubl_lcd_gcode, PSTR("G29 S%i"), ubl_storage_slot);
lcd_enqueue_one_now(ubl_lcd_gcode);
- sprintf_P(ubl_lcd_gcode, PSTR("M117 " MSG_MESH_SAVED), ubl_storage_slot);
+ sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_SAVED), ubl_storage_slot);
lcd_enqueue_one_now(ubl_lcd_gcode);
}
@@ -578,13 +578,13 @@ void _menu_ubl_tools() {
void _lcd_ubl_step_by_step() {
START_MENU();
BACK_ITEM(MSG_UBL_LEVEL_BED);
- GCODES_ITEM("1 " MSG_UBL_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
- GCODES_ITEM("2 " MSG_UBL_SMART_FILLIN, PSTR("G29 P3 T0"));
- SUBMENU("3 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
- GCODES_ITEM("4 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
- SUBMENU("5 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
- GCODES_ITEM("6 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
- ACTION_ITEM("7 " MSG_UBL_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
+ GCODES_ITEM(MSG_UBL_1_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
+ GCODES_ITEM(MSG_UBL_2_SMART_FILLIN, PSTR("G29 P3 T0"));
+ SUBMENU(MSG_UBL_3_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
+ GCODES_ITEM(MSG_UBL_4_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
+ SUBMENU(MSG_UBL_5_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
+ GCODES_ITEM(MSG_UBL_6_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
+ ACTION_ITEM(MSG_UBL_7_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
END_MENU();
}
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index cb5d8ad8fd..fd762450b9 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -44,19 +44,15 @@
#if HAS_SPI_LCD
#if ENABLED(STATUS_MESSAGE_SCROLLING)
uint8_t MarlinUI::status_scroll_offset; // = 0
- #if LONG_FILENAME_LENGTH > CHARSIZE * 2 * (LCD_WIDTH)
- #define MAX_MESSAGE_LENGTH LONG_FILENAME_LENGTH
- #else
- #define MAX_MESSAGE_LENGTH CHARSIZE * 2 * (LCD_WIDTH)
- #endif
+ constexpr uint8_t MAX_MESSAGE_LENGTH = max(LONG_FILENAME_LENGTH, MAX_LANG_CHARSIZE * 2 * (LCD_WIDTH));
#else
- #define MAX_MESSAGE_LENGTH CHARSIZE * (LCD_WIDTH)
+ constexpr uint8_t MAX_MESSAGE_LENGTH = MAX_LANG_CHARSIZE * (LCD_WIDTH);
#endif
#elif ENABLED(EXTENSIBLE_UI)
- #define MAX_MESSAGE_LENGTH 63
+ constexpr uint8_t MAX_MESSAGE_LENGTH = 63;
#endif
-#ifdef MAX_MESSAGE_LENGTH
+#if HAS_SPI_LCD || ENABLED(EXTENSIBLE_UI)
uint8_t MarlinUI::alert_level; // = 0
char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1];
#endif
@@ -590,9 +586,12 @@ void MarlinUI::status_screen() {
draw_status_screen();
}
-void MarlinUI::kill_screen(PGM_P lcd_msg) {
+void MarlinUI::kill_screen(PGM_P lcd_error, PGM_P lcd_component) {
init();
- set_alert_status_P(lcd_msg);
+ status_printf_P(1, PSTR(S_FMT ": " S_FMT), lcd_error, lcd_component);
+ #if HAS_LCD_MENU
+ return_to_status();
+ #endif
// RED ALERT. RED ALERT.
#ifdef LED_BACKLIGHT_TIMEOUT
@@ -843,13 +842,13 @@ void MarlinUI::update() {
if (old_sd_status == 2)
card.beginautostart(); // Initial boot
else
- set_status_P(PSTR(MSG_MEDIA_INSERTED));
+ set_status_P(GET_TEXT(MSG_MEDIA_INSERTED));
}
#if PIN_EXISTS(SD_DETECT)
else {
card.release();
if (old_sd_status != 2) {
- set_status_P(PSTR(MSG_MEDIA_REMOVED));
+ set_status_P(GET_TEXT(MSG_MEDIA_REMOVED));
#if HAS_LCD_MENU
return_to_status();
#endif
@@ -1428,14 +1427,14 @@ void MarlinUI::update() {
#include "../Marlin.h"
#include "../module/printcounter.h"
- static const char print_paused[] PROGMEM = MSG_PRINT_PAUSED;
+ PGM_P print_paused = GET_TEXT(MSG_PRINT_PAUSED);
/**
* Reset the status message
*/
void MarlinUI::reset_status() {
- static const char printing[] PROGMEM = MSG_PRINTING;
- static const char welcome[] PROGMEM = WELCOME_MSG;
+ PGM_P printing = GET_TEXT(MSG_PRINTING);
+ PGM_P welcome = GET_TEXT(WELCOME_MSG);
#if SERVICE_INTERVAL_1 > 0
static const char service1[] PROGMEM = { "> " SERVICE_NAME_1 "!" };
#endif
@@ -1487,7 +1486,7 @@ void MarlinUI::update() {
host_prompt_open(PROMPT_INFO, PSTR("UI Aborted"), PSTR("Dismiss"));
#endif
print_job_timer.stop();
- set_status_P(PSTR(MSG_PRINT_ABORTED));
+ set_status_P(GET_TEXT(MSG_PRINT_ABORTED));
#if HAS_LCD_MENU
return_to_status();
#endif
@@ -1499,7 +1498,7 @@ void MarlinUI::update() {
void MarlinUI::pause_print() {
#if HAS_LCD_MENU
- synchronize(PSTR(MSG_PAUSE_PRINT));
+ synchronize(GET_TEXT(MSG_PAUSE_PRINT));
#endif
#if ENABLED(POWER_LOSS_RECOVERY)
@@ -1510,7 +1509,7 @@ void MarlinUI::update() {
host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume"));
#endif
- set_status_P(print_paused); // MSG_PRINT_PAUSED
+ set_status_P(print_paused);
#if ENABLED(PARK_HEAD_ON_PAUSE)
#if HAS_SPI_LCD
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 72f6ec2cb9..0e27e7eb19 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -380,7 +380,7 @@ public:
#endif
static bool get_blink();
- static void kill_screen(PGM_P const lcd_msg);
+ static void kill_screen(PGM_P const lcd_error, PGM_P const lcd_component);
static void draw_kill_screen();
static void set_status(const char* const message, const bool persist=false);
static void set_status_P(PGM_P const message, const int8_t level=0);
@@ -598,5 +598,8 @@ private:
extern MarlinUI ui;
-#define LCD_MESSAGEPGM(x) ui.set_status_P(PSTR(x))
-#define LCD_ALERTMESSAGEPGM(x) ui.set_alert_status_P(PSTR(x))
+#define LCD_MESSAGEPGM_P(x) ui.set_status_P(x)
+#define LCD_ALERTMESSAGEPGM_P(x) ui.set_alert_status_P(x)
+
+#define LCD_MESSAGEPGM(x) LCD_MESSAGEPGM_P(GET_TEXT(x))
+#define LCD_ALERTMESSAGEPGM(x) LCD_ALERTMESSAGEPGM_P(GET_TEXT(x))
diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp
index 6970a051b3..0cb7c603d4 100644
--- a/Marlin/src/module/endstops.cpp
+++ b/Marlin/src/module/endstops.cpp
@@ -302,7 +302,7 @@ void Endstops::not_homing() {
// If the last move failed to trigger an endstop, call kill
void Endstops::validate_homing_move() {
if (trigger_state()) hit_on_purpose();
- else kill(PSTR(MSG_ERR_HOMING_FAILED));
+ else kill(GET_TEXT(MSG_LCD_HOMING_FAILED));
}
#endif
@@ -373,7 +373,7 @@ void Endstops::event_handler() {
SERIAL_EOL();
#if HAS_SPI_LCD
- ui.status_printf_P(0, PSTR(S_FMT " %c %c %c %c"), PSTR(MSG_LCD_ENDSTOPS), chrX, chrY, chrZ, chrP);
+ ui.status_printf_P(0, PSTR(S_FMT " %c %c %c %c"), GET_TEXT(MSG_LCD_ENDSTOPS), chrX, chrY, chrZ, chrP);
#endif
#if BOTH(SD_ABORT_ON_ENDSTOP_HIT, SDSUPPORT)
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index fa80565eb4..8182f23ae0 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -1053,8 +1053,8 @@ uint8_t axes_need_homing(uint8_t axis_bits/*=0x07*/) {
bool axis_unhomed_error(uint8_t axis_bits/*=0x07*/) {
if ((axis_bits = axes_need_homing(axis_bits))) {
- static const char home_first[] PROGMEM = MSG_HOME_FIRST;
- char msg[sizeof(home_first)];
+ PGM_P home_first = GET_TEXT(MSG_HOME_FIRST);
+ char msg[strlen_P(home_first)+1];
sprintf_P(msg, home_first,
TEST(axis_bits, X_AXIS) ? "X" : "",
TEST(axis_bits, Y_AXIS) ? "Y" : "",
diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp
index 0217a2fd59..f183170a20 100644
--- a/Marlin/src/module/probe.cpp
+++ b/Marlin/src/module/probe.cpp
@@ -281,7 +281,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
BUZZ(100, 659);
BUZZ(100, 698);
- PGM_P const ds_str = deploy ? PSTR(MSG_MANUAL_DEPLOY) : PSTR(MSG_MANUAL_STOW);
+ PGM_P const ds_str = deploy ? GET_TEXT(MSG_MANUAL_DEPLOY) : GET_TEXT(MSG_MANUAL_STOW);
ui.return_to_status(); // To display the new status message
ui.set_status_P(ds_str, 99);
serialprintPGM(ds_str);
@@ -293,7 +293,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
host_prompt_do(PROMPT_USER_CONTINUE, PSTR("Stow Probe"), PSTR("Continue"));
#endif
#if ENABLED(EXTENSIBLE_UI)
- ExtUI::onUserConfirmRequired(PSTR("Stow Probe"));
+ ExtUI::onUserConfirmRequired_P(PSTR("Stow Probe"));
#endif
while (wait_for_user) idle();
ui.reset_status();
@@ -406,7 +406,7 @@ bool set_probe_deployed(const bool deploy) {
if (PROBE_STOWED() == deploy) { // Unchanged after deploy/stow action?
if (IsRunning()) {
SERIAL_ERROR_MSG("Z-Probe failed");
- LCD_ALERTMESSAGEPGM("Err: ZPROBE");
+ LCD_ALERTMESSAGEPGM_P(PSTR("Err: ZPROBE"));
}
stop();
return true;
@@ -736,7 +736,7 @@ float probe_at_point(const float &rx, const float &ry, const ProbePtRaise raise_
if (isnan(measured_z)) {
STOW_PROBE();
- LCD_MESSAGEPGM(MSG_ERR_PROBING_FAILED);
+ LCD_MESSAGEPGM(MSG_LCD_PROBING_FAILED);
SERIAL_ERROR_MSG(MSG_ERR_PROBING_FAILED);
}
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index ba4aec0155..e1cd9c5619 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -94,17 +94,17 @@ Temperature thermalManager;
*/
#if HAS_HEATED_BED
- #define _BED_PSTR(M,E) (E) == H_BED ? PSTR(M) :
+ #define _BED_PSTR(h) (h) == H_BED ? GET_TEXT(MSG_BED) :
#else
- #define _BED_PSTR(M,E)
+ #define _BED_PSTR(h)
#endif
#if HAS_HEATED_CHAMBER
- #define _CHAMBER_PSTR(M,E) (E) == H_CHAMBER ? PSTR(M) :
+ #define _CHAMBER_PSTR(h) (h) == H_CHAMBER ? GET_TEXT(MSG_CHAMBER) :
#else
- #define _CHAMBER_PSTR(M,E)
+ #define _CHAMBER_PSTR(h)
#endif
-#define _E_PSTR(M,E,N) ((HOTENDS) > (N) && (E) == (N)) ? PSTR(LCD_STR_E##N " " M) :
-#define TEMP_ERR_PSTR(M,E) _BED_PSTR(M##_BED,E) _CHAMBER_PSTR(M##_CHAMBER,E) _E_PSTR(M,E,1) _E_PSTR(M,E,2) _E_PSTR(M,E,3) _E_PSTR(M,E,4) _E_PSTR(M,E,5) PSTR(LCD_STR_E0 " " M)
+#define _E_PSTR(h,N) ((HOTENDS) > N && (h) == N) ? PSTR(LCD_STR_E##N) :
+#define HEATER_PSTR(h) _BED_PSTR(h) _CHAMBER_PSTR(h) _E_PSTR(h,1) _E_PSTR(h,2) _E_PSTR(h,3) _E_PSTR(h,4) _E_PSTR(h,5) PSTR(LCD_STR_E0)
// public:
@@ -518,10 +518,10 @@ volatile bool Temperature::temp_meas_ready = false;
if (current_temp > watch_temp_target) heated = true; // - Flag if target temperature reached
}
else if (ELAPSED(ms, temp_change_ms)) // Watch timer expired
- _temp_error(heater, PSTR(MSG_T_HEATING_FAILED), TEMP_ERR_PSTR(MSG_HEATING_FAILED_LCD, heater));
+ _temp_error(heater, PSTR(MSG_T_HEATING_FAILED), GET_TEXT(MSG_HEATING_FAILED_LCD));
}
else if (current_temp < target - (MAX_OVERSHOOT_PID_AUTOTUNE)) // Heated, then temperature fell too far?
- _temp_error(heater, PSTR(MSG_T_THERMAL_RUNAWAY), TEMP_ERR_PSTR(MSG_THERMAL_RUNAWAY, heater));
+ _temp_error(heater, PSTR(MSG_T_THERMAL_RUNAWAY), GET_TEXT(MSG_THERMAL_RUNAWAY));
}
#endif
} // every 2 seconds
@@ -621,45 +621,34 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
}
}
+#define _EFANOVERLAP(A,B) _FANOVERLAP(E##A,B)
+
#if HAS_AUTO_FAN
- #define AUTO_1_IS_0 (E1_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_2_IS_0 (E2_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_2_IS_1 (E2_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
- #define AUTO_3_IS_0 (E3_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_3_IS_1 (E3_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
- #define AUTO_3_IS_2 (E3_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
- #define AUTO_4_IS_0 (E4_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
- #define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
- #define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
- #define AUTO_5_IS_0 (E5_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
- #define AUTO_5_IS_1 (E5_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
- #define AUTO_5_IS_2 (E5_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
- #define AUTO_5_IS_3 (E5_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
- #define AUTO_5_IS_4 (E5_AUTO_FAN_PIN == E4_AUTO_FAN_PIN)
#define CHAMBER_FAN_INDEX HOTENDS
void Temperature::checkExtruderAutoFans() {
+ #define _EFAN(A,B) _EFANOVERLAP(A,B) ? B :
static const uint8_t fanBit[] PROGMEM = {
0
#if HOTENDS > 1
- , AUTO_1_IS_0 ? 0 : 1
+ , _EFAN(1,0) 1
#endif
#if HOTENDS > 2
- , AUTO_2_IS_0 ? 0 : AUTO_2_IS_1 ? 1 : 2
+ , _EFAN(2,0) _EFAN(2,1) 2
#endif
#if HOTENDS > 3
- , AUTO_3_IS_0 ? 0 : AUTO_3_IS_1 ? 1 : AUTO_3_IS_2 ? 2 : 3
+ , _EFAN(3,0) _EFAN(3,1) _EFAN(3,2) 3
#endif
#if HOTENDS > 4
- , AUTO_4_IS_0 ? 0 : AUTO_4_IS_1 ? 1 : AUTO_4_IS_2 ? 2 : AUTO_4_IS_3 ? 3 : 4
+ , _EFAN(4,0) _EFAN(4,1) _EFAN(4,2) _EFAN(4,3) 4
#endif
#if HOTENDS > 5
- , AUTO_5_IS_0 ? 0 : AUTO_5_IS_1 ? 1 : AUTO_5_IS_2 ? 2 : AUTO_5_IS_3 ? 3 : AUTO_5_IS_4 ? 4 : 5
+ , _EFAN(5,0) _EFAN(5,1) _EFAN(5,2) _EFAN(5,3) _EFAN(5,4) 5
#endif
#if HAS_AUTO_CHAMBER_FAN
- , AUTO_CHAMBER_IS_0 ? 0 : AUTO_CHAMBER_IS_1 ? 1 : AUTO_CHAMBER_IS_2 ? 2 : AUTO_CHAMBER_IS_3 ? 3 : AUTO_CHAMBER_IS_4 ? 4 : AUTO_CHAMBER_IS_5 ? 5 : 6
+ #define _CFAN(B) _FANOVERLAP(CHAMBER,B) ? B :
+ , _CFAN(0) _CFAN(1) _CFAN(2) _CFAN(3) _CFAN(4) _CFAN(5) 6
#endif
};
uint8_t fanState = 0;
@@ -731,7 +720,7 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
// Temperature Error Handlers
//
-inline void loud_kill(PGM_P const lcd_msg) {
+inline void loud_kill(PGM_P const lcd_msg, const heater_ind_t heater) {
Running = false;
#if USE_BEEPER
for (uint8_t i = 20; i--;) {
@@ -740,7 +729,7 @@ inline void loud_kill(PGM_P const lcd_msg) {
}
WRITE(BEEPER_PIN, HIGH);
#endif
- kill(lcd_msg);
+ kill(lcd_msg, HEATER_PSTR(heater));
}
void Temperature::_temp_error(const heater_ind_t heater, PGM_P const serial_msg, PGM_P const lcd_msg) {
@@ -777,23 +766,23 @@ void Temperature::_temp_error(const heater_ind_t heater, PGM_P const serial_msg,
if (ELAPSED(ms, expire_ms)) ++killed;
break;
case 2:
- loud_kill(lcd_msg);
+ loud_kill(lcd_msg1, heater);
++killed;
break;
}
#elif defined(BOGUS_TEMPERATURE_GRACE_PERIOD)
UNUSED(killed);
#else
- if (!killed) { killed = 1; loud_kill(lcd_msg); }
+ if (!killed) { killed = 1; loud_kill(lcd_msg, heater); }
#endif
}
void Temperature::max_temp_error(const heater_ind_t heater) {
- _temp_error(heater, PSTR(MSG_T_MAXTEMP), TEMP_ERR_PSTR(MSG_ERR_MAXTEMP, heater));
+ _temp_error(heater, PSTR(MSG_T_MAXTEMP), GET_TEXT(MSG_ERR_MAXTEMP));
}
void Temperature::min_temp_error(const heater_ind_t heater) {
- _temp_error(heater, PSTR(MSG_T_MINTEMP), TEMP_ERR_PSTR(MSG_ERR_MINTEMP, heater));
+ _temp_error(heater, PSTR(MSG_T_MINTEMP), GET_TEXT(MSG_ERR_MINTEMP));
}
#if HOTENDS
@@ -1019,7 +1008,7 @@ void Temperature::manage_heater() {
HOTEND_LOOP() {
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
if (degHotend(e) > temp_range[e].maxtemp)
- _temp_error((heater_ind_t)e, PSTR(MSG_T_THERMAL_RUNAWAY), TEMP_ERR_PSTR(MSG_THERMAL_RUNAWAY, e));
+ _temp_error((heater_ind_t)e, PSTR(MSG_T_THERMAL_RUNAWAY), GET_TEXT(MSG_THERMAL_RUNAWAY));
#endif
#if HEATER_IDLE_HANDLER
@@ -1037,7 +1026,7 @@ void Temperature::manage_heater() {
// Make sure temperature is increasing
if (watch_hotend[e].next_ms && ELAPSED(ms, watch_hotend[e].next_ms)) { // Time to check this extruder?
if (degHotend(e) < watch_hotend[e].target) // Failed to increase enough?
- _temp_error((heater_ind_t)e, PSTR(MSG_T_HEATING_FAILED), TEMP_ERR_PSTR(MSG_HEATING_FAILED_LCD, e));
+ _temp_error((heater_ind_t)e, PSTR(MSG_T_HEATING_FAILED), GET_TEXT(MSG_HEATING_FAILED_LCD));
else // Start again if the target is still far off
start_watching_hotend(e);
}
@@ -1046,7 +1035,7 @@ void Temperature::manage_heater() {
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
// Make sure measured temperatures are close together
if (ABS(temp_hotend[0].celsius - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF)
- _temp_error(H_E0, PSTR(MSG_REDUNDANCY), PSTR(MSG_ERR_REDUNDANT_TEMP));
+ _temp_error(H_E0, PSTR(MSG_REDUNDANCY), GET_TEXT(MSG_ERR_REDUNDANT_TEMP));
#endif
} // HOTEND_LOOP
@@ -1072,14 +1061,14 @@ void Temperature::manage_heater() {
#if ENABLED(THERMAL_PROTECTION_BED)
if (degBed() > BED_MAXTEMP)
- _temp_error(H_BED, PSTR(MSG_T_THERMAL_RUNAWAY), TEMP_ERR_PSTR(MSG_THERMAL_RUNAWAY, H_BED));
+ _temp_error(H_BED, PSTR(MSG_T_THERMAL_RUNAWAY), GET_TEXT(MSG_THERMAL_RUNAWAY));
#endif
#if WATCH_BED
// Make sure temperature is increasing
if (watch_bed.elapsed(ms)) { // Time to check the bed?
if (degBed() < watch_bed.target) // Failed to increase enough?
- _temp_error(H_BED, PSTR(MSG_T_HEATING_FAILED), TEMP_ERR_PSTR(MSG_HEATING_FAILED_LCD, H_BED));
+ _temp_error(H_BED, PSTR(MSG_T_HEATING_FAILED), GET_TEXT(MSG_HEATING_FAILED_LCD));
else // Start again if the target is still far off
start_watching_bed();
}
@@ -1150,14 +1139,14 @@ void Temperature::manage_heater() {
#if ENABLED(THERMAL_PROTECTION_CHAMBER)
if (degChamber() > CHAMBER_MAXTEMP)
- _temp_error(H_CHAMBER, PSTR(MSG_T_THERMAL_RUNAWAY), TEMP_ERR_PSTR(MSG_THERMAL_RUNAWAY, H_CHAMBER));
+ _temp_error(H_CHAMBER, PSTR(MSG_T_THERMAL_RUNAWAY), GET_TEXT(MSG_THERMAL_RUNAWAY));
#endif
#if WATCH_CHAMBER
// Make sure temperature is increasing
if (watch_chamber.elapsed(ms)) { // Time to check the chamber?
if (degChamber() < watch_chamber.target) // Failed to increase enough?
- _temp_error(H_CHAMBER, PSTR(MSG_T_HEATING_FAILED), TEMP_ERR_PSTR(MSG_HEATING_FAILED_LCD, H_CHAMBER));
+ _temp_error(H_CHAMBER, PSTR(MSG_T_HEATING_FAILED), GET_TEXT(MSG_HEATING_FAILED_LCD));
else
start_watching_chamber(); // Start again if the target is still far off
}
@@ -1685,19 +1674,19 @@ void Temperature::init() {
#if HAS_AUTO_FAN_0
INIT_E_AUTO_FAN_PIN(E0_AUTO_FAN_PIN);
#endif
- #if HAS_AUTO_FAN_1 && !AUTO_1_IS_0
+ #if HAS_AUTO_FAN_1 && !_EFANOVERLAP(1,0)
INIT_E_AUTO_FAN_PIN(E1_AUTO_FAN_PIN);
#endif
- #if HAS_AUTO_FAN_2 && !(AUTO_2_IS_0 || AUTO_2_IS_1)
+ #if HAS_AUTO_FAN_2 && !(_EFANOVERLAP(2,0) || _EFANOVERLAP(2,1))
INIT_E_AUTO_FAN_PIN(E2_AUTO_FAN_PIN);
#endif
- #if HAS_AUTO_FAN_3 && !(AUTO_3_IS_0 || AUTO_3_IS_1 || AUTO_3_IS_2)
+ #if HAS_AUTO_FAN_3 && !(_EFANOVERLAP(3,0) || _EFANOVERLAP(3,1) || _EFANOVERLAP(3,2))
INIT_E_AUTO_FAN_PIN(E3_AUTO_FAN_PIN);
#endif
- #if HAS_AUTO_FAN_4 && !(AUTO_4_IS_0 || AUTO_4_IS_1 || AUTO_4_IS_2 || AUTO_4_IS_3)
+ #if HAS_AUTO_FAN_4 && !(_EFANOVERLAP(4,0) || _EFANOVERLAP(4,1) || _EFANOVERLAP(4,2) || _EFANOVERLAP(4,3))
INIT_E_AUTO_FAN_PIN(E4_AUTO_FAN_PIN);
#endif
- #if HAS_AUTO_FAN_5 && !(AUTO_5_IS_0 || AUTO_5_IS_1 || AUTO_5_IS_2 || AUTO_5_IS_3 || AUTO_5_IS_4)
+ #if HAS_AUTO_FAN_5 && !(_EFANOVERLAP(5,0) || _EFANOVERLAP(5,1) || _EFANOVERLAP(5,2) || _EFANOVERLAP(5,3) || _EFANOVERLAP(5,4))
INIT_E_AUTO_FAN_PIN(E5_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E
@@ -1928,7 +1917,7 @@ void Temperature::init() {
sm.state = TRRunaway;
case TRRunaway:
- _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), TEMP_ERR_PSTR(MSG_THERMAL_RUNAWAY, heater_id));
+ _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), GET_TEXT(MSG_THERMAL_RUNAWAY));
}
}
@@ -2923,7 +2912,7 @@ void Temperature::isr() {
#else
PSTR("E " S_FMT)
#endif
- , heating ? PSTR(MSG_HEATING) : PSTR(MSG_COOLING)
+ , heating ? GET_TEXT(MSG_HEATING) : GET_TEXT(MSG_COOLING)
);
}
#endif
diff --git a/buildroot/share/tests/DUE-tests b/buildroot/share/tests/DUE-tests
index 844c1054af..d68026f0f6 100755
--- a/buildroot/share/tests/DUE-tests
+++ b/buildroot/share/tests/DUE-tests
@@ -9,6 +9,7 @@ set -e
backup_ramps # pins_set is used below...
restore_configs
+opt_set LCD_LANGUAGE bg
opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB
opt_set TEMP_SENSOR_0 -2
opt_set TEMP_SENSOR_BED 2
@@ -38,7 +39,7 @@ exec_test $1 $2 "RAMPS4DUE_EFB with ABL (Bilinear), EXTENSIBLE_UI, S-Curve, many
restore_configs
opt_set MOTHERBOARD BOARD_RADDS
opt_enable USE_XMAX_PLUG USE_YMAX_PLUG BLTOUCH AUTO_BED_LEVELING_BILINEAR \
- Z_TRIPLE_STEPPER_DRIVERS Z_TRIPLE_ENDSTOPS Z_STEPPER_AUTO_ALIGN ENDSTOPPULLUPS \
+ Z_TRIPLE_STEPPER_DRIVERS Z_TRIPLE_ENDSTOPS Z_STEPPER_AUTO_ALIGN ENDSTOPPULLUPS
LULZBOT_TOUCH_UI LCD_ALEPHOBJECTS_CLCD_UI OTHER_PIN_LAYOUT
opt_add Z2_MAX_ENDSTOP_INVERTING false
opt_add Z3_MAX_ENDSTOP_INVERTING false
@@ -52,6 +53,7 @@ exec_test $1 $2 "RADDS with Lulzbot Touch UI, Bilinear ABL, Triple-Z and Z Auto-
# Test SWITCHING_EXTRUDER
#
restore_configs
+opt_set LCD_LANGUAGE fi
opt_set MOTHERBOARD BOARD_RAMPS4DUE_EEF
opt_set EXTRUDERS 2
opt_set NUM_SERVOS 1
diff --git a/buildroot/share/tests/megaatmega1280-tests b/buildroot/share/tests/megaatmega1280-tests
index c4ab0f4a71..05e262f6e7 100644
--- a/buildroot/share/tests/megaatmega1280-tests
+++ b/buildroot/share/tests/megaatmega1280-tests
@@ -16,6 +16,7 @@ set -e
# Test MESH_BED_LEVELING feature, with LCD
#
restore_configs
+opt_set LCD_LANGUAGE an
opt_enable SPINDLE_FEATURE ULTIMAKERCONTROLLER LCD_BED_LEVELING \
MESH_BED_LEVELING ENABLE_LEVELING_FADE_HEIGHT MESH_G28_REST_ORIGIN \
G26_MESH_VALIDATION MESH_EDIT_MENU
diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests
index 80a00d79e3..33bc47ca3f 100755
--- a/buildroot/share/tests/megaatmega2560-tests
+++ b/buildroot/share/tests/megaatmega2560-tests
@@ -51,6 +51,7 @@ exec_test $1 $2 "RAMPS, 2 extruders, LCD/SD, Probe, ABL-Linear, PLR, LEDs, many
use_example_configs AnimationExample
opt_set SHOW_CUSTOM_BOOTSCREEN
opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE fr
opt_set EXTRUDERS 5
opt_set TEMP_SENSOR_1 1
opt_set TEMP_SENSOR_2 5
@@ -79,10 +80,11 @@ exec_test $1 $2 "... Sled Z Probe, Skew, UBL Cartesian moves, Japanese, and Z pr
# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
#
restore_configs
-opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
- AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL
+opt_set LCD_LANGUAGE zh_CN
opt_set NUM_SERVOS 1
-opt_enable NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK
+opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
+ AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
+ NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK
exec_test $1 $2 "RAMPS with ZONESTAR_LCD, Servo Probe, 3-Point ABL, DEBUG_LEVELING_FEATURE, EEPROM, G38, and more"
#
@@ -90,6 +92,7 @@ exec_test $1 $2 "RAMPS with ZONESTAR_LCD, Servo Probe, 3-Point ABL, DEBUG_LEVELI
#
restore_configs
opt_set MOTHERBOARD BOARD_MINIRAMBO
+opt_set LCD_LANGUAGE de
opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT \
ULTIMAKERCONTROLLER SDSUPPORT PCA9632 LCD_INFO_MENU \
AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY LCD_BED_LEVELING G26_MESH_VALIDATION MESH_EDIT_MENU \
@@ -107,6 +110,7 @@ exec_test $1 $2 "MINIRAMBO with M100, PWM_MOTOR_CURRENT, PRINTCOUNTER, etc."
#
restore_configs
opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE el_gr
opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY
opt_set MIXING_STEPPERS 5
opt_set LCD_LANGUAGE ru
@@ -117,6 +121,7 @@ exec_test $1 $2 "Mixing Extruder with 5 steppers, Cyrillic"
#
restore_configs
opt_set MOTHERBOARD BOARD_RUMBA
+opt_set LCD_LANGUAGE pt
opt_set EXTRUDERS 2
opt_set TEMP_SENSOR_1 1
opt_enable USE_XMAX_PLUG DUAL_X_CARRIAGE
@@ -143,6 +148,7 @@ exec_test $1 $2 "DUAL_X_CARRIAGE"
#
restore_configs
opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
+opt_set LCD_LANGUAGE it
opt_set EXTRUDERS 2
opt_set TEMP_SENSOR_1 -4
opt_set SERVO_DELAY "{ 300, 300, 300 }"
@@ -268,6 +274,7 @@ exec_test $1 $2 "Full-featured CR-10S config"
#
# Delta Config (generic) + ABL bilinear + BLTOUCH
use_example_configs delta/generic
+opt_set LCD_LANGUAGE cz
opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH BLTOUCH_FORCE_5V_MODE
exec_test $1 $2 "Delta Config (generic) + ABL bilinear + BLTOUCH"
@@ -275,6 +282,7 @@ exec_test $1 $2 "Delta Config (generic) + ABL bilinear + BLTOUCH"
# Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
#
use_example_configs delta/generic
+opt_set LCD_LANGUAGE ko_KR
opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 Z_PROBE_ALLEN_KEY EEPROM_SETTINGS EEPROM_CHITCHAT \
OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY
exec_test $1 $2 "Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS"
@@ -295,6 +303,7 @@ exec_test $1 $2 "Delta Config (FLSUN AC because it's complex)"
# SCARA with TMC2130
#
use_example_configs SCARA
+opt_set LCD_LANGUAGE es
opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER M114_DETAIL \
MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
@@ -309,6 +318,7 @@ exec_test $1 $2 "SCARA with TMC2130, TMC2209, and TMC2660"
# Test mixed TMC config
#
restore_configs
+opt_set LCD_LANGUAGE vi
opt_set X_DRIVER_TYPE TMC2160
opt_set Y_DRIVER_TYPE TMC5160
opt_set Z_DRIVER_TYPE TMC2208