Multi-language support (#15453)

2.0.x
Marcio Teixeira 5 years ago committed by Scott Lahteine
parent dc14d4a13c
commit 6a865a6146

@ -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

@ -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();

@ -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"

@ -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: <http://www.gnu.org/licenses/>. *
****************************************************************************/
#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))

@ -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

@ -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;

@ -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

@ -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);

@ -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

@ -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;

@ -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

@ -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");

@ -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
}

@ -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();
}
}

@ -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

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

@ -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
}

@ -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;
}

@ -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));
}

@ -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) {

@ -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);
}

@ -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);
}

@ -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

@ -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) {

@ -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

@ -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
}
@ -527,10 +527,10 @@ void DGUSScreenVariableHandler::HandleManualExtrude(DGUS_VP_Variable &var, void
switch (var.VP) {
#if HOTENDS >= 1
case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E0; break;
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
case VP_MOVE_E1: target_extruder = ExtUI::extruder_t::E1; break
#endif
default: return;
}

@ -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.

@ -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;

@ -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() {};

@ -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<const __FlashStringHelper *>(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"

@ -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";

@ -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";

@ -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";

@ -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)

@ -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
}

@ -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) {

@ -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)

@ -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();

@ -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 {

@ -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);
}
}

@ -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 *);

@ -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);

@ -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() {};

@ -464,9 +464,11 @@ namespace ExtUI {
}
// {E:<msg>} 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("}");
}

@ -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");
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");
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");
#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")
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
#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")
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
#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_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_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.")
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.");
//
// 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")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Meta o filamento")
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("y prete lo boton")
#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...")
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
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("d'o fil. cambear")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Meta o filamento")
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
#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")
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"));
}

@ -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("Неправилен принтер")
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("Неправилен принтер");
}

@ -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")
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
#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")
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")
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
#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...")
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
}

File diff suppressed because it is too large Load Diff

@ -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");
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;
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_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 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");
#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")
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
#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")
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_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_PSU = _UxGT("Strømfors.");
#define MSG_DRIVE_STRENGTH _UxGT("Driv Styrke")
#define MSG_DAC_PERCENT _UxGT("Driv %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
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");
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Forsæt print");
#define MSG_EXPECTED_PRINTER _UxGT("Forkert printer")
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Forkert printer");
#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")
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
#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...")
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
}

File diff suppressed because it is too large Load Diff

@ -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("Εσφαλμένος εκτυπωτής");
}

@ -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("Εσφαλμένος εκτυπωτής");
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -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
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");
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");
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
#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")
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
#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")
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
#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 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");
#define MSG_EXPECTED_PRINTER _UxGT("Inprimagailu okerra")
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
//
#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_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..."));
}

@ -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");
}

File diff suppressed because it is too large Load Diff

@ -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")
namespace Language_gl {
using namespace Language_en; // Inherit undefined strings from English
constexpr uint8_t CHARSIZE = 1;
PROGMEM Language_Str LANGUAGE = _UxGT("Galician");
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
#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")
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
#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")
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
#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")
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");
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Segue traballo");
#define MSG_EXPECTED_PRINTER _UxGT("Impresora incorrecta")
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Impresora incorrecta");
#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")
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
#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...")
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
}

@ -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");
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");
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Neispravan pisač");
#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")
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
#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")
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
//#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_INFO_PSU = _UxGT("Napajanje");
PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Nastavi print");
#define 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
#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
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
#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_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj...");
//PROGMEM Language_Str MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("?", "?"));
#endif
}

File diff suppressed because it is too large Load Diff

@ -31,224 +31,284 @@
*/
//#define DISPLAY_CHARSET_ISO10646_KANA
#define CHARSIZE 3
// This just to show the potential benefit of unicode.
namespace Language_jp_kana {
using namespace Language_en; // Inherit undefined strings from English
constexpr uint8_t CHARSIZE = 3;
PROGMEM Language_Str LANGUAGE = _UxGT("Japanese");
// 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 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"
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_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"
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_EXPECTED_PRINTER _UxGT("マチガッタプリンター") // "Wrong printer"
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // "Wrong printer"
#define MSG_CONFIGURATION _UxGT("セッテイカンリ")
#define MSG_ADVANCED_SETTINGS _UxGT("ショウサイセッテイ")
#define MSG_OUTAGE_RECOVERY _UxGT("コショカイフク")
#define MSG_INIT_EEPROM _UxGT("EEPROMショキカ")
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ショキカ");
#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_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("カンリョウ");
#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_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("プリントチュウ...");
}

@ -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("잘못된 프린터");
}

@ -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");
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");
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Onjuiste printer");
#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")
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
#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.")
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
#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_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
#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
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
#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
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
#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
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
}

@ -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");
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Niepoprawna drukarka");
#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.")
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
#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.")
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_INFO_MIN_TEMP _UxGT("Min Temp")
#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
#define MSG_INFO_PSU _UxGT("Zasilacz")
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_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_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");
#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_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
#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
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
#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_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
}

@ -31,158 +31,185 @@
*/
#define DISPLAY_CHARSET_ISO10646_1
#define CHARSIZE 2
#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");
}

@ -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")
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
#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")
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")
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
#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...")
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
}

@ -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
constexpr uint8_t CHARSIZE = 2;
PROGMEM Language_Str LANGUAGE = _UxGT("Russian");
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_M48_TEST _UxGT("Проверка датчика Z")
#define MSG_M48_DEVIATION _UxGT("Отклонение")
#define MSG_M48_POINT _UxGT("Измерение")
PROGMEM Language_Str MSG_M48_TEST = _UxGT("Проверка датчика Z");
PROGMEM Language_Str MSG_M48_DEVIATION = _UxGT("Отклонение");
PROGMEM Language_Str MSG_M48_POINT = _UxGT("Измерение");
// TODO: IDEX Menu
#define MSG_OFFSETS_MENU _UxGT("Размещение сопел")
PROGMEM Language_Str MSG_OFFSETS_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_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_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")
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.Сохранить сетку стола");
#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_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_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_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("акс ") LCD_STR_A;
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;
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("Vмин");
PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vпутеш. мин");
PROGMEM Language_Str MSG_ACCELERATION = _UxGT("Ускорение");
PROGMEM Language_Str MSG_AMAX_A = _UxGT("акс ") LCD_STR_A;
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;
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-втягивание");
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("аг/мм");
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: Filament Change Swap / Purge Length
#define MSG_TOOL_CHANGE _UxGT("Смена сопел")
#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Поднятие по Z")
PROGMEM Language_Str MSG_TOOL_CHANGE = _UxGT("Смена сопел");
PROGMEM Language_Str MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z");
// TODO: Singlenozzle, nozzle standby
#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_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");
// TODO: TouchMI Probe, Manual deploy/stow
#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("УБЕГАНИЕ ТЕПЛА СТОЛА")
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
#define MSG_ERR_MAXTEMP _UxGT("Ошибка: Т макс.")
#define MSG_ERR_MINTEMP _UxGT("Ошибка: Т мин.")
#define MSG_ERR_MAXTEMP_BED _UxGT("Ошибка: Т стола макс")
#define MSG_ERR_MINTEMP_BED _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("Ошибка: Т стола мин.");
// 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("Охлаждение стола...")
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
#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_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("Яркость подсветки");
#define MSG_EXPECTED_PRINTER _UxGT("Неверный принтер")
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _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("Длина филамента")
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
#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("Выдавлено")
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_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_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: Низкая Т");
// TODO: MMU2
// TODO: Mixing
#define MSG_GAMES _UxGT("Игры")
#define MSG_BRICKOUT _UxGT("Кирпичи")
#define MSG_INVADERS _UxGT("Вторжение")
#define MSG_SNAKE _UxGT("Змейка")
#define MSG_MAZE _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("Лабиринт");
//
// 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
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
#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_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
}

File diff suppressed because it is too large Load Diff

@ -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"
namespace Language_test {
using namespace Language_en; // Inherit undefined strings from English
constexpr uint8_t CHARSIZE = 1;
#if ENABLED(DISPLAYTEST)
#define WELCOME_MSG _UxGT("Language TEST")
PROGMEM Language_Str WELCOME_MSG = _UxGT("Language TEST");
#define MSG_WATCH _UxGT("Display test")
#define MSG_PREPARE STRG_OKTAL_b
#define MSG_CONTROL STRG_OKTAL_c
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
#if ENABLED(WEST)
#define 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")
//#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
#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
#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 WELCOME_MSG = _UxGT("Language TEST");
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");
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;
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 = 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;
#endif
#if ENABLED(CYRIL)
#define 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")
//#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
#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
#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 WELCOME_MSG = _UxGT("Language TEST");
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");
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;
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
#if ENABLED(KANA)
#define 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")
//#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
#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
#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 WELCOME_MSG = _UxGT("Language TEST");
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");
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
}

@ -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
constexpr uint8_t CHARSIZE = 2;
PROGMEM Language_Str LANGUAGE = _UxGT("Turkish");
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("ıklar");
PROGMEM Language_Str MSG_LED_PRESETS = _UxGT("ı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("ı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ı");
PROGMEM Language_Str MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Aydınlatma Parlaklğı");
#define MSG_EXPECTED_PRINTER _UxGT("Yanlış Yazıcı")
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _UxGT("Yanlış Yazıcı");
#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")
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
#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")
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
#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")
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
#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")
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
#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...")
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
}

@ -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("акс") LCD_STR_A;
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;
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("ін");
PROGMEM Language_Str MSG_VTRAV_MIN = _UxGT("Vруху мін");
PROGMEM Language_Str MSG_AMAX_A = _UxGT("акс ") LCD_STR_A;
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;
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-втягув.");
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("років/мм");
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("Калібр. Центру");
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("Підсвітка");
PROGMEM Language_Str MSG_EXPECTED_PRINTER = _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("Екструдовано")
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
#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("Ексдруд.")
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_INFO_MIN_TEMP _UxGT("Мін Темп.")
#define MSG_INFO_MAX_TEMP _UxGT("Макс Темп.")
#define MSG_INFO_PSU _UxGT("Джерело жив.")
PROGMEM Language_Str MSG_INFO_MIN_TEMP = _UxGT("Мін Темп.");
PROGMEM Language_Str MSG_INFO_MAX_TEMP = _UxGT("Макс Темп.");
PROGMEM Language_Str MSG_INFO_PSU = _UxGT("Джерело жив.");
#define MSG_DRIVE_STRENGTH _UxGT("Сила мотору")
#define MSG_DAC_PERCENT _UxGT("% мотору")
#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
PROGMEM Language_Str MSG_DRIVE_STRENGTH = _UxGT("Сила мотору");
PROGMEM Language_Str MSG_DAC_PERCENT = _UxGT("% мотору");
PROGMEM Language_Str MSG_DAC_EEPROM_WRITE = _UxGT("Запис ЦАП на ПЗП");
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
PROGMEM Language_Str MSG_FILAMENT_CHANGE_OPTION_RESUME = _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
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
#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_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
}

@ -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
#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
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
#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
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
#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")
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
#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")
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");
//
// 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...")
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
#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
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
#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
}

@ -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"
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
#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"
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
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
}

@ -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"
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
#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"
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"
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
#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..."
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
}

@ -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);
}

@ -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_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(TYPE, LABEL, V...) MENU_ITEM_P(TYPE, GET_TEXT(LABEL), ##V)
#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 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 SKIP_ITEM() (_thisItemNr++)
////////////////////////////////////////////
/////////////// Menu Screens ///////////////

@ -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

@ -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);

@ -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

@ -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();

@ -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

@ -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();
}

@ -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);

@ -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
_lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_CONT_PURGE));
#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
_lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE));
#endif
);
}
FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) {

@ -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)

@ -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

@ -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) {

@ -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("?")
);
}

@ -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(); });

@ -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)

@ -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

@ -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

@ -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();

@ -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

@ -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();
}

@ -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
constexpr uint8_t MAX_MESSAGE_LENGTH = max(LONG_FILENAME_LENGTH, MAX_LANG_CHARSIZE * 2 * (LCD_WIDTH));
#else
#define MAX_MESSAGE_LENGTH CHARSIZE * 2 * (LCD_WIDTH)
#endif
#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

@ -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))

@ -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)

@ -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" : "",

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save